docs(architecture): mark Phase 3 career foundation shipped
CI and Deploy / test (push) Failing after 1m51s
CI and Deploy / deploy (push) Has been skipped

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
cesnimda
2026-07-18 01:03:40 +02:00
parent a1dd447091
commit 707d8c59d2
2 changed files with 30 additions and 1 deletions
+21
View File
@@ -7,6 +7,27 @@
> Companion to `docs/architecture/current.md` §4a (profile/career separation) and
> `docs/decisions/ADR-002-job-application-model.md`. Verified against code on 2026-07-18.
> ## Implementation status (2026-07-18) — SHIPPED
>
> The model below is implemented on `main` and verified against the live database:
> - **Entities** (`Models/CareerEntities.cs`): `CareerExperience`, `CareerEducation`, `CareerSkill`,
> `CareerProject`, `CareerCertification`, `CareerLanguage` — relational children of `CareerProfile`;
> long tail in `CareerProfile.LongTailJson`. Migration `AddCareerProfileRelationalChildren`
> (applied cleanly on the real dev DB and the running container).
> - **Projection** (`CareerProfileService` + `CareerProfileMapper`): relational is the source of
> truth; `SaveVersionAsync` syncs children + long tail; `LoadStructuredAsync` reads relationally
> with lazy backfill from the blob; the `ProfileCvStructureJson` blob is kept as the derived
> projection.
> - **API** (`CareerProfileController`, `/api/career/profile`): GET/PUT profile, GET completeness,
> GET versions, POST version restore. Validation via `CareerProfileValidator` (abuse limits).
> - **Frontend** (`/career`): reads/writes the relational API, profile-completeness overview,
> version-history restore.
> - **Tests**: 23 career-focused backend tests (round-trip, item-key stability, replace-all,
> backfill, completeness, validation, versioning/restore) + frontend save/completeness tests.
>
> Not yet done (later): promote the long tail to relational if needed; a full section-by-section UX
> redesign of the editor; the eventual removal of the derived blob once every reader flips.
---
## 1. Where we start (F1, on `main`)