Complete S03 runtime closure and S04 control loop
This commit is contained in:
@@ -7,9 +7,9 @@ S03 directly owns active requirements **R004**, **R007**, and **R008**. The main
|
||||
|
||||
## Must-Haves
|
||||
|
||||
- Follow-up draft generation in `JobTrackerApi/Controllers/JobApplicationsController.cs` uses imported correspondence, recruiter details, and saved application package material deliberately enough that the draft responds to the real thread stage instead of generic reminders.
|
||||
- The job workspace in `job-tracker-ui/src/components/JobDetailsDialog.tsx` presents follow-up drafting as job-tied working context, including visible thread/package grounding and editable draft state before manual send.
|
||||
- The slice preserves the explicit manual-send boundary: the app may draft and log what was sent, but it must not auto-send or silently dispatch anything.
|
||||
- [x] Follow-up draft generation in `JobTrackerApi/Controllers/JobApplicationsController.cs` uses imported correspondence, recruiter details, and saved application package material deliberately enough that the draft responds to the real thread stage instead of generic reminders.
|
||||
- [x] The job workspace in `job-tracker-ui/src/components/JobDetailsDialog.tsx` presents follow-up drafting as job-tied working context, including visible thread/package grounding and editable draft state before manual send.
|
||||
- [x] The slice preserves the explicit manual-send boundary: the app may draft and log what was sent, but it must not auto-send or silently dispatch anything.
|
||||
|
||||
## Proof Level
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user