feat(cv)!: queue durable processing
CI and Deploy / test (pull_request) Failing after 1m39s
CI and Deploy / deploy (pull_request) Has been skipped

CV upload now returns 202 with an owner-scoped operation instead of holding the request through parsing. Existing review approval remains required.

BREAKING CHANGE: profile-cv upload responses use the durable operation contract.
This commit is contained in:
cesnimda
2026-08-09 15:11:03 +02:00
parent 39e98049ea
commit c3c5af8329
9 changed files with 614 additions and 141 deletions
+31
View File
@@ -284,6 +284,37 @@ test('profile page can reprocess from stored artifact history', async () => {
});
});
test('profile page shows durable CV operation state and retries a failed run', async () => {
extractionRunsResponse = [{
id: 14,
trigger: 'upload',
status: 'queued',
artifactFileName: 'synthetic-cv.md',
startedAtUtc: '2026-03-28T12:00:00Z',
parserVersion: 'm005-s01',
normalizerVersion: 'm005-s01',
llmPromptVersion: 'm005-s01',
operation: {
id: '00000000-0000-0000-0000-000000000014',
taskType: 'cv.process',
status: 'failed',
subjectType: 'cv_extraction_run',
createdAtUtc: '2026-03-28T12:00:00Z',
failureCategory: 'provider_unavailable',
canCancel: false,
canRetry: true,
},
}];
renderPage();
expect(await screen.findByText('failed')).toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: /retry processing/i }));
await waitFor(() => {
expect(mockedApi.post).toHaveBeenCalledWith('/operations/00000000-0000-0000-0000-000000000014/retry');
});
});
test('profile page keeps raw extraction collapsed until expanded', async () => {
renderPage();