Problem`rateAlertStore` holds alerts in memory only (flagged as a bug); this feature adds backend-backed alerts with delivery. Solution - Add `/api/rate-alerts` CRUD and persist alerts server-side per merchant. - Deliver triggered alerts via email/webhook/in-app notification (feature #38) with dedupe. - Add alert condition UI (above/below, one-time/recurring, time window). - Reconcile the client `rateAlertStore` with the server list on boot. Acceptance Criteria - Alerts survive reload and are restored from the backend. - A triggered alert delivers via the chosen channel once. - One-time alerts deactivate after firing. - `npm run build` passes. Note for Contributors: Write a clear PR description. Set an alert, trigger it, and show delivery.
Problem
rateAlertStoreholds alerts in memory only (flagged as a bug); this feature adds backend-backed alerts with delivery.Solution
/api/rate-alertsCRUD and persist alerts server-side per merchant.useCallbackfor event handlers in dashboard and settings #38) with dedupe.rateAlertStorewith the server list on boot.Acceptance Criteria
npm run buildpasses.Note for Contributors: Write a clear PR description. Set an alert, trigger it, and show delivery.