Skip to content

Phase 8: Frontend -- submission scope complete - #19

Merged
withrvr merged 1 commit into
claude/erp-collection-reporting-workflow-iycqtofrom
phase/08-frontend
Aug 31, 2026
Merged

withrvr merged 1 commit into
claude/erp-collection-reporting-workflow-iycqtofrom
phase/08-frontend

Conversation

@withrvr

@withrvr withrvr commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Phase 8: Frontend

What this adds

Five routes (upload, runs, run-detail, exceptions, summary), no auth, built on the template's own shadcn/ui components. run-detail's timeline colors green/amber/red exactly per MASTER_PLAN.md section 7's design. exceptions joins Phase 7's explanations inline. summary renders the full blocked payload plus the LLM-rung source badge.

Assessment requirement served

MASTER_PLAN.md Phase 8 done-when: "someone who has never seen the terminal can upload a file and read every output." Verified in a real, unmocked headless Chromium against the actual Docker-served app -- not just a build passing. This is also the submission cut line -- MASTER_PLAN.md Phases 0-8 are now complete.

Docs updated

  • README.md - [x] ARCHITECTURE.md - [x] API.md (status only, no new endpoints)
  • RULES.md (no rule changes) - [x] DEVELOPMENT.md - [x] CHANGELOG.md

Verification

cd frontend && bun run build && bun run lint   # clean
cd backend && uv run pytest app/collections/tests -v   # 162 passed, unaffected

Manual: real headless Chromium against docker compose-served app -- upload dataset_a_original.xlsx -> BLOCKED run-detail with colored timeline -> exceptions table (cause/impact/fix/owner render) -> summary (block banner, narrative, region table). Zero console errors. Runs list confirmed showing both a BLOCKED and a PASSED run correctly.

Known gaps carried to next phase

  • No automated Playwright test suite for the frontend yet -- verified manually once; see docs/DEVELOPMENT.md for the reproduction steps.
  • Phases 9-13 (exports, multi-workbook, scheduler, observability, A/B compare) are presentation scope, not required for submission -- not started.

A reviewer who has never seen a terminal can now upload a workbook and
read every output: five routes (upload, runs, run-detail, exceptions,
summary), no auth (matching the API), the template's own shadcn/ui
components throughout, no new UI library.

- run-detail's timeline groups run_events by stage, colors each group
  green/amber/red by the worst level inside it -- MASTER_PLAN.md
  section 7's exact design ("Green through calculate, amber at control
  when the gate blocks, red on failure") -- expandable per stage to
  the raw events, never a JSON dump.
- exceptions joins each row's Phase 7 explanation inline
  (cause/impact/suggested-fix/owner), filterable by severity.
- summary renders the full "blocked payload" plus a badge naming
  which of the three LLM rungs produced the narrative.
- runId is a TanStack Router search param (zod-validated), not a path
  param -- route files stay flat, matching the Phase 0 scaffold's own
  names exactly.
- Client regenerated (scripts/generate-client.sh) against the current
  OpenAPI schema: CollectionsService now exists.

Verified end to end in a real, unmocked headless Chromium against the
actual Docker-served app -- upload dataset_a_original.xlsx, land on
its BLOCKED run-detail page, expand the timeline, click through to
exceptions and summary, zero console errors -- not just tsc/vite build
passing. Also verified a PASSED run (dataset B) renders correctly on
the runs list.

This closes out MASTER_PLAN.md's submission scope, Phases 0-8. Phases
9-13 are presentation-scope extras for the later live demo.

Refs: docs/ARCHITECTURE.md's frontend section, docs/DEVELOPMENT.md
@withrvr
withrvr merged commit 1ffbb58 into claude/erp-collection-reporting-workflow-iycqto Aug 31, 2026
2 of 6 checks passed
@withrvr
withrvr deleted the phase/08-frontend branch August 31, 2026 19:57
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.

1 participant