3.0 KiB
3.0 KiB
title, status, files, verification, observability_surfaces
| title | status | files | verification | observability_surfaces | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T02 summary | done |
|
|
|
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
job-tracker-ui/src/types.ts- added a typed
FollowUpDraftcontract aligned to the richer backend response
- added a typed
job-tracker-ui/src/components/JobDetailsDialog.tsx- switched the follow-up state to the shared typed DTO
- added a follow-up context panel showing thread subject, last sender, context summary, and context signals
- clarified the manual-send boundary directly in the recipient/body helper text
- kept the draft editable before send while making the send-and-log behavior explicit
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
Diagnostics
- Open the Follow-up tab in
job-tracker-ui/src/components/JobDetailsDialog.tsxand confirm the context panel rendersthreadSubject,contextSummary, andcontextSignalsfrom 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-followupafter the explicit button click. - Re-run
CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/job-details-followup-drafts.test.tsxafter changes to follow-up state wiring, helper text, or send/log payloads. - Re-run
CI=true npm --prefix job-tracker-ui run buildafter 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.