fleet-platform/app
kianiadee 0f91668256
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
Contract checker (#13, PRD F1.10) + contract_drift_days SLO
Migration 18: ops.contract_check_log table — append-only log of probes
against the Tracksolid Pro endpoints we depend on.

New worker app/workers/contract_check.py — per run:
  - jimi.oauth.token.get   (token refresh succeeds)
  - jimi.user.device.location.list per configured target (parse first item
    with JimiPollFix)
  - jimi.device.location.get with a sample IMEI from the list (parse first
    item with JimiPollFix)
Each probe logs success or {error_class, error_detail, sample}; failures
are recorded, not raised.

slo_metrics now also computes contract_drift_days = days since the most-
recent successful probe of the laggard endpoint. With threshold 1d (from
mig 5), a single failed daily run flips the badge red within 24h.

cron entrypoint registers the check daily at 02:00 UTC plus once on
startup, gated on TRACKSOLID_APP_KEY + a configured target.
2026-05-27 11:58:29 +03:00
..
entrypoints Contract checker (#13, PRD F1.10) + contract_drift_days SLO 2026-05-27 11:58:29 +03:00
models Parser: tolerate real Tracksolid wire shape (imei/speed names, null gpsTime for offline devices) + per-item resilience 2026-05-23 09:05:17 +03:00
parsers UI: arrow + plate-short label + cost-centre marker palette + hover popup; richer state.live_positions + serve.fn_live_view v2; multi-target poll plumbing 2026-05-23 09:29:04 +03:00
projectors Plate consolidation migration + projector links new devices to existing plates; SLO measurement worker (task #12) 2026-05-23 23:42:45 +03:00
routers Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
tracksolid Add Tracksolid polling worker + auto-provisioning projector + result-key parser support 2026-05-23 08:59:27 +03:00
workers Contract checker (#13, PRD F1.10) + contract_drift_days SLO 2026-05-27 11:58:29 +03:00
__init__.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
auth.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
config.py Geocoder: cron job + state.geocoded_positions; label uses device_name last 4 (fallback plate); popup address row 2026-05-23 23:06:25 +03:00
db.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
health.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
logging_setup.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
main.py Gateway: serve web/ at root via StaticFiles; redirect / to /index-live.html 2026-05-23 01:35:13 +03:00
rate_limit.py Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00