# Fireside Communications — Fleet Baseline Report ## Date: 2026-04-10 · Database: tracksolid_db · Generated: 23:18 EAT > **Baseline snapshot taken on the first night of active pipeline operation.** > Container: `timescale_db-bo3nov2ija7g8wn9b1g2paxs-195053614609` > Ingestion has been live for approximately 1 hour at time of capture. --- ## 1. Executive Summary | Metric | Value | Status | |---|---|---| | Total registered devices | 63 | — | | Devices with live position | 19 (30%) | ⚠ 44 devices never reported | | Devices active today | 4 | ⚠ Low — evening snapshot | | Position history rows | 28 | ⚠ Pipeline started today | | Trip records | 0 | ❌ Migration 04 not yet applied | | Alarm records | 0 | ❌ No alarms ingested yet | | Parking events | 0 | ⚠ API returning 0 (fix deployed, containers not redeployed) | | Ingestion pipeline health | ✅ Running | 60-second polling confirmed | | Migration 04 applied (distance_km rename) | ❌ No | `distance_m` column still present | | Migration 05 applied (new tables) | ❌ No | New tables don't exist yet | **Key finding:** The ingestion pipeline started successfully tonight and is polling correctly. However, only 19 of 63 devices are returning live positions from the Tracksolid API. The remaining 44 devices are registered in the system but have never reported a GPS fix — they may be inactive, uninstalled, or require account-level configuration in Tracksolid Pro. --- ## 2. Fleet Composition ### Device types registered | Device Model | Count | With SIM | With Odometer | Notes | |---|---|---|---|---| | AT4 | 23 | 3 | 3 | Oldest fleet — mostly blank device names | | JC400P | 23 | 2 | 6 | Camera-equipped trackers | | X3 | 10 | 4 | 6 | Newest devices (2025–2026 activations) | | GT06E | 7 | 5 | 5 | Mid-fleet — best data quality | | **Total** | **63** | **14** | **20** | | **Observations:** - Only 14 of 63 devices have a SIM number recorded (22%) - Only 20 of 63 devices have an odometer reading (32%) - All 63 `vehicle_name`, `vehicle_number`, and `driver_name` fields are blank — reports currently show device names only ### Named vehicles with odometer (highest mileage first) | Device Name | IMEI | Type | Odometer (km) | Activated | SIM | |---|---|---|---|---|---| | KDK 829A GP | 359857082898297 | GT06E | 239,264 | 2022-10-29 | 0707923872 | | Belta KCU-647D | 359857082042862 | GT06E | 234,546 | 2020-04-03 | 0110094465 | | JK Subaru KCS 903Y | 359857081891921 | GT06E | 73,344 | 2019-06-12 | 0746759925 | | KCU 865Q Vanguard | 359857082042953 | GT06E | 61,758 | 2019-12-20 | 0757270763 | | KCU 145Q Solo Xtrail | 359857082037425 | GT06E | 53,228 | 2019-12-20 | 0757270810 | | KCU 865Q Vanguard Sub | 353549090555334 | AT4 | 9,656 | 2019-12-20 | 0757270804 | | KMGR 409U HENRY JAZZ | 865135061048300 | X3 | 6,696 | 2025-07-31 | 0768697302 | | KDU 878T_Track | 865135061040349 | X3 | 4,802 | 2025-08-18 | 0708352823 | | KCS 903Y JK SUB | 353549090552018 | AT4 | 4,492 | 2019-06-09 | 0700024569 | | X3-63282 | 865135061563282 | X3 | 4,194 | 2026-02-14 | — | | KMEH 692C KAWASAKI | 353549090561654 | AT4 | 3,319 | 2020-04-03 | 0110094467 | | FRED KMGW 538W HULETI | 865135061559538 | X3 | 2,284 | 2026-02-08 | 0119867174 | | KDU 878T_CAM | 862798052715071 | JC400P | 1,562 | 2025-08-18 | 0708351897 | | KDW 632M HL Tracker | 865135061569529 | X3 | 222 | 2026-02-09 | 300002396033 IoT | | JC400P-85751 | 862798052785751 | JC400P | 17 | 2026-03-11 | — | | X3-68968 | 865135061568968 | X3 | 16 | 2026-03-11 | — | | KDW 632M HL Cam | 862798052707995 | JC400P | 16 | 2026-03-11 | 300002396032 IoT | > **Note:** `KDK 829A GP` (239,264 km) and `Belta KCU-647D` (234,546 km) are high-mileage vehicles that should be reviewed for service intervals. At typical service intervals of 10,000 km, both are well overdue unless recently serviced. --- ## 3. Live Positions — Current Fleet Snapshot ### Position freshness at 23:18 EAT, 2026-04-10 | Freshness Band | Vehicles | |---|---| | Fresh — last fix < 10 minutes ago | **3** | | Today — last fix within 24 hours | **1** | | This week — last fix within 7 days | **2** | | This month — last fix within 30 days | **3** | | Stale — last fix older than 30 days | **10** | | No position recorded | **44** | ### Vehicles with fresh GPS fix (reporting now) | Device Name | IMEI | Last Fix (EAT) | Speed | Acc | Odometer | Coordinates | Location | |---|---|---|---|---|---|---|---| | FRED KMGW 538W HULETI | 865135061559538 | 23:16:00 | 0 km/h | Off | 2,283.89 km | -1.237, 36.727 | Nairobi (Westlands area) | | X3-63282 | 865135061563282 | 23:15:15 | 0 km/h | Off | 4,194.08 km | 0.196, 32.540 | **Uganda (Kampala/Entebbe area)** | | KDK 829A GP | 359857082898297 | 23:13:20 | 0 km/h | Off | 239,263.53 km | -1.328, 36.900 | Nairobi South / Athi River area | > ⚠️ **X3-63282 is currently in Uganda** (lat 0.196, lng 32.540 — near Kampala/Entebbe). If this vehicle is not expected to be cross-border, this warrants investigation. ### All vehicles that reported today (2026-04-10) | Device Name | Last Fix (EAT) | Speed | Location | |---|---|---|---| | FRED KMGW 538W HULETI | 23:16 | 0 km/h | Nairobi Westlands | | X3-63282 | 23:15 | 0 km/h | Uganda | | KDK 829A GP | 23:13 | 0 km/h | Nairobi South | | KMGR 409U HENRY JAZZ | 15:40 | 1 km/h | Nairobi Westlands | All 4 active vehicles have ignition off (`acc_status = 0`) — fleet is parked as of report time. ### Geographic clusters of tracked fleet | Approximate Area | Lat/Lng | Vehicles | |---|---|---| | Nairobi — Westlands / Upper Hill | -1.24, 36.73 | 7 | | Uganda — Kampala / Entebbe area | 0.20, 32.54 | 1 | | Nairobi South — Athi River / Mlolongo | -1.33, 36.90 | 1 | --- ## 4. Devices Not Reporting (44 of 63) The following 44 devices are registered but have **never returned a GPS position** since the pipeline started. This is the most significant operational gap identified at baseline. | IMEI | Device Name | Type | |---|---|---| | 353549090551820 | AT4-51820 | AT4 | | 353549090553099 | AT4-53099 | AT4 | | 353549090554246 | AT4-54246 | AT4 | | 353549090555029 | AT4-55029 | AT4 | | 353549090555235 | AT4-55235 | AT4 | | 353549090557389 | AT4-57389 | AT4 | | 353549090561860 | AT4-61860 | AT4 | | 353549090564823 | AT4-64823 | AT4 | | 353549090564880 | AT4-64880 | AT4 | | 353549090564989 | AT4-64989 | AT4 | | 353549090565010 | AT4-65010 | AT4 | | 353549090565135 | AT4-65135 | AT4 | | 353549090565341 | AT4-65341 | AT4 | | 353549090565598 | AT4-65598 | AT4 | | 353549090565648 | AT4-65648 | AT4 | | 353549090566158 | AT4-66158 | AT4 | | 353549090567271 | AT4-67271 | AT4 | | 353549090567693 | AT4-67693 | AT4 | | 359857081885428 | GT06E-85428 | GT06E | | 359857081886319 | GT06E-86319 | GT06E | | 862798052707904 | JC400P-07904 | JC400P | | 862798052785041 | JC400P-85041 | JC400P | | 862798052785058 | JC400P-85058 | JC400P | | 862798052786403 | JC400P-86403 | JC400P | | 862798052787625 | JC400P-87625 | JC400P | | 862798052787831 | JC400P-87831 | JC400P | | 862798052789530 | JC400P-89530 | JC400P | | 862798052789563 | JC400P-89563 | JC400P | | 862798052789662 | JC400P-89662 | JC400P | | 862798052789977 | JC400P-89977 | JC400P | | 862798052790108 | JC400P-90108 | JC400P | | 862798052790199 | JC400P-90199 | JC400P | | 862798052790678 | JC400P-90678 | JC400P | | 862798052792278 | JC400P-92278 | JC400P | | 862798052792716 | JC400P-92716 | JC400P | | 862798052792732 | JC400P-92732 | JC400P | | 862798052794233 | JC400P-94233 | JC400P | | 865135061559405 | X3-59405 | X3 | | 865135061564223 | X3-64223 | X3 | | 865135061569172 | X3-69172 | X3 | | 865135061578553 | X3-78553 | X3 | | 862798052786270 | JC400P-86270 | JC400P | | 862798052789431 | JC400P-89431 | JC400P | | 862798052791619 | JC400P-91619 | JC400P | **Likely causes:** - Device powered off or SIM deactivated - Device registered in Tracksolid Pro but never activated in the field - Account-level permission: device may belong to a sub-account not accessible under the API credentials in use - Physical tracker fault or uninstalled from vehicle **Recommended action:** Cross-reference this list against the physical fleet inventory. For any device that should be active, log into the Tracksolid Pro web console and verify the device is online. --- ## 5. Ingestion Pipeline Health ### Last 30 ingestion events (as at 23:18 EAT) | Endpoint | IMEIs Queried | Rows Upserted | Rows Inserted | Duration | Status | |---|---|---|---|---|---| | `jimi.user.device.location.list` | 63 | 19 | 19 | ~200 ms | ✅ | | `jimi.user.device.location.list` | 63 | 19 | 19 | ~240 ms | ✅ | | `jimi.open.platform.report.parking` | 50+13 | 0 | 0 | ~7–15s | ⚠ 0 rows | | `jimi.user.device.list+detail` | 63 | 63 | 0 | 66,115 ms | ✅ | **Observations:** - Location polling running every 60 seconds — healthy and consistent - All API calls returning success (`t`) - Parking endpoint responding but returning 0 rows — the updated container with `acc_type=0` and `durSecond` fix has not yet been redeployed - `jimi.device.track.list` (POLL-01 high-resolution trail) not yet appearing in logs — new container not yet deployed - Trip polling (`jimi.device.track.mileage`) not yet appearing — new container not yet deployed - Device sync completed at 22:54 (66 seconds for 63 devices with detail lookups — expected) --- ## 6. Schema & Migration Status | Migration | Description | Status | |---|---|---| | 01–03 | Base schema, webhook tables, position_history columns | ✅ Applied | | **04** | `distance_m` → `distance_km` rename + historical data correction | ❌ **Not applied** | | **05** | New tables: device_events, fuel_readings, temperature_readings, lbs_readings, geofences; OBD/alarm/device enrichment columns; dwh_gold expansion | ❌ **Not applied** | **Confirmed:** `trips.distance_m` column still exists (not yet renamed to `distance_km`). Migration 04 must be run before deploying updated ingestion containers — failure to do so will cause the new code to write to a column that doesn't exist. **Tables present in `tracksolid` schema:** | Table | Rows | |---|---| | `devices` | 63 | | `live_positions` | 19 | | `position_history` | 28 | | `trips` | 0 | | `alarms` | 0 | | `parking_events` | 0 | | `obd_readings` | 0 | | `heartbeats` | 0 | | `ingestion_log` | 29+ | | `api_token_cache` | — | | `fault_codes` | — | **Tables NOT yet present (require migration 05):** - `device_events` - `fuel_readings` - `temperature_readings` - `lbs_readings` - `geofences` --- ## 7. Stale Devices — Historical Last-Seen The following devices have a live_positions entry but their last GPS fix is more than 30 days old: | Device Name | IMEI | Last Fix (EAT) | Odometer | Notes | |---|---|---|---|---| | KCS 903Y JK SUB | 353549090552018 | 2024-07-16 10:41 | 4,492 km | ~21 months stale | | KCU 865Q Vanguard Sub | 353549090555334 | 2024-07-07 10:43 | 9,656 km | ~21 months stale | | KMEH 692C KAWASAKI | 353549090561654 | 2023-06-17 10:41 | 3,319 km | ~34 months stale | | KCE 690F | 353549090565580 | 2019-09-27 07:20 | 0 km | ~6.5 years stale | | KDU 878T_CAM | 862798052715071 | 2025-12-04 15:27 | 1,562 km | ~4 months stale | | KCU 145Q Solo Xtrail | 359857082037425 | 2025-06-01 14:04 | 53,228 km | ~10 months stale | | Belta KCU-647D | 359857082042862 | 2025-05-30 23:53 | 234,546 km | ~10 months stale | | KDW 632M HL Cam | 862798052707995 | 2026-03-11 11:52 | 16 km | 30 days — may need SIM activation | | KDW 632M HL Tracker | 865135061569529 | 2026-03-11 23:53 | 222 km | 30 days — may need SIM activation | | JC400P-85751 | 862798052785751 | 2026-03-11 22:15 | 17 km | 30 days — brand new, 17 km only | | AT4-64815 | 353549090564815 | 2026-02-05 11:19 | 0 km | 64 days stale | | JK Subaru KCS 903Y | 359857081891921 | 2026-03-14 00:55 | 73,344 km | 27 days | --- ## 8. Pending Actions Before Full Operation The following steps are required to move from baseline to fully operational. Listed in execution order: | Priority | Action | Impact | |---|---|---| | 🔴 1 | **Run migration 04** on production DB | Renames `distance_m` → `distance_km`; corrects historical data | | 🔴 2 | **Run migration 05** on production DB | Creates new tables for expanded ingestion | | 🔴 3 | **Redeploy updated ingestion containers** | Activates: trip polling, parking fix, high-res GPS trails, alarm field fix | | 🟠 4 | **Investigate 44 non-reporting devices** | Cross-check against physical fleet; verify online in Tracksolid Pro console | | 🟠 5 | **Investigate cross-border vehicle** | X3-63282 last seen in Uganda — confirm if authorised | | 🟠 6 | **Register webhooks** in Tracksolid Pro account | Activates: /pushobd, /pushoil, /pushtem, /pushlbs, /pushevent, /pushtripreport | | 🟡 7 | **Populate vehicle_name, vehicle_number, driver_name** | All 63 devices currently blank — reports show device names only | | 🟡 8 | **Set fuel_100km** per vehicle | Unlocks idle fuel cost calculations | | 🟡 9 | **Review high-mileage vehicles** for service | KDK 829A GP (239k km) and Belta KCU-647D (234k km) | | 🟢 10 | **Schedule nightly ETL** | `SELECT dwh_gold.refresh_daily_metrics(CURRENT_DATE - 1);` via cron or n8n | ### Commands for steps 1–3 ```bash # SSH to server first ssh kianiadee@stage.rahamafresh.com # Resolve container TS_DB=$(docker ps --filter "name=timescale_db" --format "{{.Names}}" | head -1) # Step 1 — migration 04 (distance correction) docker exec -i "$TS_DB" psql -U postgres -d tracksolid_db \ < /path/to/04_bug_fix_migration.sql # Step 2 — migration 05 (new tables) docker exec -i "$TS_DB" psql -U postgres -d tracksolid_db \ < /path/to/05_enhancement_migration.sql # Step 3 — redeploy containers cd /path/to/compose docker compose up -d --build ingest_movement ingest_events webhook_receiver ``` --- ## 9. Devices That Reported This Week vs Last Month ### Active in last 7 days | Device Name | IMEI | Last Fix | Odometer | |---|---|---|---| | FRED KMGW 538W HULETI | 865135061559538 | 2026-04-10 23:16 | 2,284 km | | X3-63282 | 865135061563282 | 2026-04-10 23:15 | 4,194 km | | KDK 829A GP | 359857082898297 | 2026-04-10 23:13 | 239,264 km | | KMGR 409U HENRY JAZZ | 865135061048300 | 2026-04-10 15:40 | 6,696 km | | KCU 865Q Vanguard | 359857082042953 | 2026-04-08 17:17 | 61,758 km | | KDU 878T_Track | 865135061040349 | 2026-04-08 17:16 | 4,802 km | ### Active in last 30 days (in addition to above) | Device Name | IMEI | Last Fix | Odometer | |---|---|---|---| | JK Subaru KCS 903Y | 359857081891921 | 2026-03-14 00:55 | 73,344 km | | KDW 632M HL Tracker | 865135061569529 | 2026-03-11 23:53 | 222 km | | JC400P-85751 | 862798052785751 | 2026-03-11 22:15 | 17 km | | KDW 632M HL Cam | 862798052707995 | 2026-03-11 11:52 | 16 km | --- ## 10. What This Report Will Look Like in 7 Days Once migrations 04 and 05 are applied and updated containers are deployed, the next weekly report will include: - **Trip records** per vehicle per day — distance driven, drive/idle hours, avg and max speed - **Parking events** — where vehicles stopped, how long, address - **Alarm events** — overspeed, geofence, harshness flags with correct type names - **High-resolution position trails** — 2–6 GPS fixes per minute per active vehicle - **Driver scorecards** — km driven, alarms per 100 km, late starts The data foundation is in place. The pipeline is running. This baseline establishes the starting point against which all future performance will be measured. --- *Report generated from live database query · 2026-04-10 23:18 EAT* *Pipeline uptime at report time: ~1 hour* *Queries source: `tracksolid_DB_manual.md` · `01_BusinessAnalytics.md`*