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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user