Skip to content

feat(frontend): show stored failure reasons in the Migrated files Preview (M3c, #107) - #139

Merged
amar-python merged 1 commit into
mainfrom
feat/107-m3c-frontend
Oct 28, 2026
Merged

amar-python merged 1 commit into
mainfrom
feat/107-m3c-frontend

Conversation

@amar-python

Copy link
Copy Markdown
Owner

Refs #107. Part M3c of ART Milestone 3, frontend side. This is stacked on #138, which stores the reasons on the server. Merge #138 first; this PR's base then moves to main.

What it does

Verification

Check Result
vitest 14 files, 143 tests passed, 2 of them new (stored-row-errors.test.tsx)
tsc --noEmit 0 errors
eslint on the new test and csv.functions.ts 0 problems
Production build (node-server) Built
End to end API (PostgreSQL 16, this stack) and the production frontend, run as a throwaway tenant admin. A CSV with 1 of 3 rows failing was uploaded through the API. A fresh browser context, with no local import history, signed in, opened Preview, and showed "x" is not a whole number for row 2, column n, plus the Error report button. There were 0 page errors

I broke the component to check that the test catches it: with the reason column rendering the column name instead, the test failed (1 failed, 1 passed).

Not in this PR: needs the product owner's call

The #107 scope note also says "include them in audit reports". The audit report today is the Import history page. That page is built entirely from the uploading browser's local storage, so another user's uploads aren't there to report on. There are two ways to close this:

  • (a) Move Import history and its exports onto the server's GET /api/csv/uploads now, as an extra M3 part.
  • (b) Leave it to M7's "filtered audit reports" (BR-35), which rebuilds reporting on server data anyway.

My recommendation is (b): M7 replaces that page's data source, so doing it in M3 would be done twice.


Generated by Claude Code

…view (M3c, #107)

When a migrated file has failed rows, its Preview now loads the reasons
from GET /api/csv/uploads/{id} and lists them, with an error report
download. They come from the server, so any user in the tenant sees
them, not only the browser that uploaded the file.

vitest 143 passed (2 new); tsc 0; production build OK. End to end in
Chromium with a fresh browser: the stored reason is shown, 0 page errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019YPoXzBSj89ZHgw7nfTmbB
@amar-python
amar-python changed the base branch from feat/107-m3b-source-preserved to main October 28, 2026 01:48
@amar-python
amar-python merged commit adbd34f into main Oct 28, 2026
3 checks passed
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.

2 participants