SRS: UC_4.12.4 — Notification Center (LIVE)
| Field | Value |
|---|
| BA in Charge | Trang Nguyen |
| Date Created | 2026-08-12 |
| Version | v1.1 |
| Document References | RFQ_ Website and Dashboard Implementation V7.pdf L667-671 (Notification Center filtering engine) · Zapier Integration V7.pdf (Flow 4 — Promotion · Flow 4B — Drawdown Defense Activated · Flow 5 — Payouts · Flow 7 — Account Failed/Terminated · Flow 10 — Pod Leader Match · Flow 22 — Monthly Data Fee Billing) ·docs/BA/UC_4.1-4.17/dashboard_live/UC_4.12.4/QnA_init_docs.md (QN-4.12.4-01..05) · UC_4.7.1 / UC_4.7.2 / UC_4.7.3 (SIM siblings — UI/UX pattern reused 100%) · [CHR-54] (new "Billings & Subscriptions" category) |
| Field | Content |
|---|
| ID | UC_4.12.4 |
| Use Case | Notification Center (LIVE) |
| Description | The notification bell, unread badge, dropdown panel, filters, and paginated history — same UI/UX component as the SIM siblings (UC_4.7.1 bell/badge/panel-toggle, UC_4.7.2 filters, UC_4.7.3 list/pagination/mark-as-read) — reused 100% unchanged (Ref: QN-4.12.4-02). This UC does not re-describe that UI/UX; it links to the SIM UCs for all display/interaction behavior and documents only what differs on LIVE: the concrete backend event mapping (with per-trigger message pattern) that feeds user_notifications/NOTIFICATION for the 4 categories SIM left unconfirmed/incomplete (Level Events, Payout Events, Mentor/Community Prompts — including the 72h Trading Plan SLA warning/breach, confirmed as part of Mentor/Community Prompts — and Billings & Subscriptions 🆕[CHR-54]) (Ref: BR_4.12.4.1). |
| Zapier Flow | Flow 4 (Promotion) · Flow 4B (Drawdown Defense Activated) · Flow 5 (Payouts) · Flow 7 (Account Failed/Terminated) · Flow 10 (Pod Leader Match) · Flow 22 (Monthly Data Fee Billing 🆕[CHR-54]) |
| Zapier Table | — |
| 3rd Party | — |
References/Wireframe/Stage 2/Dashboard/ — shared bell/badge/panel wireframe with SIM (Ref: UC_4.7.1 §1); no LIVE-specific wireframe variant identified for the 72h SLA WARN/CRITICAL notification card (filed under Mentor/Community Prompts, Ref: BR_4.12.4.1).
- Any of the backend events mapped in BR_4.12.4.1 fires — the Node.js middleware inserts a record into
user_notifications and simultaneously pushes the NOTIFICATION WebSocket payload (Source: BA verbatim, QN-4.12.4-01).
- User opens the notification panel — same trigger mechanism as SIM (Ref: UC_4.7.1 §2).
- User is on the Dashboard, account type LIVE, per the persistent header (Ref: UC_4.1.1).
- The bell badge, dropdown panel, and history list reflect the current set of
user_notifications records for the user, including any records inserted by the LIVE-specific event mapping in BR_4.12.4.1. UI/UX behavior (badge count, filters, mark-as-read, pagination, empty state) matches SIM exactly (Ref: BR_4.12.4.2).
- On Dashboard load, frontend calls
GET /notifications for the initial list — same mechanism as SIM, initial-load-only, real-time updates arrive via WS push (Ref: BR_4.12.4.3).
- [When a backend event in BR_4.12.4.1 fires] middleware inserts into
user_notifications and pushes the NOTIFICATION WS payload; frontend store updates immediately (Ref: BR_4.12.4.1, BR_4.12.4.3).
- User interacts with the bell/badge/panel/filters/list/mark-as-read — identical flow to SIM; not repeated here (Ref: UC_4.7.1 §5, UC_4.7.2 §5, UC_4.7.3 §5).
- None beyond the boundary cases already covered by the SIM siblings (UC_4.7.1, UC_4.7.2, UC_4.7.3), which apply unchanged to LIVE.
- WebSocket/API connection drops: the panel retains its last-known notification list (stale data) while the client applies exponential backoff and automatically reconnects, per CR-14 (Ref: BR_4.12.4.3) .
- All other exceptional flows (empty state, no severity visual treatment, click-row behavior) — same as SIM, Ref: UC_4.7.3 §Exceptional Flow — not repeated here.
| Category | Trigger condition | Message Pattern | severity |
|---|
| Level Events | Flow 4A:Net_PnL >= Profit_Target (Promotion) | "Promotion unlocked. You are now Level[Next_Level]." | INFO |
| Level Events | Flow 4B:Net_PnL <= Market_Stop_Loss, Defense_used = false (Drawdown Defense Activated) | "Drawdown Defense activated. Your account is locked for a mandatory 48-hour cooling-off period." | CRITICAL |
| Level Events | Flow 7A: Account Failed/Terminated — max drawdown reached,Defense_Used = True, resignation = true | "Account terminated. Trading access has been revoked." | CRITICAL |
| Payout Events | Flow 5 — transaction clears and the Immutable Ledger is updated | "Your payout of $[Payout_Amount] has cleared." | INFO |
| Mentor/Community Prompts | Flow 10 — user is successfully matched with a Pod Leader | "You have been matched with Pod Leader [Leader_Name]. Your 72-hour Trading Plan window has started." | INFO |
| Mentor/Community Prompts | 72-hour Trading Plan SLA drops to 24 hours remaining | "Action Required. Your Trading Plan is due in 24 hours." | WARN |
| Mentor/Community Prompts | 72-hour Trading Plan SLA is officially missed | "Compliance Breach. Your Trading Plan submission deadline has passed." | CRITICAL |
Billings & Subscriptions 🆕[CHR-54] | Flow 22 — the recurring charge fails (Payment Failure Warning) | "Market Data payment failed. Please update your billing method to avoid service interruption." | WARN |
Billings & Subscriptions 🆕[CHR-54] | Flow 22 — End of Month Hard Check executes the downgrade | "Market Data downgraded due to unpaid balance. Additional exchange feeds have been disabled." | CRITICAL |
All display and interaction behavior — badge count (filter-independent), category filter (multi-select, default "All"), status tab (All/Unread), date range filter (AND-combined), page list, mark-as-read (individual hover or bulk "Mark as read"), empty state, no severity visual treatment, click-row = expand/collapse only — is reused unchanged from the SIM siblings and is not repeated here:
- Bell, badge, panel toggle — Ref: UC_4.7.1.
- Filters (status/category/date) — Ref: UC_4.7.2.
- List, pagination, mark-as-read, empty state — Ref: UC_4.7.3.
WS push (NOTIFICATION event) updates the frontend store immediately; GET /notifications is used only for the initial load at mount time — identical mechanism to SIM. Because this is a WS-fed widget, CR-14 (WS Reconnection Resiliency) applies — resolved via research, no separate BA answer needed (Ref: QN-4.12.4-04).
Page size is 10 records per page, with infinite scroll — no visible pagination controls, no page-size selector, no Previous/Next, no "Showing X-Y of Z".
| No. | Field Name | Field Type | Displaying rule / Behaviour rule |
|---|
| 1 | Notification bell + badge | Icon + Badge | Displaying rule:- Same as SIM — Ref: UC_4.7.1 §9 Screen Description. Badge count reflects user_notifications including LIVE event mapping (Ref: BR_4.12.4.1). |
| 2 | Filter bar (status/category/date) | — | Displaying rule:- Same as SIM — Ref: UC_4.7.2 §9 Screen Description. Category options: 6 (5 per A-13, plus Billings & Subscriptions 🆕[CHR-54]); the 72h SLA warning/breach triggers are filed under Mentor/Community Prompts, not a separate category (Ref: BR_4.12.4.1). |
| 3 | Notification list + pagination | List | Displaying rule:- Same as SIM — Ref: UC_4.7.3 §9 Screen Description. Page size 10, infinite scroll (Ref: BR_4.12.4.4).Behaviour rule:- Mark-as-read (hover individual / bulk "Mark as read") — same as SIM. |
| Date | Version | Updated item | Before | After | Notes |
|---|
| 2026-08-22 | v1 → v1.1 | CR_ID citation (L9, 23, 24, 87, 88, 119 — 6 occurrences) | CR-20260817-001 (+ dead link to References/CR/2026-08-17_billing-subscriptions-notification-category/CR_summary.md) | [CHR-54] (REPLACE hoàn toàn, không giữ mã cũ) + corrected link to References/CR/2026-08-17_CR54_billing-subscriptions-notification-category/CR_summary.md | BA confirmed 2026-08-22: doc cited stale pre-renumbering ID CR-20260817-001 (that ID now belongs to the FAQ CR, unrelated) instead of the corrected CR-20260817-003 (Billings & Subscriptions notification, CHR-54) — per CR_summary.md's own audit note, all citations for this topic should use the renumbered ID. v4 Change Plan row A25 was based on the stale literal string and would have applied [CHR-56] (FAQ) — overridden per BA decision |