SRS: UC_4.7.3 — Notification Center: View All History
| Field | Value |
|---|---|
| BA in Charge | Trang Nguyen |
| Date Created | 2026-08-08 |
| Version | v1 |
| Document References | docs/BA/Common_rule/notification_center_matrix.md §1 (API surface — GET /notifications, POST /notifications/mark-read) · docs/BA/UC_4.1-4.17/dashboard_sim/UC_4.7.3/QnA_init_docs.md (QN-4.7.3-01..05) |
UC_4.7.3 — Notification Center: View All History
1. Overview
| Field | Content |
|---|---|
| ID | UC_4.7.3 |
| Use Case | Notification Center: View All History |
| Description | The full notification history rendered inside the dropdown panel opened by clicking the bell icon (Ref: UC_4.7.1). There is no separate "View All" page — the dropdown panel itself is this full history list, not a capped preview. Records load 10 per page per CR-06, but pagination is hidden from the user — the system auto-loads the next page as the user scrolls (infinite scroll), with no visible Previous/Next controls or page-count display (Ref: BR_4.7.3.1). Reuses the same filter dimensions/combination rule as UC_4.7.2. Owns: pagination/infinite-scroll loading, mark-as-read mechanics (individual via hover, bulk via a single button), the empty state, and row expand/collapse. |
| Zapier Flow | — |
| Zapier Table | — |
| 3rd Party | — |
[BLOCKED — pending design] No dedicated wireframe/Figma found for the full list content specifically; see the dropdown panel screenshots referenced in UC_4.7.1; mapping_design in WBS is empty for this UC.
2. Trigger
- User clicks the bell icon (Ref: UC_4.7.1) → dropdown panel opens, rendering this UC's list at page 1.
- User hovers over an unread notification row, or clicks the "Mark as read" button.
- User clicks a notification row to expand/collapse it.
3. Pre-conditions
- User is authenticated and on the Dashboard.
- The notification dropdown panel is open (Ref: UC_4.7.1).
- Applies to both SIM and LIVE account types — the list/pagination/mark-as-read UI is the same shared panel content regardless of account type.
4. Post-conditions
- The dropdown panel shows the first 10 notifications (Ref: CR-06), filtered/sorted per the active filters (Ref: UC_4.7.2). No pagination controls are visible; more records load automatically as the user scrolls (Ref: BR_4.7.3.1).
- Any notification marked read (individually or in bulk) has
is_read = trueand no longer counts toward the bell badge (Ref: UC_4.7.1 BR_4.7.1.3).
5. Basic Flow
- User clicks the bell icon → dropdown panel opens (Ref: UC_4.7.1).
- Frontend calls
GET /notificationswithpage=1,page_size=10(Ref: CR-06), and default filters (Ref: UC_4.7.2). - Panel renders the notification list (10 rows), the filter controls (Ref: UC_4.7.2), and a "Mark as read" button. No pagination controls are rendered (Ref: BR_4.7.3.1).
- [If no notifications exist for the current filter/account] → panel renders the empty state (Ref: BR_4.7.3.3).
- User hovers over an unread row → that row is marked read individually (Ref: BR_4.7.3.2); bell badge decrements by 1 (Ref: UC_4.7.1 BR_4.7.1.3).
- User clicks the "Mark as read" button → every currently-listed unread notification is marked read (Ref: BR_4.7.3.2); bell badge decrements accordingly.
- User clicks a notification row → row expands to show additional detail content for that notification; clicking again collapses it (Ref: BR_4.7.3.4).
- User scrolls to the bottom of the currently-loaded rows → frontend automatically re-calls
GET /notificationswithpageincremented by 1, same active filters andpage_size=10, and appends the results to the list (Ref: BR_4.7.3.1). No user-visible pagination action is involved.
6. Alternative Flow
- [If the user has never received any notification] → empty state renders with copy "Your feed is clear" (Ref: BR_4.7.3.3).
7. Exceptional Flow
- None specific to this UC beyond standard API-failure handling (retry/error toast per shared dashboard conventions).
8. Business Rules
BR_4.7.3.1: Pagination — 10 Items Per Page, Hidden Behind Infinite Scroll
Page size is 10 records per page, per CR-06, using page/page_size query params on GET /notifications. [ASSUMPTION] — exact param names (page/page_size vs. limit/offset) are proposed pending backend team alignment on the pattern already used elsewhere in the API; flag if backend uses a different pagination convention. (Source: QN-4.7.3-01)
Unlike CR-06's default list-pagination pattern (visible page-size selector, Previous/Next buttons, "Showing [start]–[end] of [total] records" info display), this panel does not expose any of those controls to the user. Pagination is an internal loading mechanism only: the frontend auto-requests the next page (same page_size=10) when the user scrolls near the bottom of the currently-loaded rows, and appends the results — an infinite-scroll pattern. There is no page-size selector, no Previous/Next buttons, and no "Showing X–Y of Z" display. (BA correction per user request, 2026-08-09 — supersedes the prior 20-item-default draft and CR-06's visible-controls pattern for this panel specifically.)
BR_4.7.3.2: Mark-As-Read — Hover (Individual) vs. Button (Bulk-All)
Two distinct mark-as-read actions, no checkbox-based multi-select exists:
- Individual: hovering over an unread notification row marks that single notification read. No click or checkbox required.
- Bulk: clicking the page-level "Mark as read" button marks all currently-unread notifications in the current list as read (equivalent to
POST /notifications/mark-readwithnotification_idomitted). There is no "mark selected subset" action.
(Source: QN-4.7.3-02; notification_center_matrix.md §1)
BR_4.7.3.3: Empty State Copy
When there are no notifications to display (new account, or an unconfirmed category filter selected), the panel shows the exact copy "Your feed is clear" (no trailing period). (Source: QN-4.7.3-03)
BR_4.7.3.4: Row Click = Expand/Collapse Only — No Mark-As-Read, No Deep-Link
Clicking a notification row toggles that row's expanded/collapsed state to reveal additional detail content. It does not mark the notification as read (that only happens via hover, per BR_4.7.3.2) and does not navigate to any other page (no deep-link, e.g. clicking a "News Protocol Active" row does not navigate to the Position Monitor). (Source: QN-4.7.3-05)
BR_4.7.3.5: No Severity Visual Treatment on This Page
Severity (INFO/WARN/CRITICAL) is not rendered as an icon, color, or badge anywhere on this list. Severity remains an internal data field only, not part of the row's visual design for this panel. (Source: QN-4.7.3-04)
9. Screen Description
| No. | Field Name | Field Type | Displaying rule / Behaviour rule |
|---|---|---|---|
| 1 | "Mark as read" Button | Button (Secondary) | Displaying rule:- Always visible at the top of the list, regardless of unread count.Behaviour rule:- On click: marks all currently-unread notifications in the current filtered list as read (Ref: BR_4.7.3.2).Impact: decrements the bell badge (Ref: UC_4.7.1 BR_4.7.1.3) by the number of rows affected. |
| 2 | Notification Row | Label (repeating block) | Displaying rule:- Ordered by timestamp_utc descending. Shows message, timestamp, category (no severity indicator — Ref: BR_4.7.3.5).- Overflow: Wrap text for the message field.- Empty state: "There are no notifications yet" (Ref: BR_4.7.3.3).Behaviour rule:- On hover (while unread): marks the row read (Ref: BR_4.7.3.2).- On click: expands/collapses to show additional detail content (Ref: BR_4.7.3.4). No navigation, no mark-as-read side-effect from the click itself. |
| 3 | Infinite Scroll Loader | — (no visible control) | Displaying rule:- No pagination UI is rendered — no page numbers, no Previous/Next buttons, no "Showing X–Y of Z" text (Ref: BR_4.7.3.1). Page size fixed at 10 (Ref: CR-06).Behaviour rule:- On scroll near the bottom of the loaded rows: automatically re-queries GET /notifications with page incremented by 1, same active filters, and appends the new rows. No pagination action is user-visible. |