Skip to content

feat(web): add compliance case board screen on live cases api - #291

Merged
tiana-code merged 1 commit into
mainfrom
feat/E-08-compliance-case-board
Jun 19, 2026
Merged

feat(web): add compliance case board screen on live cases api#291
tiana-code merged 1 commit into
mainfrom
feat/E-08-compliance-case-board

Conversation

@tiana-code

Copy link
Copy Markdown
Owner

E-08 Sandbox UI #287 (F-08.9, read scope) - the first slice of the freshly-decomposed E-08 epic.

What

A read-only Compliance case board in the sandbox dashboard, listing cases by status from the live GET /v1/compliance/cases?status= API. Mirrors the merged accounts/transactions read screens:

  • features/cases/useCases (TanStack Query over the shared apiFetch), CasesTable, CaseStatusPill.
  • routes/Cases.tsx: a status tab filter (OPEN/CLAIMED/ESCALATED/RESOLVED, default OPEN) that refetches on change, plus loading/empty/error + Retry states.
  • api/types.ts: CaseStatus union + CaseResponse {id, reference, status} matching the backend DTO field-for-field (no invented fields; the list is a plain array, not paged; status is always sent since the backend requires it).
  • App route /compliance/cases + Sidebar Compliance entry.
  • 7 vitest tests (loading / rows / default-OPEN / status-switch-refetch / empty / error-retry / nav-active).

Decomposition note

This PR also decomposed E-08 #166 into child issues: #287 (this), #288 decision log viewer, #289 payments (7a backend list + 7b UI), #290 web packaging. F-08.4 OAuth2 PKCE is blocked by #236 (Keycloak); the sandbox uses a dev-bearer token. shadcn deferred.

Gate chain

  • critic: GO (API-ready, mirrors the proven accounts pattern).
  • security-auditor (opus): PASS - §5.3 clean, no PII/hardcoded data (all from API), status is a constrained enum (backend rejects out-of-enum 400), no committed secrets, SPDX, 5/5 ACs.
  • code-reviewer: status:string -> CaseStatus union + Pills Record adopted (matches the merged AccountResponse/TransactionResponse convention); the inline-style finding was declined - Cases.tsx mirrors the merged Accounts/Transactions screens verbatim, so it is a repo-wide style question, not this slice's to fork.
  • evaluator: PASS (0.865).
    Web gates green: lint 0 errors, typecheck, vitest 43 passed (7 new), build. No backend touched.

Closes #287

Add a read-only compliance case board to the sandbox dashboard. It lists
cases by status from GET /v1/compliance/cases, with a status filter that
defaults to OPEN and refetches on change, and the usual loading, empty
and error states with retry. The screen mirrors the accounts and
transactions screens: a TanStack Query hook over the shared api client, a
typed CaseResponse matching the backend contract, a status pill, and a
sidebar entry. All data comes from the API; no fields are invented.

Closes #287
@tiana-code tiana-code added this to the v0.4.0 milestone Jun 19, 2026
@tiana-code
tiana-code merged commit 245ecf5 into main Jun 19, 2026
9 checks passed
@tiana-code
tiana-code deleted the feat/E-08-compliance-case-board branch June 19, 2026 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sandbox UI: Compliance case board (Screen, read) on live GET /v1/compliance/cases

1 participant