docs: consolidate repository guides and preserve audit history

This commit is contained in:
cesnimda
2026-09-11 14:22:41 +02:00
parent 115441a409
commit 682a3028bb
404 changed files with 3402 additions and 2621 deletions
+7 -7
View File
@@ -385,7 +385,7 @@ namespace JobTrackerApi.Data
modelBuilder.Entity<UserSession>()
.HasIndex(x => x.UserId);
// Career Workspace foundation (docs/career-workspace-implementation-roadmap.md Phase F1).
// Career Workspace foundation (docs/roadmap/todo.md).
// One CareerProfile per user for now -- see roadmap "Not now: multiple profiles per user".
modelBuilder.Entity<CareerProfile>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
@@ -412,7 +412,7 @@ namespace JobTrackerApi.Data
.OnDelete(DeleteBehavior.Cascade);
// Phase 3: relational children of CareerProfile (the editable master profile).
// docs/architecture/career-profile-model.md. Same deny-on-null tenant filter as everything
// docs/architecture/overview.md. Same deny-on-null tenant filter as everything
// else; cascade-delete with the parent; indexed by (OwnerUserId, CareerProfileId, SortOrder)
// for the ordered per-profile reads the /career editor does.
ConfigureCareerChild<CareerExperience>(modelBuilder);
@@ -470,7 +470,7 @@ namespace JobTrackerApi.Data
.OnDelete(DeleteBehavior.Cascade);
// Phase 4: CV variants (a lens over the master profile) + their autosave history.
// docs/architecture/cv-builder.md. Same deny-on-null tenant filter as everything else. A
// docs/architecture/overview.md. Same deny-on-null tenant filter as everything else. A
// variant references a job application (reference-not-ownership, SetNull on delete) and never
// owns career data. PublicSlug is globally unique so /cv/{slug} can resolve it anonymously.
modelBuilder.Entity<CvVariant>()
@@ -504,7 +504,7 @@ namespace JobTrackerApi.Data
// Phase 5: append-only AI interaction history per job application. Same deny-on-null tenant
// filter; indexed for the per-job history read; cascades with the application.
// docs/architecture/ai-career-assistant.md.
// docs/ai/architecture.md.
modelBuilder.Entity<AiInteraction>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
// varchar (not longtext) for the indexed columns — see the CvVariant note above.
@@ -532,7 +532,7 @@ namespace JobTrackerApi.Data
// Phase 5 Milestone 2: the application checklist — a workflow guidance layer over the existing
// readiness signals, not a second store of truth. Same deny-on-null tenant filter; cascades with
// the application. docs/architecture/application-workspace.md.
// the application. docs/architecture/overview.md.
modelBuilder.Entity<ApplicationChecklistItem>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
// varchar (not longtext) for the indexed columns — see the CvVariant note above.
@@ -557,7 +557,7 @@ namespace JobTrackerApi.Data
// Phase 5.4: append-only cover letter history. JobApplication.CoverLetterText stays the
// current text; this makes every previous state recoverable.
// docs/architecture/application-workspace.md.
// docs/architecture/overview.md.
modelBuilder.Entity<CoverLetterVersion>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
// varchar (not longtext) for the indexed columns — see the CvVariant note above.
@@ -600,7 +600,7 @@ namespace JobTrackerApi.Data
.OnDelete(DeleteBehavior.Cascade);
// Phase 5.5: user-owned interview preparation. Unlike InterviewPrepNote (an AI cache), nothing
// regenerates this. docs/architecture/application-workspace.md.
// regenerates this. docs/architecture/overview.md.
modelBuilder.Entity<InterviewPrepItem>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
// varchar (not longtext) for the indexed columns — see the CvVariant note above.