test(cv-qa): reconcile acceptance and hand off conditional readiness

This commit is contained in:
cesnimda
2026-10-27 05:25:47 +01:00
parent 2fdcb60fa9
commit 4a8c907d70
10 changed files with 1827 additions and 14 deletions
@@ -24,7 +24,7 @@ flowchart LR
D --> J[ApplicationAssetsService / frozen application package]
```
`CvDocumentReview`/`CvImportReview` currently expose only nonempty incoming typed leaves. `add` means accepting an emitted field; it cannot create missing fields/records. New extracted records are already appended, but missing-record authoring, explicit target selection and source assignment are absent. `CvDocumentInterpreter` handles positional pipe rows and section lists; later undelimited lines can be wrongly attached to the last global record. Transport discards Docling hierarchy/geometry/table cells, so the order of two unlabeled text lines cannot prove employer versus title. Ground currently selects the first document-wide substring, losing repeated-occurrence association.
**Historical entry findings (before remediation):** `CvDocumentReview`/`CvImportReview` exposed only nonempty incoming typed leaves. `add` meant accepting an emitted field; it could not create missing fields/records. New extracted records were already appended, but missing-record authoring, explicit target selection and source assignment were absent. `CvDocumentInterpreter` handled positional pipe rows and section lists; later undelimited lines could be wrongly attached to the last global record. Transport discarded Docling hierarchy/geometry/table cells, so the order of two unlabeled text lines could not prove employer versus title. Ground selected the first document-wide substring, losing repeated-occurrence association. Current remediations and remaining limits are documented in CAREER_PROFILE_MAPPING.md and EXTRACTION_ACCURACY.md; the entry matrix below remains historical rather than being silently rewritten.
Canonical writes remain `CareerProfileService.ExecuteAtomicAsync/SaveVersionAsync`, `CareerProfileMapper` and `CareerProfileValidator`. CV documents/settings/overrides/history retain `CvVariantService`, existing resolver/editor and physical renderers. Letter/application revisions remain `JobApplication.Version`/`ApplicationAssetsService`. No second profile, queue, revision or renderer is proposed.
@@ -66,6 +66,21 @@ Each row follows source → interpreted field → generic emitted-field review
| Experience duration, new skill-category/proficiency entities | none | no corresponding canonical contract | Unsupported by design; preserve source in custom/detail instead |
| AI interpretations / OCR/layout model results | none active | disabled/disconnected seam | Blocked by external qualification; no real CV-model evidence |
## Current supported-document boundary (27 October addendum)
Pinned extraction remains `docling-slim==2.142.1`, `docling-core==2.104.0`, `docling-parse==7.23.0` in the isolated hash-locked import runtime; no new dependency/model download was required for QA. Real document conversion is separate from generative interpretation.
| Input | Qualified behavior and limit |
|---|---|
| Text PDF, single/multi-page | Actual local text/block/page extraction. Explicit semantic labels and supported pipe grammar can form records; complex columns/tables can require source mapping. Full arbitrary-layout semantic accuracy is not qualified. |
| DOCX paragraphs/headings/lists/header-defined tables | Actual structured extraction and deterministic labelled records; page numbers remain unknown and excerpts are shown. Frozen labelled cases passed; headerless relationships can remain unresolved. |
| Genuinely ambiguous employer/title or institution/qualification | Preserve visible source; user chooses fields and new/existing destination. No relationship guessed from capitalization or employer dictionaries. Legacy headerless pipe order remains an explicit compatibility limitation. |
| Scanned/image-only PDF | OCR disabled in qualified import configuration; unsupported/unreadable outcome is explicit. No scan-accuracy claim. |
| Active/malformed/oversized/archive-bomb documents | Reject under bounded security rules rather than claim extraction support. |
| Other legacy file types | Existing older importer retains its supported path; this QA does not qualify them as Docling PDF/DOCX workflow. |
No real CV-model inference was run. Model adapter contracts/synthetic responses establish integration seams only. Partial deterministic recall and open human/device/security/release qualifications remain independent.
## Preservation impact
All 57 groups / 33 routes remain in scope; no historical status is upgraded by this audit. Direct changes: PRES-C01/C02/C03 (canonical/import), C05–C10/C12 (consumption/overrides/history/rendering), W05/W06/W07/W12 (associations/letters/frozen/progress), E05/E07/E08/E09 (draft/keyboard/access/ownership), S04/S05 (privacy/portability). Other groups remain regression coverage. No route removal or cleanup. See the dated Phase 9 preservation addendum and final checkpoint reconciliation.