chore(M001/S03): auto-commit after complete-slice

This commit is contained in:
2026-03-24 12:40:09 +01:00
parent 406a1c15c7
commit ac1832ea04
11 changed files with 258 additions and 48 deletions
@@ -8,11 +8,17 @@ files:
verification:
- CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/job-details-followup-drafts.test.tsx
- CI=true npm --prefix job-tracker-ui run build
observability_surfaces:
- job-tracker-ui/src/components/JobDetailsDialog.tsx (Follow-up tab)
- job-tracker-ui/src/job-details-followup-drafts.test.tsx
- GET /api/jobapplications/{id}/followup-draft
- POST /api/jobapplications/{id}/send-followup
---
Refined the Follow-up tab so it exposes the thread and saved-package grounding behind the draft instead of behaving like a generic email form.
What changed:
## What changed
- `job-tracker-ui/src/types.ts`
- added a typed `FollowUpDraft` contract aligned to the richer backend response
- `job-tracker-ui/src/components/JobDetailsDialog.tsx`
@@ -23,9 +29,20 @@ What changed:
- `job-tracker-ui/src/job-details-followup-drafts.test.tsx`
- added focused frontend proof that the Follow-up tab shows thread grounding, keeps sending manual, and posts the edited draft through the send/log endpoint
Verification:
- Focused follow-up workspace test passed: `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/job-details-followup-drafts.test.tsx`
- Production frontend build passed: `CI=true npm --prefix job-tracker-ui run build`
## Diagnostics
Runtime note:
- Browser-based local UAT against this worktree was attempted but blocked by environment issues: port 3000 is served by an external nginx bundle unrelated to this worktree, the CRA dev server crashed under Node 25 in `fork-ts-checker`, and the browser harness did not successfully execute the locally served static bundle. Automated verification for the implemented code paths still passed.
- Open the Follow-up tab in `job-tracker-ui/src/components/JobDetailsDialog.tsx` and confirm the context panel renders `threadSubject`, `contextSummary`, and `contextSignals` from the backend instead of showing only a blank compose form.
- Edit the generated body before pressing **Send and log email**; the UI should preserve the edited body and only call `POST /api/jobapplications/{id}/send-followup` after the explicit button click.
- Re-run `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/job-details-followup-drafts.test.tsx` after changes to follow-up state wiring, helper text, or send/log payloads.
- Re-run `CI=true npm --prefix job-tracker-ui run build` after UI changes to catch contract drift or production-only compilation regressions.
## Verification Evidence
| Check | Command | Exit code | Verdict | Duration |
|---|---|---:|---|---|
| Focused follow-up workspace test | `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/job-details-followup-drafts.test.tsx` | 0 | PASS | 00:00:02 |
| Production frontend build | `CI=true npm --prefix job-tracker-ui run build` | 0 | PASS | 00:00:24 |
## Runtime note
- Earlier local browser UAT was blocked by an unrelated port-3000 nginx bundle and a CRA dev-server crash under Node 25. The production build and focused follow-up UI test both passed during closeout, so the durable verification path for this task is the filtered React test plus the build output rather than the old dev-server attempt.