Backlog: P0 live chain DONE (moved to Done, P0 section cleared)
This commit is contained in:
+11
-35
@@ -9,41 +9,6 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## P0 — Next build
|
|
||||||
|
|
||||||
- [ ] **GitHub price-history mirror (warm the data for Trends)** — the relay does
|
|
||||||
the GOV.UK heavy lifting (OAuth token stays in relay `.env`) and pushes a daily
|
|
||||||
snapshot to a PUBLIC repo; the app reads from GitHub, so this doubles as the
|
|
||||||
production data source (App Review can't reach the LAN relay) AND the history
|
|
||||||
archive the Trends graph (P1) reads. Shape: relay writes `latest.json` (tiny
|
|
||||||
pointer: date, station_count, data_updated, available range) +
|
|
||||||
`history/YYYY-MM-DD.json` (FULL dump — 2.58 MB/day, decision Option 2) and
|
|
||||||
pushes once/day; the app fetches
|
|
||||||
`raw.githubusercontent.com/aptonline/fuelboard-data/main/latest.json`, then only
|
|
||||||
the missing day files for starred (station, fuel) pairs (deterministic URLs —
|
|
||||||
404 = no data that day, leave a graph gap, never error). LAN relay stays the
|
|
||||||
fallback source. Telemetry implication: raw GitHub fetches are invisible to repo
|
|
||||||
analytics (page views/clones only) — keep the widget-diag beacon firing
|
|
||||||
regardless of data source (build/stale-build checks survive) and add an
|
|
||||||
opportunistic fire-and-forget X-Client app beacon on fetch (LAN = attribution +
|
|
||||||
cadence; off-LAN skip is itself a reachability datum). `/stats` keeps the
|
|
||||||
intrusion canary and gains a new signal: app-hit spikes = GitHub path failing →
|
|
||||||
fallback active. App Review: public repo required (reviewer fetches the data
|
|
||||||
themselves); HTTPS/ATS fine; plain JSON is not "remote code" (2.5.2-safe); bundle
|
|
||||||
a small fallback dump so the app never demos empty. Retention: 180 days (~470 MB,
|
|
||||||
pruning enforced by the push script — full dump, NOT the earlier ~200 KB
|
|
||||||
price-only estimate). *PUSH SIDE DONE 2026-08-15 — repo live
|
|
||||||
(https://github.com/aptonline/fuelboard-data); auth = SSH deploy key
|
|
||||||
~/.ssh/fuelboard_deploy via alias github-fuelboard-data (no token anywhere);
|
|
||||||
clone ~/workspace/fuelboard-data; launchd com.apt.fuelboard-mirror daily 10:00
|
|
||||||
(script ~/.hermes/scripts/mirror_push.py, log
|
|
||||||
~/Library/Logs/fuelboard-mirror.log); manual trigger `launchctl start
|
|
||||||
com.apt.fuelboard-mirror`; first snapshot 2026-08-15 landed + verified raw 200.
|
|
||||||
REMAINING: live provider chain (GitHub → relay → bundled dump for CURRENT
|
|
||||||
prices) + the telemetry beacon — NOTE: the HISTORY read path shipped with P1
|
|
||||||
(FuelHistoryStore: latest.json + day files for starred stations, favourites-only
|
|
||||||
app-group cache, 404 = gap never error, 90-day prune).*
|
|
||||||
|
|
||||||
## P1 — Soon
|
## P1 — Soon
|
||||||
|
|
||||||
- [x] **Siri: "Cheapest [fuel] near me"** — `AppShortcutsProvider` + `CheapestFuelIntent`
|
- [x] **Siri: "Cheapest [fuel] near me"** — `AppShortcutsProvider` + `CheapestFuelIntent`
|
||||||
@@ -164,6 +129,17 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
|
|||||||
|
|
||||||
## Done (recent)
|
## Done (recent)
|
||||||
|
|
||||||
|
- [x] **GitHub price-history mirror + LIVE provider chain (P0, DONE 2026-08-16)** —
|
||||||
|
push side (relay → public `aptonline/fuelboard-data`, daily 10:00 launchd, SSH
|
||||||
|
deploy key, 180-day retention) + history read side (Trends, P1) + **live chain
|
||||||
|
(`feature/p0-live-chain`)**: `MirrorFuelProvider` fetches CURRENT prices from
|
||||||
|
raw.githubusercontent (latest.json → history/<day>.json, app-group day-cache) →
|
||||||
|
LAN relay fallback → bundled REAL dump (`FuelBoardDump` dataset, refreshed by
|
||||||
|
`scripts/refresh_bundled_dump.sh`) last resort; focused alert path stays
|
||||||
|
relay-first (never pulls the 2.8 MB dump over mobile); `FuelBeacon` fire-and-
|
||||||
|
forget X-Client app ping on the relay's existing widget-diag route (zero relay
|
||||||
|
changes) = attribution/cadence on-LAN, silent off-LAN skip = reachability
|
||||||
|
datum, `/stats` app-hit spike = GitHub path failing. 89 tests.
|
||||||
- [x] Switch dataset to govuk API data — official Fuel Finder OAuth API via
|
- [x] Switch dataset to govuk API data — official Fuel Finder OAuth API via
|
||||||
relay-api :8789 (source: api, ~8,012 stations); app baseURL → :8789; credentials
|
relay-api :8789 (source: api, ~8,012 stations); app baseURL → :8789; credentials
|
||||||
live in relay `.env` only, never in the IPA
|
live in relay `.env` only, never in the IPA
|
||||||
|
|||||||
Reference in New Issue
Block a user