fix(career): preserve reviewed profile values
Keep extraction heuristics out of manual save, version, and import paths so reviewed locations, URLs, dates, and languages round-trip unchanged.
This commit is contained in:
@@ -159,6 +159,17 @@ Existing read paths (CV rendering, tailoring, match-score, cover letters) read
|
||||
4. The eventual removal of the blob (once every reader is migrated to read relational) is a later
|
||||
phase and out of scope here.
|
||||
|
||||
### Reviewed-value persistence boundary (2026-08-15)
|
||||
|
||||
Extraction payloads continue through `StructuredCvProfileJson.Normalize`, which applies heuristics
|
||||
to reject parser noise and infer locations, URLs, roles, dates and languages. Once a profile reaches
|
||||
the editable Career surface, it is reviewed user data: `NormalizeForPersistence`,
|
||||
`SerializePersisted` and `DeserializePersisted` only trim/dedupe structural values and must not
|
||||
reinterpret them. This separation prevents a manual website path, free-form date or location such
|
||||
as "Remote across Europe" from changing on save, version restore, import merge or a legacy
|
||||
projection read. `CareerProfileValidator` rejects oversized reviewed values explicitly instead of
|
||||
silently discarding them.
|
||||
|
||||
This mirrors the additive, non-destructive philosophy of Phase 0/ADR-002: introduce the new model,
|
||||
keep the old surface working via a derived projection, flip readers later.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user