This release turns shop-submission review into a durable workflow and adds timely email notifications for administrators and applicants.
- Store every shop request as a source-intake record with explicit review and validation states.
- Let administrators approve, reject, retry, and inspect notification delivery from the admin panel.
- Notify configured administrators when a request arrives and notify applicants when it is submitted, approved, rejected, validated, or published.
- Use Resend as the preferred production email provider while retaining SMTP for local Mailpit testing and fallback delivery.
- Deliver mail through a transactional outbox with idempotent processing and 1, 5, and 30 minute retry delays.
- Let LDXP crawler and pipeline jobs claim approved requests with a lease and report sanitized validation results.
- Run
scripts/migrate_shop_intake_v6.pybefore switching the API. The migration is idempotent and must first be exercised twice against a temporary PostgreSQL database. - Start the
notification-workerservice alongside the API. - Set a dedicated
INTAKE_WORKER_KEYthat differs fromADMIN_API_KEY. - Configure
SHOP_INTAKE_ADMIN_EMAILSand either:RESEND_API_KEYplus a verified-domainRESEND_FROM, orSMTP_HOSTplusSMTP_FROMand any required SMTP credentials.
- Replace the
re_xxxxxxxxxexample with a newly generated real Resend API key only in the production.env; never commit it to Git.
- Public catalog and pricing behavior are unchanged.
- Existing historical shop requests are converted by the v6 migration.
- No existing public pricing fields are removed.