Drop a flight log onto 3D Map Explorer and watch the trajectory animate across the terrain against a scrubable timeline. The dispatcher sniffs the file — ArduPilot .tlog (MAVLink stream), .bin/.log (dataflash), or DJI DatCon .csv — routes to the right reader, and serves the time-animated track for post-flight analysis. The same log store feeds PPK and the fleet manager.
FlightLogReader sniffs the extension (and, for ambiguous cases, a few magic bytes) and routes to the format-specific reader. Every reader is non-throwing — an unparseable input returns null and the caller surfaces a clean error. Nothing crashes the host.
.tlog → ArduPilotTlogReader — MAVLink stream with timestamps..bin / .log → ArduPilotBinReader — binary + text dataflash variants..dat (DJI) → DjiDatReader — honest stub; flagged as not-yet-implemented..csv → DjiCsvReader — DatCon export, the practical DJI path.// upload log → sniff → parse → store { "file": "flight-043.tlog" } → routed to ArduPilotTlogReader GET /api/flightlog/logs/{id}/track { "points": [[34.05,-118.25,120,1690000000]], "startUtc": "2026-07-31T14:00Z" } → time-animated on the map
Flight-log replay isn't a one-off viewer — it's the trajectory source two other UAS features build on. Load a log once; replay it, post-process it for centimeter accuracy, and credit its hours to the fleet registry.
Track served per-log; scrub the timeline and watch position/attitude move across the terrain.
PpkService reads the recorded trajectory straight from the log store for post-processing.
Logged flights roll up into aircraft flight-hour totals and maintenance thresholds.
Unparseable logs return null + a clean error — never crash the in-process server.
DJI .dat reader is stubbed and flagged — DatCon .csv is the supported DJI path today.
Ingest, list, fetch track, delete — full CRUD over REST.
| Capability | Endpoint | Notes |
|---|---|---|
| Ingest log | POST /api/flightlog/ingest | Sniffs extension/magic bytes → routes to reader |
| List logs | GET /api/flightlog/logs | Stored flight logs |
| Log detail | GET /api/flightlog/logs/{id} | Metadata + summary |
| Time track | GET /api/flightlog/logs/{id}/track | Time-animated trajectory points |
| Delete | DELETE /api/flightlog/logs/{id} |
Format support reflects FlightLogReader / ArduPilotTlogReader / DjiCsvReader on the current build. DJI native .dat is an honest stub — use DatCon-exported .csv for DJI logs today.
Ingest .tlog / .bin / .csv, replay the trajectory against a timeline, and feed PPK and the fleet registry from one store.