mirror of
https://github.com/gadgethd/ukmesh.git
synced 2026-09-01 17:08:17 +00:00
docs(topology): record spring-clean item 11
This commit is contained in:
@@ -261,3 +261,29 @@ local commit below.
|
||||
`SPRING-PAGES-2026-08-06.md`.
|
||||
- **Local commit:** `1c3841c` (`chore(website): spring-clean public pages`);
|
||||
no GitHub push.
|
||||
|
||||
## Item 11 — Topology map on the UK map (2026-08-06, done)
|
||||
|
||||
- Replaced the graph-only topology SVG with a MapLibre UK basemap and live
|
||||
GeoJSON repeater nodes plus observed adjacency links. Region and multibyte
|
||||
filters, bridge/isolated state, selection, link weighting, and the ranked
|
||||
repeater panel remain available.
|
||||
- Optimised the backend topology query to filter recent viable base links before
|
||||
canonical aggregation; the live endpoint now returns HTTP 200 without the
|
||||
previous full-view timeout.
|
||||
- Quality gates passed: frontend typecheck, 80 tests, CSS lint, and build;
|
||||
backend typecheck and all 273 tests passed in the isolated rerun.
|
||||
- Deployed only `backend`, `app-ukmesh`, and `website-ukmesh`. Final image
|
||||
digests are app `sha256:15c5acf7ad203be5a95f319becb403c06902bf8bfd8bd540639828e4b6326e9c`,
|
||||
website `sha256:ef4797a250316697294e415f0f8ffc41810f16000ebc713aa77a78d52ba4b0aa`,
|
||||
and backend `sha256:983f4e29cb2ac23ee06e35dba5507e590f1f11179170fe46ef90af84bd64ca08`.
|
||||
`.env` changed only `APP_IMAGE` and `WEBSITE_IMAGE`.
|
||||
- Live proof: `/api/topology?network=ukmesh&limit=300` returned 303 repeaters,
|
||||
294 mapped repeaters, and 300 links; HopReach returned 200; Googlebot
|
||||
Playwright rendered the basemap, zoom control, nodes, and relationship lines.
|
||||
Evidence: `SPRING-TOPOLOGY-2026-08-06.png` and
|
||||
`SPRING-TOPOLOGY-2026-08-06.md`.
|
||||
- `/api/health` returned HTTP 200 and healthy containers, while its payload
|
||||
currently reports the unrelated `database_vacuum_backlog` incident; no
|
||||
unrelated database or service maintenance was performed.
|
||||
- Local commits: `be0a689` and `7b6e860`; never pushed.
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
# UKMesh spring-clean item 11 — topology map
|
||||
|
||||
Date: 2026-08-06
|
||||
Status: implemented, tested, deployed locally on the Projects VPS; not pushed.
|
||||
|
||||
## What changed
|
||||
|
||||
`TopologyPage.tsx` was graph-only: it used a D3 force layout inside an SVG and
|
||||
did not render the existing MapLibre map. It now uses a MapLibre-backed UK map
|
||||
with live repeater nodes and observed relationships overlaid as GeoJSON. Nodes
|
||||
carry degree, bridge, isolated, and selection state; links carry observation
|
||||
weight, viability colour, and multibyte evidence styling. The existing region
|
||||
and multibyte filters remain live, and the side panel still ranks the most
|
||||
connected repeaters.
|
||||
|
||||
The `/api/topology` repository query was also bounded at the base
|
||||
`node_links` table before canonical aggregation. The old query materialised the
|
||||
full `node_identity_links` view before applying the recent/viable filters and
|
||||
was timing out on the live dataset. The new query returns the same public shape
|
||||
while completing quickly enough for the page and screenshot checks.
|
||||
|
||||
The shared MapLibre load handoff was made available before shared layer setup,
|
||||
and the topology initial view is stable across React renders. This prevents the
|
||||
map from being torn down after its ready callback and allows the topology
|
||||
overlay sources, layers, and navigation control to persist.
|
||||
|
||||
## Verification
|
||||
|
||||
- Live topology: HTTP 200 for `/api/topology?network=ukmesh&limit=300`; 303
|
||||
repeaters, 294 mapped repeaters, 300 observed links, 114 components, 49
|
||||
likely bridge repeaters, and 100 recently active isolated repeaters.
|
||||
- HopReach compatibility endpoint: HTTP 200 from
|
||||
`/hopreach/api/nodes`.
|
||||
- Googlebot Playwright capture of `https://ukmesh.com/topology`: HTTP 200,
|
||||
topology API HTTP 200, one MapLibre canvas, zoom control present, live
|
||||
topology metadata present, and no loading/error state. Evidence:
|
||||
`SPRING-TOPOLOGY-2026-08-06.png`.
|
||||
- `/api/health`: HTTP 200 and all three deployed service containers report
|
||||
healthy, but the public payload currently reports the unrelated
|
||||
`database_vacuum_backlog` critical incident. No database maintenance or
|
||||
unrelated service changes were made for this item.
|
||||
|
||||
## Quality gates
|
||||
|
||||
- Frontend: `npx tsc --noEmit`, 80 tests, `npm run lint:css`, and
|
||||
`npm run build` all passed.
|
||||
- Backend: `npm run typecheck` passed; the isolated backend run passed all 273
|
||||
tests. One concurrent run exposed two timing-sensitive failures, which did
|
||||
not reproduce in the isolated rerun.
|
||||
|
||||
## Deployment
|
||||
|
||||
Both frontend bundles contained the new `Live topology` string in their
|
||||
shipped `TopologyPage` assets. Only `backend`, `app-ukmesh`, and
|
||||
`website-ukmesh` were deployed; no dependent services were restarted.
|
||||
|
||||
- `meshcore-analytics-app:spring-topo` —
|
||||
`sha256:15c5acf7ad203be5a95f319becb403c06902bf8bfd8bd540639828e4b6326e9c`
|
||||
- `meshcore-analytics-website:spring-topo` —
|
||||
`sha256:ef4797a250316697294e415f0f8ffc41810f16000ebc713aa77a78d52ba4b0aa`
|
||||
- `meshcore-analytics-backend:spring-topo` —
|
||||
`sha256:983f4e29cb2ac23ee06e35dba5507e590f1f11179170fe46ef90af84bd64ca08`
|
||||
|
||||
`.env` was updated only on the `APP_IMAGE` and `WEBSITE_IMAGE` lines. The
|
||||
backend pin, channel secrets, and every other environment line were preserved.
|
||||
|
||||
## Commits
|
||||
|
||||
- `be0a689` — `feat(topology): render live repeater links on UK map`
|
||||
- `7b6e860` — `fix(topology): keep map instance stable after load`
|
||||
|
||||
Both commits are local only; nothing was pushed.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 252 KiB |
Reference in New Issue
Block a user