StackTrading Docs

SRS: UC_4.7.3 — Notification Center: View All History

FieldValue
BA in ChargeTrang Nguyen
Date Created2026-08-08
Versionv1
Document Referencesdocs/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

FieldContent
IDUC_4.7.3
Use CaseNotification Center: View All History
DescriptionThe 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 = true and no longer counts toward the bell badge (Ref: UC_4.7.1 BR_4.7.1.3).

5. Basic Flow

  1. User clicks the bell icon → dropdown panel opens (Ref: UC_4.7.1).
  2. Frontend calls GET /notifications with page=1, page_size=10 (Ref: CR-06), and default filters (Ref: UC_4.7.2).
  3. 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).
  4. [If no notifications exist for the current filter/account] → panel renders the empty state (Ref: BR_4.7.3.3).
  5. 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).
  6. 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.
  7. 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).
  8. User scrolls to the bottom of the currently-loaded rows → frontend automatically re-calls GET /notifications with page incremented by 1, same active filters and page_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-read with notification_id omitted). 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)

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 NameField TypeDisplaying rule / Behaviour rule
1"Mark as read" ButtonButton (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.
2Notification RowLabel (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.
3Infinite 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.

On this page