docs: update README and AGENTS.md for characteristics, tracks, endpoint changes

- Add Car Characteristics and Track Mapping feature sections
- Update project structure (8 routes, tracks store, new views)
- Update API contract (23 endpoints, add characteristics/tracks/build-track-model)
- Add Features and State Management sections to AGENTS.md
This commit is contained in:
Jan-Peter von Hunnius 2026-06-24 09:39:59 +02:00
parent 9e0b46596e
commit 7bda8b4af1
2 changed files with 37 additions and 7 deletions

View file

@ -46,7 +46,24 @@ Use the `joplin_get_note` tool with note ID `6c0dcb2a567348fd9796f50c790082e4` t
## API Communication ## API Communication
Racecraft communicates exclusively with the rusty-telemetry REST API. In development, Vite proxies `/api/*` to `http://127.0.0.1:8080`. See the rusty-telemetry README for full endpoint documentation. Racecraft communicates exclusively with the rusty-telemetry REST API (23 endpoints). In development, Vite proxies `/api/*` to `http://127.0.0.1:8080`. See the rusty-telemetry README for full endpoint documentation.
## Features
- **Dashboard** — system status, live feed cards, recent sessions
- **Live Telemetry** — real-time gauges (speed, RPM, gear, inputs), per-feed status
- **Sessions** — create/complete/reopen sessions, start/stop/delete runs, view analysis
- **Shift Points** — gear RPM range charts, shift event timeline, recommended shift RPM
- **Car Characteristics** — aggregated shift-point profiles per car across all sessions
- **Track Mapping** — canvas-rendered track boundaries, persistent track models
## State Management (Pinia Stores)
| Store | Purpose |
|-------|---------|
| `stores/telemetry.ts` | Live telemetry polling + derived status |
| `stores/sessions.ts` | Session CRUD, run management, analysis retrieval |
| `stores/tracks.ts` | Track model list + detail |
## Commands ## Commands

View file

@ -48,7 +48,7 @@ Web-based sim racing telemetry analysis client. Connects to [rusty-telemetry](ht
- Polling at 250ms for responsive updates - Polling at 250ms for responsive updates
### Session Management ### Session Management
- Create analysis sessions with use case selection (Shift Points, Track Map, etc.) - Create analysis sessions with use case selection (Shift Points, Track Mapping)
- Start/stop runs within a session to capture telemetry data - Start/stop runs within a session to capture telemetry data
- Complete sessions to trigger automatic analysis - Complete sessions to trigger automatic analysis
- Session detail view with run history and status - Session detail view with run history and status
@ -59,10 +59,16 @@ Web-based sim racing telemetry analysis client. Connects to [rusty-telemetry](ht
- Recommended shift RPM from aggregated data - Recommended shift RPM from aggregated data
- Detailed shift event table - Detailed shift event table
### Track Map ### Car Characteristics
- Aggregated shift-point profiles per car across all sessions
- Expandable car cards showing per-gear RPM/speed ranges
- Recommended shift RPM per car
### Track Mapping
- Canvas-rendered track boundaries from coordinate data - Canvas-rendered track boundaries from coordinate data
- Center line computation from left/right boundary runs - Center line computation from left/right boundary runs
- Boundary legend with point counts - Boundary legend with point counts
- Persistent track models with track list and detail views
- Responsive canvas that redraws on window resize - Responsive canvas that redraws on window resize
## Tech Stack ## Tech Stack
@ -137,19 +143,22 @@ racecraft/
├── src/ ├── src/
│ ├── main.ts # App bootstrap (Vue + Pinia + Router) │ ├── main.ts # App bootstrap (Vue + Pinia + Router)
│ ├── App.vue # Root layout with navigation │ ├── App.vue # Root layout with navigation
│ ├── router/index.ts # 6 routes with lazy loading │ ├── router/index.ts # 8 routes with lazy loading
│ ├── types/index.ts # TypeScript interfaces matching API JSON shapes │ ├── types/index.ts # TypeScript interfaces matching API JSON shapes
│ ├── api/client.ts # Typed Axios client (all API endpoints) │ ├── api/client.ts # Typed Axios client (all API endpoints)
│ ├── stores/ │ ├── stores/
│ │ ├── telemetry.ts # Live telemetry with polling + derived status │ │ ├── telemetry.ts # Live telemetry with polling + derived status
│ │ └── sessions.ts # Session CRUD, run management, analysis │ │ ├── sessions.ts # Session CRUD, run management, analysis
│ │ └── tracks.ts # Track model list + detail
│ ├── views/ │ ├── views/
│ │ ├── DashboardView.vue # System status, feeds, quick actions │ │ ├── DashboardView.vue # System status, feeds, quick actions
│ │ ├── LiveView.vue # Real-time gauges and telemetry │ │ ├── LiveView.vue # Real-time gauges and telemetry
│ │ ├── SessionsView.vue # Session list with create/delete │ │ ├── SessionsView.vue # Session list with create/delete
│ │ ├── SessionDetailView.vue # Run workflow, complete, analyze │ │ ├── SessionDetailView.vue # Run workflow, complete, analyze
│ │ ├── ShiftPointsView.vue # RPM charts and shift event table │ │ ├── ShiftPointsView.vue # RPM charts and shift event table
│ │ └── TrackMapView.vue # Canvas track map renderer │ │ ├── CharacteristicsView.vue # Car characteristics aggregation
│ │ ├── TracksView.vue # Track model list
│ │ └── TrackDetailView.vue # Canvas track map renderer
│ ├── components/ │ ├── components/
│ │ └── FeedStatus.vue # Reusable feed card with health + telemetry │ │ └── FeedStatus.vue # Reusable feed card with health + telemetry
│ └── assets/ │ └── assets/
@ -160,7 +169,7 @@ racecraft/
## API Contract ## API Contract
Racecraft consumes the rusty-telemetry REST API (19 endpoints). See the [rusty-telemetry README](https://codeberg.org/jhunnius/rusty-telemetry) for full endpoint documentation. Racecraft consumes the rusty-telemetry REST API (23 endpoints). See the [rusty-telemetry README](https://codeberg.org/jhunnius/rusty-telemetry) for full endpoint documentation.
Key endpoints used: Key endpoints used:
- `GET /api/live` — polled every 250ms–1000ms for live telemetry - `GET /api/live` — polled every 250ms–1000ms for live telemetry
@ -168,6 +177,10 @@ Key endpoints used:
- `POST /api/sessions/{id}/runs` / `POST /api/sessions/{id}/runs/{run_id}/stop` — run capture - `POST /api/sessions/{id}/runs` / `POST /api/sessions/{id}/runs/{run_id}/stop` — run capture
- `POST /api/sessions/{id}/complete` — complete session and trigger analysis - `POST /api/sessions/{id}/complete` — complete session and trigger analysis
- `GET /api/sessions/{id}/analysis` — retrieve analysis results - `GET /api/sessions/{id}/analysis` — retrieve analysis results
- `GET /api/characteristics/cars` — aggregated car shift-point profiles
- `GET /api/characteristics/cars/{car}` — detailed per-gear data for a car
- `GET /api/tracks` / `GET /api/tracks/{track}` — track model list and detail
- `POST /api/sessions/{id}/build-track-model` — build track model from session
## License ## License