fix: close release preflight gaps
Route public health checks to the API, backfill and synchronize job opportunities, stabilize SPA smoke tests, and document operator-only production steps.
This commit is contained in:
@@ -50,6 +50,10 @@ Split `Job` from `JobApplication`, **additively and in stages**. Phase 0 lays th
|
||||
|
||||
This keeps Phase 0 a pure schema-and-vocabulary change with **zero behavioural change** to existing workflows, which is what "unblock future phases safely" requires.
|
||||
|
||||
### Phase 1 status (2026-07-31)
|
||||
|
||||
Create and update paths now synchronize `Job`, and startup idempotently backfills a linked `Job` for every legacy application missing one. Reads and legacy columns remain unchanged until the production validation and observation release in `docs/operations/job-opportunity-cutover.md` complete.
|
||||
|
||||
### The invariant
|
||||
|
||||
> `DateApplied` is set **if and only if** the job has left the pre-application stages.
|
||||
@@ -94,8 +98,8 @@ EF emits a warning that the `SavedAt` backfill `UPDATE` runs while a rebuild of
|
||||
|
||||
## Phase 1 cutover plan
|
||||
|
||||
1. Dual-write `Job` on every create path (`JobApplicationsController.Create`, `GmailController`'s job creation, CSV import).
|
||||
2. Backfill one `Job` per existing `JobApplication`; link via `JobId`.
|
||||
1. **Done:** dual-write `Job` on every persistence path (`JobApplicationsController` and Gmail suggestion creation; CSV import is preview-only).
|
||||
2. **Done:** backfill one `Job` per existing `JobApplication`; link via `JobId`.
|
||||
3. Flip reads to `Job`, one endpoint at a time.
|
||||
4. Drop the duplicated opportunity columns from `JobApplication`.
|
||||
5. Make `JobId` non-nullable.
|
||||
|
||||
Reference in New Issue
Block a user