feat(ui): admin review workspace for monthly historical flow curation #270

Open
opened 2026-10-03 12:58:51 +00:00 by gabogg · 0 comments
Owner

Child of #163, split out by maintainer decision (2026-10-03, on PR #170). PR #170 delivers #163's API and data layer. This issue delivers the private web workspace #163 requires on top of it. Part of umbrella #160, so Milestone 1 can't complete without it.

Scope

An admin-only workspace in the admin area, using the space freed by #173. It drives the #170 curation API:

  • Month picker and draft lifecycle: create a draft from a staged revision, discard it (with a reason), and prepare it for approval.
  • Day list:
    • each day's Complete, Partial or Missing evidence next to the chosen status;
    • an explicit reason wherever the chosen status is better than the evidence supports;
    • day context (regular, holiday, event, closed), with the day-and-month holiday hints shown as hints, never pre-filled.
  • Per-hour view: local versus HikCentral overlap and differences, known ingestion gaps, and zero confirmations for selected hours.
  • Weekly operating-hours confirmation and the camera-mismatch confirmation, both with reasons. A confirmation resets when the inputs behind it change.
  • The audit trail of the draft.

Acceptance Criteria

  • Admin-only. The Operator and Supervisor roles can't reach it.
  • Every write goes through the #170 API, and the UI enforces nothing the API doesn't.
  • es/en i18n for every string, following docs/standards/ui-design-guidelines.md.
  • Node tests for the main views, and an end-to-end flow test (create → review → prepare) against the API on in-memory SQLite.

Blocked by: PR #170 (the API it consumes) merging.

Child of #163, split out by maintainer decision (2026-10-03, on PR #170). PR #170 delivers #163's API and data layer. This issue delivers the *private web workspace* #163 requires on top of it. Part of umbrella #160, so Milestone 1 can't complete without it. ### Scope An admin-only workspace in the admin area, using the space freed by #173. It drives the #170 curation API: - **Month picker and draft lifecycle:** create a draft from a staged revision, discard it (with a reason), and prepare it for approval. - **Day list:** - each day's Complete, Partial or Missing evidence next to the chosen status; - an explicit reason wherever the chosen status is better than the evidence supports; - day context (regular, holiday, event, closed), with the day-and-month holiday hints shown as hints, never pre-filled. - **Per-hour view:** local versus HikCentral overlap and differences, known ingestion gaps, and zero confirmations for selected hours. - **Weekly operating-hours confirmation and the camera-mismatch confirmation,** both with reasons. A confirmation resets when the inputs behind it change. - **The audit trail of the draft.** ### Acceptance Criteria - Admin-only. The Operator and Supervisor roles can't reach it. - Every write goes through the #170 API, and the UI enforces nothing the API doesn't. - es/en i18n for every string, following `docs/standards/ui-design-guidelines.md`. - Node tests for the main views, and an end-to-end flow test (create → review → prepare) against the API on in-memory SQLite. Blocked by: PR #170 (the API it consumes) merging.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gabogg/hikcentral#270
No description provided.