feat(S05/T01): Unified workflow trust signals across the API, table, da…
- JobTrackerApi/Controllers/JobApplicationsController.cs - JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs - job-tracker-ui/src/jobWorkflowSignals.ts - job-tracker-ui/src/components/JobTable.tsx - job-tracker-ui/src/components/DashboardView.tsx - job-tracker-ui/src/components/RemindersView.tsx - job-tracker-ui/src/workflow-trust-signals.test.tsx
This commit is contained in:
@@ -26,8 +26,21 @@ const pagedJobs = {
|
||||
needsFollowUp: true,
|
||||
followUpReason: 'Follow-up due soon',
|
||||
shortSummary: 'Strong backend match',
|
||||
tailoredCvText: null,
|
||||
notes: null,
|
||||
tailoredCvText: 'Saved CV',
|
||||
notes: 'Notes\n\n<<<APPLICATION_ANSWER_DRAFT>>>\nSaved answer\n<<<END_APPLICATION_ANSWER_DRAFT>>>',
|
||||
workflowSignal: {
|
||||
actionKey: 'follow-up',
|
||||
reason: 'Follow-up due soon',
|
||||
workspaceTab: 'follow-up',
|
||||
followMode: 'waiting-update',
|
||||
needsAttention: true,
|
||||
hasPackageGap: false,
|
||||
needsInterviewPrep: false,
|
||||
needsFollowUpAction: true,
|
||||
hasTailoredCv: true,
|
||||
hasSavedApplicationAnswerDraft: true,
|
||||
hasInterviewPrepNotes: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 43,
|
||||
@@ -42,6 +55,19 @@ const pagedJobs = {
|
||||
shortSummary: 'Platform work',
|
||||
tailoredCvText: null,
|
||||
notes: null,
|
||||
workflowSignal: {
|
||||
actionKey: 'package-work',
|
||||
reason: 'Tailored CV missing for this role.',
|
||||
workspaceTab: 'tailored-cv',
|
||||
followMode: null,
|
||||
needsAttention: true,
|
||||
hasPackageGap: true,
|
||||
needsInterviewPrep: false,
|
||||
needsFollowUpAction: false,
|
||||
hasTailoredCv: false,
|
||||
hasSavedApplicationAnswerDraft: false,
|
||||
hasInterviewPrepNotes: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
total: 2,
|
||||
@@ -61,6 +87,19 @@ const reminderItems = [
|
||||
followUpReason: 'Follow-up due soon',
|
||||
tailoredCvText: 'Saved CV',
|
||||
followUpAt: new Date().toISOString(),
|
||||
workflowSignal: {
|
||||
actionKey: 'follow-up',
|
||||
reason: 'Follow-up due soon',
|
||||
workspaceTab: 'follow-up',
|
||||
followMode: 'waiting-update',
|
||||
needsAttention: true,
|
||||
hasPackageGap: false,
|
||||
needsInterviewPrep: false,
|
||||
needsFollowUpAction: true,
|
||||
hasTailoredCv: true,
|
||||
hasSavedApplicationAnswerDraft: true,
|
||||
hasInterviewPrepNotes: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 43,
|
||||
@@ -73,6 +112,19 @@ const reminderItems = [
|
||||
followUpReason: 'Tailored CV missing',
|
||||
tailoredCvText: null,
|
||||
followUpAt: new Date().toISOString(),
|
||||
workflowSignal: {
|
||||
actionKey: 'package-work',
|
||||
reason: 'Tailored CV missing for this role.',
|
||||
workspaceTab: 'tailored-cv',
|
||||
followMode: null,
|
||||
needsAttention: true,
|
||||
hasPackageGap: true,
|
||||
needsInterviewPrep: false,
|
||||
needsFollowUpAction: true,
|
||||
hasTailoredCv: false,
|
||||
hasSavedApplicationAnswerDraft: false,
|
||||
hasInterviewPrepNotes: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -152,7 +204,7 @@ test('reminders open action routes tailored-cv gaps into the tailored cv workspa
|
||||
const platformJob = await screen.findByText(/platform engineer/i);
|
||||
const platformCard = platformJob.closest('.MuiPaper-root') ?? platformJob.parentElement?.parentElement;
|
||||
expect(platformCard).toBeTruthy();
|
||||
fireEvent.click(within(platformCard as HTMLElement).getByRole('button', { name: /open/i }));
|
||||
fireEvent.click(within(platformCard as HTMLElement).getByRole('button', { name: /build package/i }));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByTestId('location-indicator')).toHaveTextContent('/jobs');
|
||||
|
||||
Reference in New Issue
Block a user