Complete S03 runtime closure and S04 control loop

This commit is contained in:
2026-03-24 11:33:55 +01:00
parent 0cacb4e51b
commit 8890906231
17 changed files with 588 additions and 74 deletions
@@ -0,0 +1,34 @@
---
title: S03 summary
status: done
verification:
- $HOME/.dotnet/dotnet build JobTrackerApi/JobTrackerApi.csproj
- docker run --rm -v "$PWD":/src -w /src mcr.microsoft.com/dotnet/sdk:9.0 bash -lc '...dotnet test /tmp/followuptests/FollowUpTests.csproj...'
- 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
- Browser UAT on built branch UI via localhost:3001 against localhost:5202
---
S03 turned follow-up drafting into a real thread-aware workspace flow.
Delivered:
- stronger backend follow-up draft context in `JobTrackerApi/Controllers/JobApplicationsController.cs`
- imported correspondence, recruiter details, saved package material, and saved application-answer content now inform the follow-up draft
- follow-up responses expose context summary, context signals, thread subject, and last-correspondence metadata for the workspace
- reply-style subjects now reuse the active thread where available
- focused backend proof in `JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs`
- verifies the follow-up draft reacts to imported thread and saved package state
- stronger Follow-up tab in `job-tracker-ui/src/components/JobDetailsDialog.tsx`
- surfaces why the draft exists now
- shows thread/package grounding explicitly
- keeps manual-send behavior clear and editable
- focused frontend proof in `job-tracker-ui/src/job-details-followup-drafts.test.tsx`
- verifies thread grounding, editable draft state, and manual send/log behavior
- runtime browser proof
- built branch UI served locally on `localhost:3001`
- logged into the local app, opened the seeded job, verified the Follow-up tab showed thread/package grounding, sent a manual follow-up, and confirmed it logged back into Correspondence
Net effect:
- imported correspondence and saved package material now feed useful follow-up drafting instead of sitting in separate surfaces
- the manual-send boundary remains intact
- the job workspace can now carry the user from imported thread context to reviewed draft to logged outbound follow-up