chore(M001/S01): auto-commit after state-rebuild
This commit is contained in:
@@ -39,13 +39,13 @@ S01 still owns active requirement **R002** and materially supports **R010**. The
|
||||
|
||||
## Tasks
|
||||
|
||||
- [ ] **T01: Add linked Gmail thread refresh to the backend contract** `est:4h`
|
||||
- [x] **T01: Add linked Gmail thread refresh to the backend contract** `est:4h`
|
||||
- Why: R002 is still unmet until the app can turn a one-time import into continuing thread history for the same job.
|
||||
- Files: `JobTrackerApi/Controllers/GmailController.cs`, `JobTrackerApi/Services/GmailOAuthService.cs`, `JobTrackerApi.Tests/GmailControllerTests.cs`, `JobTrackerApi/Program.cs`
|
||||
- Do: Add a job-scoped refresh path that reads already-linked `ExternalThreadId` values for one owned job, fetches messages for those known Gmail threads, imports only unseen message ids into the same job, updates refresh timestamps/status, and exposes a clear duplicate-safe result contract. Follow D008: use bounded refresh over known imported thread ids rather than inbox-wide Gmail watch/history infrastructure.
|
||||
- Verify: `dotnet test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --filter GmailControllerTests`
|
||||
- Done when: the API can refresh linked Gmail threads for one job, import new inbound or sent replies without duplicate re-imports, and tests prove success, duplicate-only, disconnected, and invalid-job cases.
|
||||
- [ ] **T02: Surface live Gmail thread continuity in the job workspace** `est:3h`
|
||||
- [x] **T02: Surface live Gmail thread continuity in the job workspace** `est:3h`
|
||||
- Why: The slice is only complete when the user can see the linked thread stay current inside the real `Correspondence` workspace flow.
|
||||
- Files: `job-tracker-ui/src/components/Correspondence.tsx`, `job-tracker-ui/src/types.ts`, `job-tracker-ui/src/correspondence-gmail-import.test.tsx`, `job-tracker-ui/src/components/JobDetailsDialog.tsx`
|
||||
- Do: Wire the workspace to call the new linked-thread refresh contract automatically when appropriate for already-linked threads, show refresh/loading/freshness state in the Gmail area and correspondence list, and prove in the React test that a newly synced Gmail reply appears on the job without using the import action again.
|
||||
|
||||
Reference in New Issue
Block a user