fixed rares event

This commit is contained in:
erik 2025-05-22 16:29:05 +00:00
parent c418221575
commit f86ad9a542
6 changed files with 101 additions and 2 deletions

62
TODO.md Normal file
View file

@ -0,0 +1,62 @@
## TODO: Migration & Parity Plan
### Detailed Plan
1. [ ] Review Repository for Data Storage and Event Handling
- [ ] Scan for SQLite usage (telemetry, spawns, chat, session data)
- [ ] Identify all event ingestion code paths (WebSocket, HTTP, direct DB inserts)
- [ ] Locate old or deprecated payload handling
2. [ ] Update Database Access Layer to PostgreSQL/TimescaleDB
- [ ] Replace SQLite code with SQLAlchemy models & Alembic migrations
- [ ] Configure TimescaleDB hypertable for telemetry data
- [ ] Create migration for spawn events table
- [ ] Set up `DATABASE_URL` and (optional) local Docker Compose service
3. [ ] Refactor Event Ingestion Endpoints and Logic
- [ ] Modify `/ws/position` to accept new schemas (telemetry, spawn, chat)
- [ ] Persist telemetry and spawn events to PostgreSQL
- [ ] Continue broadcasting chat messages without persisting
4. [ ] Update Data Models and API Response Types
- [ ] Align Pydantic schemas to new event payload structures
- [ ] Update `/live`, `/history`, `/trails` to query Postgres
- [ ] Optionally add `GET /spawns` endpoint for spawn data
5. [ ] Migrate or Clean Historical Data
- [ ] If needed, write script to migrate existing SQLite data to Postgres
- [ ] Otherwise remove old migration and data transformation code
6. [ ] Refactor Frontend to Query and Visualize New Data (deferred)
7. [ ] Add or Update Grafana Dashboards (deferred)
8. [ ] Testing & Verification (deferred)
9. [ ] Documentation & Developer Instructions
- [ ] Update README and docs for PostgreSQL/TimescaleDB setup
10. [ ] Maintenance and Future Enhancements
- [ ] Document data retention and aggregation policies for TimescaleDB
### Phases
### Phase 1: Core Migration & Parity
- [ ] Remove SQLite usage and associated code (`db.py` and direct `sqlite3` calls).
- [ ] Integrate PostgreSQL/TimescaleDB using SQLAlchemy and Alembic for migrations.
- Set up `DATABASE_URL` environment variable for connection.
- (Optional) Add a TimescaleDB service in `docker-compose.yml` for local development.
- [ ] Define SQLAlchemy models and create initial Alembic migration:
- Telemetry table as a TimescaleDB hypertable.
- Spawn events table.
- [ ] Update backend (`main.py`):
- Ingest `telemetry` and new `spawn` messages from `/ws/position` WebSocket.
- Persist telemetry and spawn events to PostgreSQL.
- Continue broadcasting `chat` messages without persisting.
- [ ] Ensure existing endpoints (`/live`, `/history`, `/trails`) operate against the new database.
- [ ] (Optional) Add retrieval endpoint for spawn events (e.g., `GET /spawns`).
### Phase 2: Frontend & Visualization
- [ ] Update frontend to display spawn events (markers or lists).
- [ ] Expose new telemetry metrics in the UI: `latency_ms`, `mem_mb`, `cpu_pct`, `mem_handles`.
### Phase 3: Dashboards & Monitoring
* [ ] Provision or update Grafana dashboards for:
- Telemetry performance (TimescaleDB queries, hypertable metrics).
- Spawn event heatmaps and trends.
- Rare event heatmaps and trends.
### Phase 4: Documentation & Maintenance
- [ ] Finalize README and developer docs with PostgreSQL setup, migration steps, and usage examples.
- [ ] Document how to add new event types or payload fields, including schema, migrations, and tests.
- [ ] Establish data retention and aggregation policies for TimescaleDB hypertables.