geocrop-platform./apps/nextgen/.harness/changelogs/2026-07-18-p2-2-sync-ui.md

2.3 KiB
Raw Blame History

2026-07-18 — P2-2 + P2-4 sync admin panel + diagnostic dashboard

Scope

Closes P2-2 (sync conflict admin panel) and P2-4 (sync diagnostic dashboard). Most of the implementation was already present on dev (merged in via feature/shapeshift-cleanup prior to this branch): the Zustand store, the page UI, the server endpoints, vitest tests, and Playwright specs were all in place. This PR ships the missing operator runbook at docs/SYNC.md.

What was already on dev

Component File Status
Store with fetchLogs, fetchConflicts, resolveConflict, fetchStatus client/src/store/syncLogs.ts
Vitest coverage (8 specs) client/src/store/syncLogs.test.ts 8/8 green
Page with 4 tabs (Sync Log, Conflicts, Latency, Pending by table) client/src/pages/admin/SyncLogs.tsx
Playwright E2E (4 specs) client/e2e/sync-logs.spec.ts
Server GET /api/sync/conflicts server/src/controllers/sync.controller.js
Server POST /api/sync/conflicts/resolve same
Server GET /api/sync/status (used by latency tab) same
SyncEngine.listConflicts() + resolveConflict() server/src/services/SyncEngine.js
Route + role gate (systems_admin only) client/src/App.tsx:426

What this PR adds

  • docs/SYNC.md — operator runbook: data-model contract, the sync cycle, what a conflict is, the four-tab UI walkthrough, manual diagnostic procedure, escalation matrix, and pointers to the related files.

Verification

  • npx vitest run src/store/syncLogs.test.ts → 8/8 green (~17ms).
  • docs/SYNC.md is the only new file. No code changes were necessary because the implementation merged in via feature/shapeshift-cleanup already covers §2.2 H.1H.9.
  • All 4 Playwright specs in client/e2e/sync-logs.spec.ts are present and follow the same page.goto('/sync-logs') + tab-click + assert pattern as the existing e2e/rbac.spec.ts and e2e/bulk-marks.spec.ts.

Deviations from the plan

  • No code was added or refactored; only the docs runbook was missing.
  • Track H is therefore shipped as a doc-only delta rather than a feature delta.

Follow-ups

  • If docs/SYNC.md doesn't render in your markdown viewer (e.g. some Gitea themes), the table widths are wide; pin to viewport > 1024px.