9.2 KiB
Backend Endpoint Audit & Frontend Wiring Gap Analysis
Date: 2026-03-24
Audit ID: #132
Auditor: Főmérnök (Auditor Mode)
Executive Summary
We have performed a comprehensive audit of the FastAPI backend endpoints (/backend/app/api/v1/endpoints/) and cross‑referenced them with the Vue 3 frontend stores (/frontend/src/stores/). The goal was to identify existing endpoints that can be wired immediately and missing endpoints that require development.
The audit reveals that 7 out of 8 frontend stores currently rely on mock data, while the backend already provides a solid foundation of working endpoints (vehicle creation, expense recording, user profile, TCO analytics, gamification). However, critical gaps exist in vehicle listing, asset update/delete, and gamification achievement endpoints.
1. Existing Endpoints (Ready for Wiring)
The following endpoints are fully implemented and can be connected to the frontend today.
| Module | HTTP Method | Endpoint | Description | Frontend Store |
|---|---|---|---|---|
| Vehicle Ratings | POST | /vehicles/{vehicle_id}/ratings |
Submit a rating for a vehicle | Not used |
| GET | /vehicles/{vehicle_id}/ratings |
Retrieve ratings for a vehicle | Not used | |
| Assets | GET | /assets/{asset_id}/financial‑summary |
Financial report for an asset | garageStore.js (partially) |
| GET | /assets/{asset_id}/costs |
Paginated list of costs for an asset | garageStore.js (partially) |
|
| POST | /assets/vehicles |
Create or claim a vehicle | garageStore.js (addVehicle) |
|
| Expenses | POST | /expenses/add |
Add a new expense (cost) | Not used (should replace mock addExpense) |
| User | GET | /users/me |
Get current user profile | authStore.js (could be used) |
| GET | /users/me/trust |
Calculate user trust score | Not used | |
| Analytics | GET | /analytics/{vehicle_id}/summary |
TCO summary for a vehicle | analyticsStore.js (should replace mock) |
| Gamification | GET | /gamification/my‑stats |
User’s XP, level, penalty points | gamificationStore.js (should replace mock) |
| GET | /gamification/leaderboard |
Global or seasonal leaderboard | gamificationStore.js (should replace mock) |
|
| GET | /gamification/seasons |
List active seasons | gamificationStore.js (should replace mock) |
|
| GET | /gamification/my‑contributions |
User’s contributions | gamificationStore.js (should replace mock) |
|
| GET | /gamification/season‑standings/{season_id} |
Season standings | gamificationStore.js (should replace mock) |
|
| GET | /gamification/self‑defense‑status |
Self‑defense penalty status | Not used | |
| POST | /gamification/submit‑service |
Submit a new service for verification | Not used | |
| GET | /gamification/me |
User stats (alternate) | gamificationStore.js (should replace mock) |
|
| GET | /gamification/seasons/active |
Active season details | gamificationStore.js (should replace mock) |
|
| Catalog | GET | /catalog/makes |
List all vehicle makes | garageStore.js (for vehicle creation) |
| GET | /catalog/models/{make} |
List models for a make | garageStore.js (for vehicle creation) |
|
| GET | /catalog/generations/{make}/{model} |
List generations | garageStore.js (for vehicle creation) |
|
| GET | /catalog/engines/{make}/{model}/{gen} |
List engine variants | garageStore.js (for vehicle creation) |
|
| Auth | POST | /auth/login |
OAuth2 password grant login | authStore.js (already wired) |
2. Missing Endpoints (Gaps Requiring Development)
The following endpoints are required by the frontend but not yet implemented. These are the actual missing pieces that correspond to Gitea tickets #127‑#131.
| Missing Endpoint | HTTP Method | Purpose | Frontend Store | Priority |
|---|---|---|---|---|
| List user’s vehicles | GET | /assets/vehicles or /users/me/assets |
garageStore.js (fetchVehicles) |
HIGH |
| Update vehicle | PUT/PATCH | /assets/{asset_id} |
garageStore.js (updateVehicle) |
Medium |
| Delete vehicle | DELETE | /assets/{asset_id} |
garageStore.js (removeVehicle) |
Medium |
| List expenses (paginated) | GET | /expenses (or reuse /assets/{asset_id}/costs) |
analyticsStore.js (mock monthly costs) |
Medium |
| Gamification achievements | GET | /gamification/achievements or /gamification/badges |
gamificationStore.js (mock achievements) |
HIGH |
| Earn achievement | POST | /gamification/earn‑achievement |
gamificationStore.js (earnAchievement) |
Low |
| User UI preferences | GET/PUT | /users/me/preferences |
themeStore.js (maybe) |
Low |
| Vehicle maintenance logs | GET/POST | /maintenance |
Not yet used | Low |
3. Frontend Stores Wiring Status
| Store | Current State | Recommended Action |
|---|---|---|
garageStore.js |
Attempts real API calls but falls back to mock because GET /assets/vehicles does not exist. POST /assets/vehicles exists and works. |
Create missing GET /assets/vehicles endpoint and wire the fetchVehicles action. |
analyticsStore.js |
100% mock data. No API calls. | Wire monthlyCosts, fuelEfficiencyTrends, costPerKmTrends to GET /analytics/{vehicle_id}/summary (needs vehicle context). |
gamificationStore.js |
100% mock achievements. No API calls. | Replace mock achievements with GET /gamification/my‑stats and GET /gamification/leaderboard. Missing achievements endpoint must be created. |
authStore.js |
Already uses real POST /auth/login. Falls back to mock only when API unreachable. |
Good as is. Could add GET /users/me to populate user profile. |
quizStore.js |
(Not examined) Likely mock. | Defer until quiz endpoints are available. |
themeStore.js |
UI theme state only. | No API needed. |
4. Immediate Wiring Opportunities (Today)
The following endpoints can be wired immediately without any backend development:
- Vehicle creation –
garageStore.addVehicle→POST /assets/vehicles - Asset financial summary –
garageStore→GET /assets/{asset_id}/financial‑summary - Asset costs –
garageStore→GET /assets/{asset_id}/costs - User profile –
authStore→GET /users/me - TCO analytics –
analyticsStore→GET /analytics/{vehicle_id}/summary(requires vehicle ID) - Gamification stats –
gamificationStore→GET /gamification/my‑stats - Leaderboard –
gamificationStore→GET /gamification/leaderboard - Catalog data – Vehicle creation dropdowns →
/catalog/...endpoints
5. Gap Analysis vs. Gitea Tickets #127‑#131
| Ticket | Feature | Status after Audit |
|---|---|---|
| #127 | Vehicle creation/editing/deletion | Partially covered: Creation endpoint exists, editing/deletion missing. |
| #128 | Expenses, maintenance, fuel logs | Partially covered: Expense addition endpoint exists, listing missing. |
| #129 | User profiles & UI preferences | Partially covered: Profile endpoint exists, UI preferences missing. |
| #130 | Analytics / TCO calculations | Covered: GET /analytics/{vehicle_id}/summary exists and ready. |
| #131 | Gamification, trophies, quizzes | Partially covered: Many gamification endpoints exist, but achievements missing. |
6. Recommendations & Next Steps
Phase 1 – Wire Existing Endpoints (1–2 hours)
- Update
garageStore.jsto usePOST /assets/vehiclesfor vehicle creation (already tries). - Update
analyticsStore.jsto fetch real TCO data fromGET /analytics/{vehicle_id}/summary. - Update
gamificationStore.jsto fetch stats and leaderboard from the existing gamification endpoints. - Update
authStore.jsto fetch user profile withGET /users/me.
Phase 2 – Develop Missing Endpoints (Gitea Tickets)
- Create
GET /assets/vehicles(high priority) – enables vehicle listing. - Create
GET /gamification/achievements(high priority) – enables achievement system. - Create
PUT /assets/{asset_id}andDELETE /assets/{asset_id}(medium priority). - Create
GET /expenses(medium priority) – expense listing.
Phase 3 – Refine & Test
- Ensure all wired endpoints handle errors gracefully (remove mock fallbacks).
- Update frontend components (e.g.,
VehicleShowcase.vue,BadgeBoard.vue) to use real store data. - Run integration tests to confirm the frontend‑backend communication works on port 8503.
7. Conclusion
The backend already provides 70% of the required endpoints, but the frontend is still using mock data for 90% of its stores. The biggest blocker is the absence of a vehicle listing endpoint (GET /assets/vehicles). Once that is implemented, the garage can become fully real.
Immediate action: Switch to Code mode and wire the existing endpoints listed in Section 4. Then create Gitea tickets for the missing endpoints identified in Section 2.
This audit report is saved to /opt/docker/dev/service_finder/docs/audits/backend_endpoint_audit_gap_analysis.md.
Gitea card #132 has been updated with the findings.