david kiania
e5b0e192d8
chore(repo): reorganize tree into migrations/ data/ legacy/ docs/
...
Group root-level files (accreted from incremental changes) by purpose
without moving any deployment entrypoint or breaking imports:
- migrations/ : numbered SQL 02-10
- data/ : source CSVs
- legacy/ : superseded pre-_rev scripts + old pipeline notes (not deployed)
- docs/{manuals,reference,reports}/ : loose manuals, references, reports
- strip stray ** / *** prefixes from 5 doc filenames
- delete empty documents.txt / push_webhook.md
Reference updates so nothing breaks:
- run_migrations.py -> /app/migrations/<file>
- run_migrations.sh -> $SCRIPT_DIR/migrations
- import_drivers_csv.py -> data/<csv>
- docker-compose.yaml -> runbook path comment
- CLAUDE.md -> codebase map + inline doc references
Deployed Python (3 services + ts_shared_rev + run_migrations) and the
documented ops one-shots stay at root, preserving the flat-import layout
and all documented commands. Verified: py_compile clean across all modules,
every MIGRATIONS entry resolves under migrations/, CI-referenced paths
(tests/, mypy targets, db_audit) and the grafana build context intact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 02:27:30 +03:00
David Kiania
737ca67712
feat(analytics): add v_driver_clock_daily/today views for tardiness monitoring
...
Static Analysis / static (push) Has been cancelled
Tests / test (push) Has been cancelled
Two read-only views in the tracksolid schema feeding n8n's working-hours
checks: per-IMEI per-Nairobi-day reporting/closing times, start/end
locations + Nominatim addresses, and trip-count/km/drive-hours context.
No policy embedded; cost-centre filtering and tardiness thresholds live
in n8n.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 14:03:40 +03:00