tracksolid_timescale_grafan.../260410_baseline_report.md
David Kiania d7ffa136a3 Regenerate 260410_baseline_report.md from live database (post-migration)
Full live-query refresh against tracksolid_db at 07:38 EAT 2026-04-11.
All data sourced directly from the server via 10 targeted psql queries.

Report covers: all 17 table row counts, full 63-device registry with
odometer/SIM/expiry, live position detail for all 19 reporting devices
with GPS signal quality, geographic cluster map, position_history by
source (poll=124 / track_list=13 = 137 total), alarm detail confirming
BUG-01 fix, ingestion log health (399 calls, 0 failures), subscription
status breakdown, silent device full list (44 devices), schema additions
verification, Grafana readiness matrix, and P0/P1/P2 action plan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 07:42:33 +03:00

24 KiB
Raw Blame History

Fireside Communications — Fleet Baseline Report

Date: 2026-04-11 · Time of queries: ~07:38 EAT
Database: tracksolid_db on TimescaleDB
Container: timescale_db-bo3nov2ija7g8wn9b1g2paxs-204435447351
Report scope: All 63 registered devices · All tables · Post-migration 04 + 05


1. Migration Status

All four schema migrations applied and tracked:

Migration File Applied (EAT) Status
02_tracksolid_full_schema_rev.sql 2026-04-10 23:45:17 ✓ Applied
03_webhook_schema_migration.sql 2026-04-10 23:45:17 ✓ Applied
04_bug_fix_migration.sql 2026-04-10 23:45:17 ✓ Applied — distance_km renamed & corrected
05_enhancement_migration.sql 2026-04-10 23:45:17 ✓ Applied — new tables + columns

Schema is fully current. No pending migrations.


2. Table Row Counts (as of 07:38 EAT)

Table Rows Notes
tracksolid.devices 63 Full fleet registry
tracksolid.live_positions 19 19 devices with a known position (30% of fleet)
tracksolid.position_history 137 All historical GPS fixes — growing
tracksolid.alarms 2 2 vibration alerts overnight
tracksolid.trips 0 Fleet parked overnight — expected
tracksolid.parking_events 0 Fix deployed; will populate with movement
tracksolid.obd_readings 0 Awaiting webhook registration
tracksolid.device_events 0 Awaiting /pushevent registration
tracksolid.fuel_readings 0 Awaiting /pushoil registration
tracksolid.temperature_readings 0 Awaiting /pushtem registration
tracksolid.lbs_readings 0 Awaiting /pushlbs registration
tracksolid.geofences 0 Not yet configured
tracksolid.heartbeats 0 Awaiting heartbeat webhook
tracksolid.fault_codes 0 Awaiting fault code data
tracksolid.ingestion_log 397 Polling audit trail — healthy
dwh_gold.fact_daily_fleet_metrics 0 ETL not yet run
dwh_gold.dim_vehicles 0 Awaiting population

3. Fleet Composition

63 devices across 4 device models:

Model Count Typical Use
AT4 23 Asset / cargo hardwired tracker
JC400P 23 Camera-capable tracker (larger vehicles)
X3 10 Compact vehicle tracker
GT06E 7 OBD-port tracker
Total 63

4. Full Device Registry

All 63 devices. vehicle_number and driver_name are blank for every device — primary data quality gap.

Device Name Model SIM Odometer (km) Expires Status
AT4-51820 AT4 No position
AT4-53099 AT4 No position
AT4-54246 AT4 No position
AT4-55029 AT4 No position
AT4-55235 AT4 No position
AT4-57389 AT4 No position
AT4-61860 AT4 No position
AT4-64815 AT4 2036-02-05 Stale (1,556h)
AT4-64823 AT4 No position
AT4-64880 AT4 No position
AT4-64989 AT4 No position
AT4-65010 AT4 No position
AT4-65135 AT4 No position
AT4-65341 AT4 No position
AT4-65598 AT4 No position
AT4-65648 AT4 No position
AT4-66158 AT4 No position
AT4-67271 AT4 No position
AT4-67693 AT4 No position
Belta KCU-647D GT06E 0110094465 234,546 2040-04-03 Stale (7,568h) — SERVICE FLAG
FRED KMGW 538W HULETI X3 0119867174 2,284 2036-02-08 Active (0.1h)
GT06E-85428 GT06E No position
GT06E-86319 GT06E No position
JC400P-07904 JC400P No position
JC400P-85041 JC400P No position
JC400P-85058 JC400P No position
JC400P-85751 JC400P 17 2036-03-11 Stale (729h)
JC400P-86270 JC400P 6,931 No position
JC400P-86403 JC400P No position
JC400P-87625 JC400P No position
JC400P-87831 JC400P No position
JC400P-89431 JC400P 7,375 No position
JC400P-89530 JC400P No position
JC400P-89563 JC400P No position
JC400P-89662 JC400P No position
JC400P-89977 JC400P No position
JC400P-90108 JC400P No position
JC400P-90199 JC400P No position
JC400P-90678 JC400P No position
JC400P-91619 JC400P 3,719 No position
JC400P-92278 JC400P No position
JC400P-92716 JC400P No position
JC400P-92732 JC400P No position
JC400P-94233 JC400P No position
JK Subaru KCS 903Y GT06E 0746759925 73,345 2039-06-12 Stale (671h)
KCE 690F AT4 2039-07-01 Very stale (57,312h)
KCS 903Y JK SUB AT4 0700024569 4,492 2039-06-09 Very stale (15,213h)
KCU 145Q Solo Xtrail GT06E 0757270810 53,228 2039-12-20 Stale (7,530h)
KCU 865Q Vanguard GT06E 0757270763 61,758 2039-12-20 Stale (62h)
KCU 865Q Vanguard Sub AT4 0757270804 9,656 2039-12-20 Very stale (15,429h)
KDK 829A GP GT06E 0707923872 239,264 2042-10-29 Active (0.2h) — SERVICE FLAG
KDU 878T_CAM JC400P 0708351897 1,562 2035-08-18 Stale (3,064h)
KDU 878T_Track X3 0708352823 4,802 2035-08-18 Stale (62h)
KDW 632M HL Cam JC400P 300002396032 IoT 16 2036-03-11 Stale (740h)
KDW 632M HL Tracker X3 300002396033 IoT 222 2036-02-09 Stale (728h)
KMEH 692C KAWASAKI AT4 0110094467 3,319 2040-04-03 Very stale (24,693h)
KMGR 409U HENRY JAZZ X3 0768697302 6,696 2035-07-31 Semi-active (16h)
X3-59405 X3 No position
X3-63282 X3 4,194 2036-02-14 Active (0.2h) — UGANDA ANOMALY
X3-64223 X3 No position
X3-68968 X3 16 2036-03-11 Stale (728h)
X3-69172 X3 No position
X3-78553 X3 No position

5. Live Position Coverage

19 of 63 devices (30%) have a position in live_positions.
44 devices (70%) have no position at all — offline, SIM not installed, or never activated.

Freshness Bands

Band Count Devices
< 1 hour (active now) 3 FRED KMGW 538W HULETI, X3-63282, KDK 829A GP
124 hours 1 KMGR 409U HENRY JAZZ (16h)
17 days (stale) 3 KCU 865Q Vanguard (62h), KDU 878T_Track (62h), KDU 878T_CAM (3,064h)
112 months (very stale) 6 JK Subaru KCS 903Y, KCU 145Q, Belta KCU-647D, etc.
> 1 year (historical only) 6 KCS 903Y JK SUB, KCU 865Q Vanguard Sub, KMEH 692C KAWASAKI, KCE 690F, etc.

Full Live Position Detail

Device Model Lat Lng Speed (km/h) ACC GPS Signal Satellites Last Fix (EAT)
FRED KMGW 538W HULETI X3 -1.23748 36.72662 0 Off 4 15 2026-04-11 07:34:26
X3-63282 X3 0.19554 32.54002 0 Off 4 11 2026-04-11 07:30:15
KDK 829A GP GT06E -1.32787 36.89972 0 Off 3 8 2026-04-11 07:28:58
KMGR 409U HENRY JAZZ X3 -1.23748 36.72674 1 Off 2 6 2026-04-10 15:40:32
KCU 865Q Vanguard GT06E -1.23748 36.72641 5 Off 2026-04-08 17:17:45
KDU 878T_Track X3 -1.23528 36.72871 0 Off 2026-04-08 17:16:55
JK Subaru KCS 903Y GT06E -1.23558 36.72870 0 Off 2026-03-14 09:08:34
X3-68968 X3 -1.23799 36.72615 0 Off 2026-03-11 23:59:28
KDW 632M HL Tracker X3 -1.24087 36.72839 0 Off 2026-03-11 23:53:44
JC400P-85751 JC400P -1.23796 36.72611 0 Off 2026-03-11 22:15:44
KDW 632M HL Cam JC400P -1.24115 36.72847 0 Off 2026-03-11 11:52:01
AT4-64815 AT4 -1.24136 36.72872 0 Off 2026-02-05 11:19:55
KDU 878T_CAM JC400P -1.06900 37.01436 12 Off 2025-12-04 15:27:42
KCU 145Q Solo Xtrail GT06E -1.29728 36.88850 0 Off 2025-06-01 14:04:47
Belta KCU-647D GT06E -1.15151 36.63857 0 Off 2025-05-30 23:53:22
KCS 903Y JK SUB AT4 -1.23529 36.72875 0 Off 2024-07-16 10:41:42
KCU 865Q Vanguard Sub AT4 -1.23522 36.73104 0 Off 2024-07-07 10:43:21
KMEH 692C KAWASAKI AT4 -1.23849 36.72460 0 Off 2023-06-17 10:41:18
KCE 690F AT4 -1.24008 36.74522 31 Off 2019-09-27 07:20:08

ACC Off for all 19 devices — fleet parked overnight, consistent with ~03:0007:38 EAT query window.


6. Geographic Clustering

All known positions confirmed in two clusters plus one critical outlier:

Cluster Area Coords Active Devices
Primary depot Nairobi West / Kikuyu Rd corridor -1.235 to -1.241, 36.724 to 36.731 14 devices
Secondary Nairobi East / Thika Rd -1.297 to -1.328, 36.885 to 36.900 2 devices
Outlier Thika / Ruiru -1.069, 37.014 1 device (KDU 878T_CAM)
CRITICAL Uganda — Kampala region 0.196, 32.540 1 device (X3-63282)

The primary depot cluster at ~(-1.237, 36.727) is very tight — 10+ devices within a 200m radius — suggesting a single compound/yard. This is your main base.


7. Position History

Total fixes: 137 across two ingestion sources:

Source Fixes Method Frequency
poll 124 Fleet-wide 60s sweep Every 60 seconds
track_list 13 Per-device high-res trail (POLL-01) Every 30 minutes
Total 137

Per-Device Fixes — Last 24 Hours

Device Model Fixes First Fix (EAT) Last Fix (EAT) Avg Speed Max Speed
FRED KMGW 538W HULETI X3 40 2026-04-10 23:16 2026-04-11 07:34 0.0 km/h 0.0
X3-63282 X3 29 2026-04-10 23:15 2026-04-11 07:30 0.0 km/h 0.0
KDK 829A GP GT06E 16 2026-04-10 23:13 2026-04-11 07:29 0.0 km/h 0.0
KMGR 409U HENRY JAZZ X3 1 2026-04-10 15:40 2026-04-10 15:40 1.0 km/h 1.0

Only 4 of 63 devices generated position history in the last 24 hours. The remaining 59 are either offline, not reporting, or have stale last-seen data from prior months.

Track List Sample (POLL-01 High-Resolution Trail)

13 high-res waypoints captured across 15 scheduler runs (30-min interval, overnight):

Device GPS Time (EAT) Lat Lng Speed
FRED KMGW 538W HULETI 2026-04-11 07:04:07 -1.23748 36.72662 0
KDK 829A GP 2026-04-11 07:00:52 -1.32800 36.89976 0
X3-63282 2026-04-11 07:00:15 0.19554 32.54002 0
FRED KMGW 538W HULETI 2026-04-11 06:54:01 -1.23748 36.72662 0
X3-63282 2026-04-11 06:45:15 0.19554 32.54002 0

All track_list fixes show speed = 0 and stationary coordinates, confirming overnight parking. Altitude data not yet populated (device-dependent feature).


8. Alarms

Total alarms: 2 — both on the same device, overnight.

# Device Alarm Type Alarm Name Time (EAT) Lat Lng Speed
1 FRED KMGW 538W HULETI 3 Vibration alert 2026-04-11 00:57:30 -1.23752 36.72660 0
2 FRED KMGW 538W HULETI 3 Vibration alert 2026-04-11 02:58:36 -1.23748 36.72660 0

Key findings:

  • BUG-01 confirmed fixedalarm_type (3) and alarm_name ("Vibration alert") now correctly populated from polling. Previously both were always NULL.
  • Both events at stationary coordinates, ~2 hours apart while parked.
  • Vibration type 3 while speed = 0 suggests: tamper attempt, animal contact, or sensor vibration from nearby traffic.
  • Vehicle position is at the primary Kikuyu Rd depot cluster — consistent with a parked asset.
  • No speed alarms, no geofence alarms, no power alarms.

9. Trips

Trips recorded: 0

Expected — all vehicles parked overnight. Schema confirmed correct:

Column Present Notes
distance_km Renamed from distance_m, values corrected ÷1,000,000 (BUG-02 fixed)
max_speed_kmh Will populate from next trip poll (BUG-03 fixed)
avg_speed_kmh
driving_time_s
idle_time_s
fuel_consumed_l

First trips expected ~06:3007:00 EAT when drivers depart. Validate with:

SELECT d.device_name, t.start_time AT TIME ZONE 'Africa/Nairobi',
       t.distance_km, t.avg_speed_kmh, t.max_speed_kmh, t.driving_time_s
FROM tracksolid.trips t
JOIN tracksolid.devices d ON d.imei = t.imei
ORDER BY t.start_time DESC LIMIT 10;

10. Parking Events

Parking events: 0

POLL-02 fix deployed (acc_type=0, corrected durSecond field mapping). The API is responding (60 calls, 0 rows) — events will populate once vehicles complete a full park-stop-move cycle.


11. Ingestion Pipeline Health

Total API calls across all endpoints since deployment (~08h operational):

Endpoint Calls Rows Upserted Rows Inserted Avg Duration Failures First Call (EAT) Last Call (EAT)
jimi.user.device.location.list 311 5,909 5,909 493ms 0 2026-04-10 23:45 2026-04-11 07:38
jimi.open.platform.report.parking 60 0 0 10,891ms 0 2026-04-10 23:45 2026-04-11 07:36
jimi.device.track.list 15 0 80 136,875ms 0 2026-04-10 23:45 2026-04-11 07:19
jimi.device.alarm.list 11 0 11 939ms 0 2026-04-11 01:00 2026-04-11 03:24
jimi.user.device.list+detail 2 126 0 6,290ms 0 2026-04-10 23:45 2026-04-11 05:00
Total 399 0

Observations:

  • Zero failures across all 399 API calls — pipeline fully stable.
  • Location polling: 311 calls × ~19 devices/call = consistent fleet coverage. Averaging 493ms round-trip.
  • Track list: 15 calls yielding 80 waypoints at 136s avg — the API is slow per call but returns full trail history correctly.
  • Parking: 60 calls, all successful, all 0 rows — API is healthy, no parking events completed yet.
  • Device sync (device.list+detail): runs every 5 hours; 2 runs complete, 126 device records synced.
  • Alarm polling: activates conditionally; 11 calls catching both overnight alarms correctly.

Recent Call Log (last 5 minutes)

Every 60s location sweep returning exactly 19 devices at ~200ms:

07:38:13  location.list   63 queried → 19 upserted   230ms
07:37:13  location.list   63 queried → 19 upserted   214ms
07:36:12  location.list   63 queried → 19 upserted   223ms
07:36:04  parking         13+50 queried → 0 inserted  14,562ms + 7,293ms
07:35:11  location.list   63 queried → 19 upserted   195ms

12. Odometer Leaders & Service Flags

Devices with reported odometer readings (ascending by mileage):

Rank Device Model SIM Odometer (km) Subscription Expires
1 KDK 829A GP GT06E 0707923872 239,264 2042-10-29
2 Belta KCU-647D GT06E 0110094465 234,546 2040-04-03
3 JK Subaru KCS 903Y GT06E 0746759925 73,345 2039-06-12
4 KCU 865Q Vanguard GT06E 0757270763 61,758 2039-12-20
5 KCU 145Q Solo Xtrail GT06E 0757270810 53,228 2039-12-20
6 KCU 865Q Vanguard Sub AT4 0757270804 9,656 2039-12-20
7 JC400P-89431 JC400P 7,375
8 JC400P-86270 JC400P 6,931
9 KMGR 409U HENRY JAZZ X3 0768697302 6,696 2035-07-31
10 KDU 878T_Track X3 0708352823 4,802 2035-08-18
11 KCS 903Y JK SUB AT4 0700024569 4,492 2039-06-09
12 X3-63282 X3 4,194 2036-02-14
13 JC400P-91619 JC400P 3,719
14 KMEH 692C KAWASAKI AT4 0110094467 3,319 2040-04-03
15 FRED KMGW 538W HULETI X3 0119867174 2,284 2036-02-08

KDK 829A GP (239,264 km) and Belta KCU-647D (234,546 km) are critical service flags. Both exceed typical major maintenance thresholds. Both are GT06E OBD trackers — their odometer readings come directly from the vehicle's ECU, making them more reliable than GPS-estimated mileage. Recommend immediate physical inspection.


13. Subscription Status

Category Count Notes
No expiry date set 44 All are the 44 silent/no-position devices — likely unactivated
Already expired 0 None expired
Expiring within 90 days 0 None imminent
Valid long-term (> 90 days) 19 All the devices with live positions

The 44 devices with no expiry are the same 44 with no position data. This strongly suggests they have never been activated on the Tracksolid platform (no SIM, no subscription, never commissioned).


14. Geographic Anomaly — X3-63282

X3-63282 is consistently reporting from Uganda (~0.196°N, 32.540°E) near Kampala.

Evidence this is real (not a GPS glitch):

  • 29 fixes over 24 hours, all from the same coordinates
  • Track_list high-res trail confirms 5 more waypoints at the same location
  • Device is actively pinging every 60 seconds (GPS signal quality: 4/4, 11 satellites)
  • Subscription is valid until 2036-02-14
  • Odometer reads 4,194 km

This device is genuinely located in Uganda and actively communicating.

Possible explanations:

  1. Vehicle on a cross-border logistics trip (Nairobi → Kampala corridor)
  2. Device removed and travelling separately from the vehicle
  3. Device installed in a vehicle belonging to a different entity

Action required: Contact driver or responsible manager immediately to confirm vehicle location, mission, and expected return.


15. Silent Devices — Full List (44 devices)

All 44 devices with no position data and no subscription expiry set:

Model Devices
AT4 (18) AT4-51820, AT4-53099, AT4-54246, AT4-55029, AT4-55235, AT4-57389, AT4-61860, AT4-64823, AT4-64880, AT4-64989, AT4-65010, AT4-65135, AT4-65341, AT4-65598, AT4-65648, AT4-66158, AT4-67271, AT4-67693
JC400P (20) JC400P-07904, JC400P-85041, JC400P-85058, JC400P-86270, JC400P-86403, JC400P-87625, JC400P-87831, JC400P-89431, JC400P-89530, JC400P-89563, JC400P-89662, JC400P-89977, JC400P-90108, JC400P-90199, JC400P-90678, JC400P-91619, JC400P-92278, JC400P-92716, JC400P-92732, JC400P-94233
GT06E (2) GT06E-85428, GT06E-86319
X3 (4) X3-59405, X3-64223, X3-69172, X3-78553

18 AT4 + 20 JC400P = 38 of the 44 silent devices are AT4s and JC400Ps — the two largest model groups. This is a significant inventory of undeployed trackers. Either these are in storage awaiting vehicle installation, or they represent a large batch of devices purchased but not yet commissioned.


16. Schema Additions Confirmed (Migration 05)

New columns on existing tables

tracksolid.trips:

  • distance_km (renamed + corrected from distance_m)
  • max_speed_kmh

tracksolid.obd_readings — normalized scalar columns:

  • engine_rpm, coolant_temp_c, fuel_level_pct, battery_voltage
  • intake_pressure, throttle_pct, vehicle_speed, engine_load_pct

tracksolid.alarms — enrichment:

  • severity, geofence_id, geofence_name
  • acknowledged_at, acknowledged_by

tracksolid.devices — vehicle enrichment:

  • vehicle_category, cost_centre, assigned_route
  • depot_geom, depot_address

New tables confirmed present

Table Type Purpose
tracksolid.device_events Regular Login/logout events (PUSH-01)
tracksolid.fuel_readings Hypertable Fuel sensor readings (PUSH-02)
tracksolid.temperature_readings Hypertable Temperature/humidity (PUSH-03)
tracksolid.lbs_readings Regular Cell tower fallback positions (PUSH-04)
tracksolid.geofences Regular Geofence zone storage

DWH Gold layer

Object Status
dwh_gold.dim_vehicles Present, 0 rows
dwh_gold.fact_daily_fleet_metrics Present, 0 rows — ETL function not yet run

17. Data Quality Gaps — Priority Matrix

P0 — Blocks all driver / vehicle reporting

Gap Scope Action
vehicle_number, vehicle_name, driver_name blank All 63 devices Bulk populate via Tracksolid Pro admin or API
44 devices never activated (no SIM, no position) 70% of fleet Commission or confirm storage status per device

P1 — Blocks operational analytics

Gap Scope Action
No push webhooks registered OBD, fuel, temp, events, LBS all empty Register 6 endpoints in Tracksolid Pro
Parking: 0 rows despite 60 API calls Cannot compute idle time or utilisation Validate post-morning operations
Trips: 0 rows All KPIs unavailable Validate first morning trips >07:00 EAT
fuel_100km not set No cost-per-trip or fuel efficiency Set per vehicle class

P2 — Limits reporting depth

Gap Scope Action
No geofences configured No zone detection, no off-route alerts Create depot + key-site geofences
vehicle_category blank Cannot segment by vehicle type Populate alongside vehicle_number
cost_centre blank Cannot allocate costs to business units Populate alongside vehicle_number
depot_geom blank Cannot compute distance-from-base Set primary depot coordinates
DWH gold empty Grafana summary panels empty Run dwh_gold.refresh_daily_metrics() after first full day

18. Grafana Dashboard Readiness

Panel Ready Condition
Fleet map — live positions Partial 19/63 visible; 44 offline
Position trail / route replay Ready 137 fixes, growing each cycle
Alarm feed Ready Live; will grow with operations
Active device count Ready 4 devices active in last 24h
Trips today Not ready Validate post-07:00 EAT
Distance per vehicle Not ready Requires trips data
Driver behaviour (speed, harsh events) Not ready Requires trips + driver metadata
Fuel efficiency Not ready Requires fuel_100km + OBD/fuel data
Device connectivity uptime Not ready Requires /pushevent webhook
Cold chain temperature Not ready Requires /pushtem webhook
Odometer / service alerts Ready 15 devices with odometer data

  1. Populate vehicle metadatavehicle_number, vehicle_name, driver_name for all 63 devices. Single most impactful action — unlocks driver scoring, trip attribution, and all KPIs from 01_BusinessAnalytics.md.

  2. Investigate X3-63282 in Uganda — Contact driver/manager today. Confirm cross-border mission or escalate as potential asset displacement.

  3. Schedule morning data validation — At 09:00 EAT run trip, parking, and alarm queries to confirm pipeline behaviour during active operations.

  4. Register push webhooks in Tracksolid Pro:

    • /pushtripreport
    • /pushobd
    • /pushoil
    • /pushtem
    • /pushlbs
    • /pushevent
  5. Audit 44 silent devices — Determine which are: (a) in storage awaiting installation, (b) installed but SIM not provisioned, (c) decommissioned. Log the outcome per IMEI.

  6. Flag KDK 829A GP and Belta KCU-647D for service — 239k km and 234k km respectively. Both actively communicating and in use.

  7. Set fuel_100km per vehicle class to enable cost reporting.

  8. Configure primary depot geofence at ~(-1.237, 36.727) — the tight cluster where most of the fleet is parked.

  9. Run DWH gold ETL after first full operational day:

    SELECT dwh_gold.refresh_daily_metrics(CURRENT_DATE - 1);
    

End of report. Data queried: 2026-04-11 ~07:38 EAT. Next full refresh recommended: 2026-04-11 12:00 EAT after morning operations complete.