docs: record notificaciones as built, flags global, schedules editable
The docs still described the state before the last five commits: the insurance spec called for a `@Cron` literal and a manual mark-as-sent mutation, PLAN.md had step 12 as "NOT STARTED", and README's module and route lists predated seven modules. - MASS_EMAIL_NOTIFICATIONS.md: new "Send flags", "API surface" and "Scheduled runs" sections; "Cron (future)" removed — it exists. The flags table says which flags apply where, and why a debug renewal send must skip both the RenewalNotice row and `lastSuccessfulAt`. - INSURANCE_FEATURES_SPEC.md: §1 BUILT note listing the three places the build diverged from the spec; §1.1 and §1.4 marked superseded in place rather than deleted, so the reasoning stays readable. - PLAN.md: step 12 renewal emails DONE with the divergences; status paragraph rewritten. - README.md: current module/route lists, plus a "Scheduled jobs" section — a reader cloning this repo had no way to know the API sends mail on a timer. - DEPLOY_AND_MIGRATIONS.md: the cadence lives in app_settings and survives an image rollback, and the servicios sweep has no multi-replica lock. - RESUME.md: session record for the whole notificaciones arc. - RENEWAL_NOTICES.md: pointer that this is the legacy record, not what shipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -325,3 +325,15 @@ backup does them (see `deploy/scripts/pre-migrate-backup.mjs`):
|
||||
- `bootstrap: true` lets the pre-migrate backup be skipped when no API container
|
||||
exists yet. Use it for a first-ever deploy only — it is the one switch that
|
||||
lets a migration run with no restore point.
|
||||
- **The API container sends mail on a timer.** Two sweeps run inside it
|
||||
(renewal avisos, on by default at 06:00 America/Tijuana; the servicios
|
||||
run-all, off by default) — see
|
||||
[`MASS_EMAIL_NOTIFICATIONS.md`](MASS_EMAIL_NOTIFICATIONS.md). Two
|
||||
consequences for deploys: the cadence lives in `app_settings`, so it
|
||||
**survives a redeploy and is not restored by rolling back an image**, and
|
||||
running more than one API replica would double-fire the servicios sweep,
|
||||
which has no DB lock (the pólizas one does). Keep it single-replica.
|
||||
- `SES_*` is optional to deploy — the preflight only warns — but the production
|
||||
image sets `NODE_ENV=production`, which disables the stdout dev fallback. A
|
||||
blank SES config therefore makes every send fail and log `FAILED`. As of
|
||||
2026-08-02 these secrets are still unset in Gitea.
|
||||
|
||||
Reference in New Issue
Block a user