2.3 KiB
2.3 KiB
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.mdis the only new file. No code changes were necessary because the implementation merged in viafeature/shapeshift-cleanupalready covers §2.2 H.1–H.9.- All 4 Playwright specs in
client/e2e/sync-logs.spec.tsare present and follow the samepage.goto('/sync-logs')+ tab-click + assert pattern as the existinge2e/rbac.spec.tsande2e/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.mddoesn't render in your markdown viewer (e.g. some Gitea themes), the table widths are wide; pin to viewport > 1024px.