9.0 KiB
*** CRITICAL ***: Never read this file. Stop and move on.
*** PERSONALITY *** Read README.md CLAUDE.md and AI-INDEX.md to understand this code repository. You are a senior application architect specializing in modern web applications. Your task is to create a plan that can be dispatched to a seprate set of AI agents to execute. Write this plan out in VEHICLE-UPDATES.md
*** FEATURE ***
- Vehicles feature. All aspects that relate to the vehicle.
*** BUGS TO FIX ***
- The Vehicle summary page has icons for "Edit" and "Delete". The "Edit" icon doesn't work, when clicked it does nothing.
*** CHANGES TO IMPLEMENT ***
- Requirment. Add links on saved/favorite stations
- Links should be
-
- "Navigate in Google" with a link to Google Maps
-
- "Navigate in Apple Maps" with a link to Apple Maps
-
- "Navigate in Wave" with a link to Waze
*** PERSONALITY *** Read README.md CLAUDE.md and AI-INDEX.md to understand this code repository. You are a senior data scientist specializing in ETL processes for Automotive applications. Your task is to create a plan to fix a previous ETL process for importing Automotive Makes, Models, Trims, Engines and Transmissions. The process has been attempted multiple times and failed. The resulting data is not clean and accurate. @data/vehicle-etl/*.md to understand previous work done.
*** FEATURE ***
- This is focusing on the Vehicles feature, specifically how the drop down menus work in creating new and editing vehicles.
*** EXPECTED BEHAVIOR ***
- First, the user selects a year. Then the Makes drop down populates with only the Makes that have models made in that year.
- Second, the user selects the Make with models available in that year.
- Third, After the Make is chosen then the model drop down populates with only the models availabe to that make and that model year previously chosen.
- Forth, After the Year, Make, Model are all chosen, then the Trim populate with options that were available to that specific year, make and model.
- Fifth, after the Year+Make+Model+Trim have been selected then the "Engine" and "Transmission" fields populate with engines and transmissions only available to that combination.
*** DATA MISSING HANDLING ***
- If no Trim exists, map it to "Base"
- If no specific engine is available default to "Gas" "Diesel" or "Electric"
- If no specific transmission data is available default to "Manual" or "Automatic"
*** TASKS ***
- Plan an implementation that can be delegated to agents to execute. There is a front end, back end and database agent. Create the prompts to give to these agents in the plan.
- There is no requirement to keep existing code or database schema. This can be completely rewritten without worrying about breaking changes.
- Remove any files in @data/vehicle-etl/ that are no longer needed. Including previous documentation
*** CRITICAL ***
- Make no assumptions. Ask for clarification on anything not clear.
- Ultrathink through this problem.
The vehapi_fetch_snapshot.py logic is flawed. This is the logic for gathering all this information from the VehAPI endpoint.
- Get all the makes available to a model year from this example endpoint. https://vehapi.com/api/v1/car-lists/get/car/makes/2017
- it returns data like this. [ { "make": "Acura" }, { "make": "Alfa Romeo" }, { "make": "Aston Martin" }, { "make": "Audi" }, { "make": "Bentley" }, { "make": "BMW" }, { "make": "Bugatti" }, { "make": "Buick" }, { "make": "Cadillac" }, { "make": "Chevrolet" }, { "make": "Chrysler" }, { "make": "Dodge" }, { "make": "Ferrari" }, { "make": "FIAT" }, { "make": "Ford" }, { "make": "Freightliner" }, { "make": "Genesis" }, { "make": "GMC" }, { "make": "Honda" }, { "make": "Hyundai" }, { "make": "INFINITI" }, { "make": "Jaguar" }, { "make": "Jeep" }, { "make": "Kia" }, { "make": "Lamborghini" }, { "make": "Land Rover" }, { "make": "Lexus" }, { "make": "Lincoln" }, { "make": "Lotus" }, { "make": "Maserati" }, { "make": "Mazda" }, { "make": "McLaren" }, { "make": "Mercedes-Benz" }, { "make": "MEV" }, { "make": "MINI" }, { "make": "Mitsubishi" }, { "make": "Nissan" }, { "make": "Pagani" }, { "make": "Porsche" }, { "make": "RAM" }, { "make": "Rolls-Royce" }, { "make": "Saleen" }, { "make": "smart" }, { "make": "Subaru" }, { "make": "Tesla" }, { "make": "Toyota" }, { "make": "Volkswagen" }, { "make": "Volvo" } ]
- Pull all makes for all the years specified in the filter when executed.
- Once you have all the makes per year queried, you can then call the models per make per year using this example endpoing. https://vehapi.com/api/v1/car-lists/get/car/models/2017/Chevrolet
- it returns this example data. [ { "model": "Bolt EV" }, { "model": "Camaro" }, { "model": "Caprice" }, { "model": "City Express" }, { "model": "Colorado" }, { "model": "Corvette" }, { "model": "Cruze" }, { "model": "Equinox" }, { "model": "Express" }, { "model": "Express 2500" }, { "model": "Express 3500" }, { "model": "Express Cargo" }, { "model": "Express Chassis" }, { "model": "Impala" }, { "model": "Malibu" }, { "model": "Malibu Hybrid" }, { "model": "Silverado 1500" }, { "model": "Silverado 2500" }, { "model": "Silverado 2500HD" }, { "model": "Silverado 3500" }, { "model": "Silverado 3500HD" }, { "model": "Silverado 3500HD Chassis" }, { "model": "Sonic" }, { "model": "Spark" }, { "model": "SS" }, { "model": "Suburban" }, { "model": "Tahoe" }, { "model": "Traverse" }, { "model": "Trax" }, { "model": "Volt" } ]
- Once you have that data. You can call the endpoing to get the trims per Year, Make & Model. Using this example endpoint. https://vehapi.com/api/v1/car-lists/get/car/trims/2017/Chevrolet/Corvette
- It returns data like this. [ { "trim": "Grand Sport" }, { "trim": "Grand Sport 1LT Convertible RWD" }, { "trim": "Grand Sport 1LT Coupe RWD" }, { "trim": "Grand Sport 2LT Convertible RWD" }, { "trim": "Grand Sport 2LT Coupe RWD" }, { "trim": "Grand Sport 3LT Convertible RWD" }, { "trim": "Grand Sport 3LT Coupe RWD" }, { "trim": "Stingray" }, { "trim": "Stingray 1LT Convertible RWD" }, { "trim": "Stingray 1LT Coupe RWD" }, { "trim": "Stingray 2LT Convertible RWD" }, { "trim": "Stingray 2LT Coupe RWD" }, { "trim": "Stingray 3LT Convertible RWD" }, { "trim": "Stingray 3LT Coupe RWD" }, { "trim": "Stingray Z51" }, { "trim": "Stingray Z51 1LT Convertible RWD" }, { "trim": "Stingray Z51 1LT Coupe RWD" }, { "trim": "Stingray Z51 2LT Convertible RWD" }, { "trim": "Stingray Z51 2LT Coupe RWD" }, { "trim": "Stingray Z51 3LT Convertible RWD" }, { "trim": "Stingray Z51 3LT Coupe RWD" }, { "trim": "Z06" }, { "trim": "Z06 1LZ Convertible RWD" }, { "trim": "Z06 1LZ Coupe RWD" }, { "trim": "Z06 2LZ Convertible RWD" }, { "trim": "Z06 2LZ Coupe RWD" }, { "trim": "Z06 3LZ Convertible RWD" }, { "trim": "Z06 3LZ Coupe RWD" } ]
- After you have the Year, Make, Model & Trim. You then can call the transmission endpoint. This is an example endpoint from all previous example data. https://vehapi.com/api/v1/car-lists/get/car/transmissions/2017/Chevrolet/Corvette/Z06 3LZ Convertible RWD
- it returns this data. [ { "transmission": "7-Speed Manual" }, { "transmission": "8-Speed Automatic" } ]
- After you have the Year, Make, Model, Trim and Transmission you can call the Engine. This is an example endpoint from previous data. https://vehapi.com/vehicle/engines/2017/Chevrolet/Corvette/Z06%203LZ%20Convertible%20RWD/7-Speed%20Manual
- it returns this data [ { "engine": "6.2L 650 hp V8" } ]