QnA Init Docs — UC_4.7.1: Notification Center - Bell & Dropdown
Ngày tạo: 2026-08-08
Phiên bản: v1
BA phụ trách: Trang Nguyen
Trạng thái: ✅ BA đã trả lời 5/5 câu (1 điểm mở: 3 category Level Events/Payout Events/Mentor-Community Prompts còn chờ confirm riêng, xem QN-4.7.1-01)
- A-08: Notification Center SIM (UC_4.7.1–4.7.3) và LIVE (UC_4.12.4) dùng event set khác nhau — không share business rule chung. (Source:
docs/BA/UC_4.1-4.17/dashboard_common/UC_4.1.1-4.1.5/QnA_init_docs.md)
- A-13: 5 category filter (Risk Warning / Level Events / Payout Events / System Status / Mentor-Community Prompts) là final, không promote thành Common Rule.
| ID | Câu hỏi | Giả định (BA/QC đề xuất) | BA chốt (ưu tiên cao nhất) | Trạng thái |
|---|
| QN-4.7.1-01 | Category → backend event gap. notification_center_matrix.md xác nhận: chỉ 2/5 category (Risk Warning, System Status) có event confirmed đổ vào user_notifications (NC-RISK-01…05, NC-SYS-01). 3 category còn lại (Level Events, Payout Events, Mentor/Community Prompts) không có event nào — chỉ có overlay/Bento-Grid/Email-Klaviyo triggers. SRS UC_4.7.1 nên viết BR cho cả 5 category hay chỉ 2 category confirmed? | Chỉ viết BR đầy đủ cho Risk Warning + System Status (có event source rõ ràng). 3 category còn lại: hiển thị tab filter (theo A-13) nhưng flag rõ trong SRS là "⚠️ Chưa có backend event xác nhận — dropdown sẽ hiển thị empty state cho category này cho đến khi có xác nhận từ client". Không block việc viết SRS. | BA confirm đúng đề xuất: SRS chỉ mô tả đầy đủ 2 category Risk Warning và System Status. 3 category còn lại (Level Events, Payout Events, Mentor/Community Prompts) chờ confirm riêng (chưa document business rule, chỉ giữ tab filter placeholder theo A-13). | ✅ Confirmed |
| QN-4.7.1-02 | SIM cụ thể dùng những event nào trong 6 event confirmed? A-08 xác nhận SIM/LIVE event set khác nhau, nhưng 6 event confirmed (NC-RISK-01…05 từ Flow 23/24, NC-SYS-01) không phân biệt rõ SIM-only hay LIVE-only trong zapier_v7_full.txt. Ví dụ Flow 24 (Overnight Margin & Swap Monitor) nghe có vẻ chỉ áp dụng cho account có margin/swap thật (LIVE)? | Áp dụng cả 6 event cho SIM (News Protocol + Overnight Monitor chạy trên toàn bộ user, không phân biệt SIM/LIVE vì đây là risk enforcement ở cấp thị trường). Nếu sai, cần client xác nhận subset riêng cho SIM. | BA sửa lại hướng đề xuất. SIM không có event Payout (đúng theo A-08 — SIM/LIVE event set khác nhau, Payout Events thuộc nhóm chưa confirm ở QN-4.7.1-01 nên không tồn tại ở SIM). Hiện tại chỉ confirm được event thuộc 2 category Risk Warning và System Status — SRS UC_4.7.1 mô tả 6 event này (NC-RISK-01…05, NC-SYS-01) thuộc SIM trước, không suy diễn thêm event khác. | ✅ Confirmed — sửa đề xuất: bỏ giả định "áp dụng mọi event bất kể SIM/LIVE", chỉ giữ 6 event NC-RISK-01…05 + NC-SYS-01 thuộc 2 category đã confirm. |
| QN-4.7.1-03 | Bell badge unread count — có tính theo category filter đang active không? WBS chỉ nói "unread count badge", không nói rõ badge có tôn trọng filter hiện tại hay luôn đếm tổng. | Badge đếm tổng số unread trên toàn bộ notification (không phụ thuộc filter đang chọn trong dropdown). Badge chỉ giảm khi user mark-read (single hoặc bulk). | BA confirm đúng đề xuất. | ✅ Confirmed |
| QN-4.7.1-04 | target_timestamp — countdown-style message có tự update live trên client không? Data model có field target_timestamp (nullable, dùng cho message dạng "Market Close in 10m"). Nhưng các event confirmed (NC-RISK-01…04) là discrete push tại từng checkpoint (T-30/T-10/T-1/T+1), không phải 1 message tự đếm ngược liên tục. | Message là discrete, không tự đếm ngược — mỗi checkpoint (T-30, T-10, T-1, T+1) là 1 notification row riêng với text tĩnh (vd "News Warning: [Event] in 30 mins"), không có client-side timer nào update text đó. | BA confirm đúng đề xuất. | ✅ Confirmed |
| QN-4.7.1-05 | Cơ chế cập nhật real-time — WebSocket push hay phải poll GET /notifications? WBS mapping_be ghi "Push NOTIFICATION events via WebSocket". Cần xác nhận dropdown tự update ngay khi có WS event, không cần user refresh. | WS push cập nhật store ngay lập tức → bell badge + dropdown re-render tự động, không cần gọi lại GET /notifications. GET /notifications chỉ dùng cho initial load lúc mount component. | BA confirm đúng đề xuất. | ✅ Confirmed |
| Date | Version | Updated item | Before | After | Notes |
|---|
| 2026-08-08 | v1 | Initial creation | — | 5 QnA items | Init Flow Step 1+2 |
| 2026-08-08 | v2 | BA review — 5/5 câu trả lời | ⏳ Chờ BA | ✅ Confirmed (1 điểm mở: 3 category chưa confirm) | BA review round 1 |