feat: complete release readiness work

- consolidate API ownership and remove dead vendor code

- add Stripe billing, learning paths, and public CV hardening

- add migration, recovery, security, audit, and browser gates
This commit is contained in:
cesnimda
2026-07-31 16:54:16 +02:00
parent a23c3dfc97
commit ce76046a29
1634 changed files with 6889 additions and 135429 deletions
+4 -4
View File
@@ -51,7 +51,7 @@ The backend side is one place — all seven call sites route through the named `
### Priority 3 — Introduce Job separate from JobApplication ✅ (foundation)
`Job` (`Models/Job.cs`) is the opportunity; `JobApplication` is the pursuit of it. `JobApplication.JobId` is a nullable FK (`OnDelete: SetNull`). `Job` carries the same deny-on-null tenant query filter as every other owned entity.
`Job` (`JobTrackerApi/Models/Job.cs`) is the opportunity; `JobApplication` is the pursuit of it. `JobApplication.JobId` is a nullable FK (`OnDelete: SetNull`). `Job` carries the same deny-on-null tenant query filter as every other owned entity.
**Deliberately additive: nothing reads or writes `Job` yet**, no dual-write, no backfill, no legacy columns dropped. That keeps Priority 3 a pure schema change with zero behavioural risk, which is what "unblock future phases safely" asks for. The Phase 1 cutover plan (dual-write → backfill → flip reads → drop columns) is in ADR-002.
@@ -80,9 +80,9 @@ The supporting change: **`DateApplied` is now nullable**, with `SavedAt` added.
## 2. Files changed
**Backend**
- `Models/Job.cs` *(new)* — the opportunity entity
- `Models/JobApplication.cs``JobId`, `SavedAt`, nullable `DateApplied`, `DaysSince``int?`
- `Data/JobTrackerContext.cs``Jobs` DbSet, tenant filter, FK config, index
- `JobTrackerApi/Models/Job.cs` *(new)* — the opportunity entity
- `JobTrackerApi/Models/JobApplication.cs``JobId`, `SavedAt`, nullable `DateApplied`, `DaysSince``int?`
- `JobTrackerApi/Data/JobTrackerContext.cs``Jobs` DbSet, tenant filter, FK config, index
- `JobTrackerApi/Services/JobPipeline.cs``Prospect` category, 3 stages, `IsProspect`, `SyncAppliedDate`
- `JobTrackerApi/Services/RulesEngine.cs` — prospect guard + null-`DateApplied` fail-safe
- `JobTrackerApi/Services/AnalyticsService.cs` — exclude prospects from applied-volume, average age, response-time; `SavedAt` fallback for stage entry