Skip to content

A13 — Staff overview and campaign analytics views ​

Status: blocked. Updated: 2026-09-06. Assigned agent: unassigned. Implementation PR: none.

Issues and acceptance covered ​

#52. The acceptance boundary is the implementation scope and completion checks below; see the issue acceptance matrix for parent coverage. Shared definitions: financial contract; proof anchors: evidence index.

Dependencies and blockers ​

A02/A06 backend contracts, A11 shared exact formatters. Staff route visibility follows separate RBAC owner; current admin paths remain protected.

Repository and expected files ​

Frontend: features/admin/dashboard, campaign-list, campaign-detail, associated screens/admin/overview, campaign-list, campaign-detail; shared DashboardChart only narrow signed/single-point support if not handled by A11.

Existing behavior and verified gap ​

Admin chart filters only series while cards remain global, list/detail totalSpent meaning differs, page-local sorting, configured budget progress and nonnegative chart assumptions. No complete finance panel (E18/E19).

Proposed implementation boundary ​

Use named spend/expense/funding/remaining/paid/owed fields and explicit filters for each summary/table/series. Server-owned global sorting/top accepted views; distinguish current stock versus window flow. Add freshness/coverage and error handling; no finance config/lifecycle controls change.

Expected API / data contract ​

Consume v2 staff/campaign/performance DTOs, exact strings, window/timeBasis and pagination; no frontend calculation of spend from RPM or totalPaid from loaded rows.

Required tests ​

CPM/RPM divergence fixture; same-scope creator/staff totals; platform/window/table-scope changes; one/zero/negative chart points; denied/503 states; old payload adapter; full summary stable under pages. Lint/build, focused API tests, manual authorized-role browser pass.

Suggested agent tier ​

Lower-cost UI agent after contracts; smart reviewer retains financial comparison and access/navigation review.

Expected PR boundary and reason ​

One staff campaign/performance UI PR stacked on A02/A06/A11, independent of review/risk/group screens. Unlocks A17. Keep compatibility additive, avoid unrelated cleanup, and list exact stacked commits and later units unlocked in the PR. If observed scope grows beyond this boundary, update the plan before splitting or adding work.

RBAC requirements / TODOs ​

Preserve admin layout/staff allowlist and existing API guards. TODO(RBAC): Only show newly available cross-creator finance/performance screens to the capability approved by the separate RBAC owner; do not change central allowlist/mapping speculatively.

Completion and reconciliation checks ​

List/detail use same named metric, summary scope explicit, incomplete and over-budget conditions not clamped away. Staff access denial is clear and does not show cached sensitive data.

Record actual tests, source schema/contract versions, PR/merge SHA, manual evidence and residual coverage before changing status to review/complete. Any unexpected migration must first satisfy the migration gates; never bundle upstream financial writer work into this analytics unit.