QnA & Assumptions — UC_4.17.1 Settings: Market Data Management (LIVE)
QnA_init_docs — UC_4.17.1
Ngày tạo: 2026-09-04
Đồng bộ với: UC_4.17.1_v1.md v2
BA phụ trách: Anh Hoang
Nguồn đã đọc: wireframe References/Wireframe/Stage 2/Settings/Market Data Management/ (24 frame) · Broadcast, Settings_Market Data.docx · QnA_STAGE2_SETTINGS_CAREER_VIRAL.md §4 ([MDM-*], tới v19) · Zapier Integration V7.pdf Flow 12 / 22 / 39 / Table C · RFQ_ Website and Dashboard Implementation V7.pdf §Part C · RFQ_ Stack Trading Prop Tech V7.pdf · CR-20260727-005, CR-20260812-008, CR-20260818-003, CR-20260818-004 · UC_4.15.2_v1.md §5 Step 2
File này viết bằng tiếng Việt theo
global-rules.md§Language — mọi tài liệuQnA_*là tài liệu nội bộ BA team, không phải deliverable cho khách. Bản SRSUC_4.17.1_v1.mdviết bằng tiếng Anh theoproject_context.md.
Phần 1 — Chỉ đạo trực tiếp của BA, đã áp vào doc
| ID | Nội dung BA chốt | Đã áp vào |
|---|---|---|
| D-01 | Nhãn nút: 3 nhãn hành động Subscribe · Unsubscribe · Resubscribe, cộng Subscribed là nhãn trạng thái chỉ dán lên card CME đang Active (Disabled, không có action huỷ). Không dùng chữ Reactivate ở bất kỳ đâu | BR_4.17.1.5 |
| D-02 | Apple Pay / Google Pay hiển thị theo device: thiết bị Apple → Apple Pay; còn lại → Google Pay. Không bao giờ hiện cùng lúc | BR_4.17.1.12 |
| D-03 | Viết cả Flow 12 và Flow 22 vào chính UC này, không tách sang UC background | §6.9, §6.10 |
| D-04 | Format ngày hiển thị theo US format: có năm MMM DD, YYYY (Mar 31, 2026); không năm MMM DD (Mar 31) | BR_4.17.1.18 |
| D-05 | Đường vào: Settings → click tab Market Data Management | §2 Trigger |
| D-06 | Trader bị hard breach hoặc resign → không nhìn thấy tab này | BR_4.17.1.1 |
| D-07 | Sub-text Full depth-of-book chỉ hiển thị ở dòng sản phẩm trong modal Subscribe, không hiện trên feed card. Feed card chỉ có một dòng mô tả asset class | BR_4.17.1.2 |
| D-08 | Status badge và info chip áp dụng linh hoạt trên mọi feed, không cố định ở feed nào | BR_4.17.1.3, BR_4.17.1.4 |
| D-09 | Chip Covered by Stack Trading · No charge to you chỉ cho CME và chỉ Level 3+. Trader Level 1–2 tự trả CME nên tuyệt đối không hiện | BR_4.17.1.4 |
| D-10 | CME có thể hiện đồng thời Covered by Stack Trading · No charge to you và Paused after 30 days without trading khi dính Flow 12 | BR_4.17.1.4, §9.1 row 6 |
| D-11 | Modal Action Required: Exchange Agreements Pending hiển thị ở tab Command, tự bật mỗi lần login khi chưa ký. Giữ nút Cancel đúng như design hiện tại. Resend Instructions → Flow 39 | BR_4.17.1.14, §6.11, §9.6 |
| D-12 | Copy chốt cho 4 email, tất cả gửi từ support@stacktrading.com | SES-30, SES-31, SES-16, SES-17. UC chỉ tham chiếu ID |
| D-13 | Resubscribe sau Flow 12 tách 2 case theo market_data_paid_until: bật lại trong tháng đã trả → miễn phí; sang tháng mới → mở modal checkout, phải trả tiền. Riêng CME của trader Level 3+ luôn miễn phí | BR_4.17.1.5, §6.3 |
| D-14 | Thẻ Expired vẫn chọn được làm nguồn tiền và vẫn để làm is_default. Badge chỉ cảnh báo, không chặn. Đến kỳ charge sẽ fail và feed bị tắt — trader phải tự chủ động đổi | BR_4.17.1.11 |
| D-15 | Chip Remaining Extension Period + nút Extend ([n] Feeds) chỉ hiện trong 7 ngày cuối tháng. Ngày thường không hiển thị | §9.1 row 3 |
| D-16 | Invoice_APM_email gửi đúng một lần tại EOM−7, không có ladder nhắc lại. Lần liên lạc thứ hai là email hạ cấp | §6.10 Path A, SES-31 |
| D-17 | Dashboard notification có ở cả 3 mốc của Flow 22 (EOM−7 WARN, charge fail WARN, downgrade CRITICAL), không phải chỉ lúc downgrade | BR_4.17.1.20 |
| D-18 | Banner đổi tên thành banner nhắc ký exchange agreement, hiển thị ở tab Command, hiện mỗi lần login. Không phải "banner khoá feed toàn dashboard" | BR_4.17.1.15 |
| D-19 | Trader ký một lần với Rithmic cho toàn bộ agreement, không phải ký 4 lần cho 4 feed. GET /check-market-data-status gọi một lần lúc login, không polling | BR_4.17.1.14 |
| D-20 | Modal Payment Failed rẽ nội dung theo phương thức: thẻ → nêu 4 số cuối; APM → nêu tên phương thức | §9.5 row 2 |
| D-21 | Phần Refund Check (Market Data) thuộc UC_4.15.2 §5 Step 2 — UC này chỉ tham chiếu, không viết lại | BR_4.17.1.17, §7 row 7 |
| D-22 | Ràng buộc thứ tự cho BE: Day 0 sweep phải ghi xong cờ Last_Data_Payment_Status cho cả batch rồi End of Month Hard Check mới được quét | §6.10 |
| D-23 | Copy khối disclosure trong modal Subscribe giữ nguyên văn design, gồm cả chữ Crypto | §9.2 row 6 |
| D-24 | Phase này không dùng Crypto — không mở open item cho nhánh Crypto | — |
| D-25 | Các nội dung về hard breach / resign / Re-Buy / EOM Failsafe không thuộc UC này, không đưa vào doc | — |
Phần 2 — Cập nhật QnA khách 2026-09-04 (v18 + v19), đã áp vào doc v2
| ID khách | Khách chốt | Hệ quả với doc |
|---|---|---|
| [MDM-BIZ-20] | 🔴 BỎ blocking rule chặn mua add-on khi CME chưa ký. Rithmic gate ở tầng data stream, không release data nếu chưa ký ⇒ trader mua và trả tiền được, chỉ không thấy data. GET /check-market-data-status đổi vai trò → điều kiện hiện modal | ✅ Gỡ gate khỏi BR_4.17.1.14, §6.1, §6.11, §7, §9.1. Đảo chiều so với v1 |
| [MDM-UI-09] | Modal Rithmic bung on-login; bắt buộc có control đóng + Resend Instructions; không thiết kế thành screen blocker; chưa ký thì mọi lần login đều bung lại | ✅ Viết lại BR_4.17.1.14 + §6.11 + §9.6. Vị trí chốt là tab Command (D-11); control đóng giữ nhãn Cancel theo design |
| [MDM-UI-08] | Reactivate ≡ Resubscribe → chỉ hiển thị Resubscribe. Ma trận đúng 3 nhãn của [MDM-UI-01] | ✅ Đóng câu hỏi nhãn nút — và đóng theo đúng hướng doc đã viết từ v1. BR_4.17.1.5 còn 3 nhãn hành động + Subscribed là nhãn trạng thái |
| [MDM-UI-07] | UI tách 2 CTA vì APM là push, thẻ là pull: Subscribe via Credit Card vs Pay via APM | ✅ Sinh BR_4.17.1.24 mới + §6.1 bước 3 + §9.2 row 5/7. Đảo chiều v1 (một CTA duy nhất) |
| [MDM-BIZ-19] | Refund cho user APM làm được bằng outbound push của T365 / Dusupay | ✅ Áp vào BR_4.17.1.17. ⚠️ BA sau đó làm rõ thêm: gateway nào không đảo ngược tự động được (Dusupay, Crypto…) thì log ledger + tạo ticket Freshdesk — chi tiết thuộc UC_4.15.2 §5 Step 2, UC này chỉ tham chiếu (D-21) |
| [MDM-UI-06] | Sub-text Full depth-of-book là một chuỗi duy nhất dùng chung, bỏ "Real-time quotes" | ✅ BR_4.17.1.2. Phạm vi hiển thị chốt theo D-07: chỉ trong modal Subscribe |
Phần 3 — Assumption của BA (đã áp vào doc, cần BA xác nhận lại)
| ID | Assumption | Căn cứ | Status |
|---|---|---|---|
| A-01 | Flow 12 phải có cơ chế chống lặp vô hạn. Ghi mốc market_data_reactivated_at tại POST /toggle-market-data; điều kiện quét bổ sung: chỉ tắt khi last_trade_date < (Today − 30) AND (market_data_reactivated_at IS NULL OR last_trade_date > market_data_reactivated_at) | Cron quét last_trade_date thô. Trader bật lại feed nhưng chưa trade thì last_trade_date không đổi → hôm sau cron tắt tiếp, lặp mãi. Không có rule này thì trader nghỉ dài quay lại bị tắt feed ngay hôm sau mà không hiểu vì sao. Tên field do BA tự đặt, chưa có trong nguồn nào | ⏳ Pending BA |
| A-02 | reactivation_url trong email SES-30 là hành động gộp — click vào bật lại tất cả feed đủ điều kiện miễn phí cùng lúc, rồi đưa trader về tab. Feed nào phải trả tiền thì không được bật, giữ nút Resubscribe. Trên tab thì trader bật từng feed một | Flow 12 tắt toàn bộ feed một lần, nhưng UI có nút Resubscribe trên từng card. Email chỉ có một CTA duy nhất nên nó phải là hành động gộp. BA tự suy ra, chưa có trong nguồn nào | ⏳ Pending BA |
| A-03 | Thứ tự 2 chip khi hiện cùng lúc: chip lý do trả phí (Covered by Stack Trading…) đứng trước, chip lý do trạng thái (Paused… / Suspended…) đứng sau | Suy ra từ D-10; wireframe chưa có frame nào vẽ 2 chip cùng lúc | ⏳ Pending BA |
| A-04 | Chip cảm ơn sau khi huỷ chứa 2 mốc ngày: ngày thứ nhất = access_valid_until do Cancel Subscription trả về; ngày thứ hai = access_valid_until + 1 ngày | Wireframe ghi placeholder [date] và [date + 1]. Modal Subscription Cancelled cũng hiện đúng cặp ngày này | ⏳ Pending BA |
| A-05 | Modal Change Payment Card (vào từ link Change trong modal Subscribe) là biến thể rút gọn của Change Payment Method — chỉ có nhóm Charged Automatically, không có nhóm APM | Wireframe Change Payment Card.png vs Change Payment Method.png khác nhau đúng ở chỗ này | ⏳ Pending BA |
| A-06 | Khối How It Works ở cột phải rẽ nhánh theo level. Wireframe chỉ vẽ bản Level 3+; BA bổ sung bản Level 1–2 nêu rõ mọi feed kể cả CME sẽ bị tắt | [MDM-BIZ-13] — nếu dùng chung một bản thì nói sai với trader Level 1–2 | ⏳ Pending BA |
| A-07 | Sửa lỗi chính tả trong copy wireframe khi đưa vào doc: No subscription was created an you have not been charged → ...and you have not been charged; You can subcribe again → You can subscribe again | Lỗi typo hiển nhiên trong file design, không phải chủ ý | ⏳ Pending BA |
| A-08 | Ngày Next charge trong modal Subscription Confirmed = mốc charge kế tiếp của Flow 22: EOM−3 với Path B, EOM−7 với Path A | Wireframe ghi Next charge of $94.34 on Mar 28, 2026 — 28/3 đúng là EOM−3 của tháng 3 | ⏳ Pending BA |
| A-09 | Modal Card In Use liệt kê mỗi subscription một dòng. Wireframe vẽ 2 dòng (VISA…, Apple Pay…) là minh hoạ 2 case khác nhau, không phải hiện đồng thời | 2 phương thức khác nhau cho cùng 1 subscription thì không logic nếu hiện cùng lúc | ⏳ Pending BA |
| A-10 | Nút Cancel trên modal nhắc ký chỉ ẩn modal cho phiên hiện tại, không phải "không hiện lại nữa". Lần login sau, nếu vẫn chưa ký thì modal bung lại | Chỉ đạo D-11: "luôn tự bật khi trader login nếu chưa ký". Nếu Cancel tắt vĩnh viễn thì mâu thuẫn với chữ "luôn" | ⏳ Pending BA |
| A-11 | Chuỗi Settings Market Data trong SES-16 render thành Settings → Market Data | Khoảng trắng đôi là dấu mũi tên bị mất khi paste — các mũi tên khác trong cùng template vẫn còn | ⏳ Pending BA |
| A-12 | Khối POD MENTORSHIP STATUS trong SES-30 chỉ render khi trader có pod_leader_id; trader không thuộc pod nào thì ẩn cả khối | Copy khách đưa viết như thể trader nào cũng có ghế Pod, nhưng bước Pod Impact của Flow 12 có điều kiện IF Trader is in a Pod | ⏳ Pending BA |
Phần 4 — Câu hỏi cần chốt với khách
Đánh số khớp 1-1 với bảng §10 Open Items của
UC_4.17.1_v1.mdv2.
| # | Câu hỏi | Vì sao cần chốt |
|---|---|---|
| 1 | Tên endpoint resend: khách viết POST /resend-rtrader-instructions, WBS/QnA ghi POST /resend-r-trader-instructions. Doc theo nguyên văn khách | BE phải chốt một chuỗi duy nhất trước khi build, nếu không FE gọi sai đường |
| 2 | Giá $137.50 là giá exchange gốc hay đã cộng markup của Stack Trading? Và có khác nhau giữa Level 1–2 (trader trả) với Level 3+ (firm trả base) không? | Ảnh hưởng công thức Invoice_Amount của Flow 22. Còn treo từ O-28(a) |
| 3 | Trader dùng VPN → GET /system/status đọc Cloudflare IP header ra sai quốc gia → hiện sai bộ payment method. Có cho override thủ công không? | Ảnh hưởng khả năng thanh toán của trader đi công tác. Còn treo từ O-28(b) |
| 4 | Có gửi cảnh báo trước cho trader đang trong kỳ DTO trước khi Flow 12 bắn không? Khách chốt không thêm filter ([MDM-BIZ-17]), nhưng trader nghỉ dài chắc chắn bị tắt feed khi quay lại | Thuần UX, không blocking. Còn treo từ O-28(c) |
| 5 | Các chuỗi toast/popup của màn này chưa có ID trong list-toast-popup.md, hiện viết inline trong UC. Có gán ID và chuyển sang tham chiếu không? | Tuân thủ global-rules.md §Common Rule Referencing. Không blocking |
| 6 | Trong cùng một phiên, trader bấm Cancel rồi rời tab Command và quay lại — modal có bung lại không? BA giả định là không (chỉ bung 1 lần/phiên) | Bung lại mỗi lần vào tab sẽ rất phiền; không bung lại thì trader dễ quên. Liên quan A-10 |
| 7 | Modal + banner nhắc ký có áp cho trader SIM không? CR-20260727-005 mô tả banner từ giai đoạn SIM, nhưng tab Market Data Management là LIVE-only | Ảnh hưởng phạm vi build. Trader SIM cũng phải ký agreement để có data nên nhiều khả năng là có, nhưng cần khách xác nhận |
| 8 | Khối POD MENTORSHIP STATUS trong SES-30 — xác nhận chỉ render khi trader có pod_leader_id (xem A-12) | Gửi cho trader không thuộc pod nào là nói sai |
| 9 | Nhãn CTA trong SES-30 là Reactivate Market Data, nút trên dashboard là Resubscribe — hai chuỗi lệch nhau cho cùng một hành động | [MDM-UI-08] đã chốt bỏ hẳn chữ Reactivate khỏi hệ thống, nhưng copy email vẫn còn. Cần chốt sửa email hay chấp nhận lệch |
| 10 | support@stacktrading.com là địa chỉ gửi cho toàn bộ email SES của dự án, hay chỉ nhóm market data? | Ảnh hưởng cấu hình AWS SES (verified identity) và cách tổ chức list_email.md — nếu là toàn bộ thì khai báo một lần ở đầu registry thay vì lặp field From ở từng entry |
Phần 5 — Conflict giữa các nguồn, đã xử lý trong doc
| # | Conflict | Nguồn A | Nguồn B | Cách xử lý |
|---|---|---|---|---|
| 1 | Ai trả gói CME cơ bản | [MDM-DEF-07] (2026-08-13): firm trả ở mọi Level | [MDM-BIZ-13] (2026-08-24): Level 1–2 trader tự trả 100%, Level 3+ firm mới cover base CME | Theo [MDM-BIZ-13] — mới hơn và đảo chiều rõ ràng. Ref: BR_4.17.1.6 |
| 2 | Có hoàn tiền market data không | [MDM-BIZ-06] (2026-08-13): bỏ hẳn bước refund khỏi Flow 7 | [MDM-BIZ-14] (2026-08-24): giữ nguyên bước refund | Theo [MDM-BIZ-14] — không prorate tháng đang chạy, nhưng có hoàn khoản prepay tháng sau. Cơ chế chi tiết thuộc UC_4.15.2 (D-21) |
| 3 | Nhãn nút cho Inactive_Hold | [MDM-UI-01] (2026-08-13): bỏ hẳn Reactivate | [MDM-BIZ-15] + [MDM-BIZ-17] (2026-08-24): dùng đúng Reactivate | [MDM-UI-08] (2026-09-04) đóng dứt điểm: chỉ Resubscribe. Ref: BR_4.17.1.5 |
| 4 | Chặn mua add-on khi chưa ký CME | [MDM-BIZ-15] ý (2) (2026-08-24): phải chặn | [MDM-BIZ-20] (2026-09-04): không chặn, Rithmic gate ở tầng data stream | Theo [MDM-BIZ-20]. Ref: BR_4.17.1.14 |
| 5 | Chu kỳ tính phí | RFQ_ Stack Trading Prop Tech V7.pdf: market_data_paid_until = current_date + 1 Month | [MDM-DEF-06] + [MDM-DEF-08]: = ngày cuối tháng dương lịch hiện tại | Theo QnA (khách chốt 2 lần). Ref: BR_4.17.1.7 |
| 6 | Cần thêm field funding_mode để phân nhánh Path A/B | Đề xuất BA trong CR-20260818-004 | [MDM-BIZ-12]: dùng customer_vault_id IS NULL là đủ | Theo [MDM-BIZ-12], bỏ đề xuất funding_mode. Ref: BR_4.17.1.10 |
| 7 | Vị trí UI quản lý thẻ | [MDM-BIZ-08]: khách nói "build it in the Billing Page" | Docx Broadcast, Settings_Market Data.docx xếp phần quản lý thẻ dưới heading Settings - Market Data management; UC_4.6.3 đã chốt tab Billing chỉ có Invoice History | Theo docx + UC_4.6.3 — toàn bộ quản lý thẻ nằm ở tab này |
| 8 | Apple Pay + Google Pay hiện cùng lúc | Wireframe Add Payment Method.png chỉ vẽ Apple Pay | [MDM-UI-03] + chỉ đạo BA D-02: device-conditional, chỉ 1 nút | Theo [MDM-UI-03] + D-02. Ref: BR_4.17.1.12 |
| 9 | Data_Feed_Downgraded có cần variant theo tier không | BA từng nhận định bản hiện có viết theo Level 3+ nên nói sai với Level 1–2 | BA chốt: không cần tách — email chỉ báo feed nào vừa tắt, trader Level 1–2 tự hiểu phải mua lại mới trade được | Theo chỉ đạo BA. SES-17 dùng một template cho cả 2 tier |
| 10 | Nút phụ của modal nhắc ký | [MDM-UI-09]: bắt buộc có Close (X) | Wireframe Phần ngoài/-.png vẽ nút phụ nhãn Cancel | Theo wireframe (D-11) — design hiện tại đã đủ, không yêu cầu sửa |
Phần 6 — Đề xuất bổ sung Common Rule
| # | Pattern lặp lại | Đề xuất |
|---|---|---|
| 1 | Định dạng ngày hiển thị US format MMM DD, YYYY / MMM DD | Thêm mục vào common_rules.md — hiện CR-08 chỉ quy định chuẩn lưu trữ/API (ISO 8601 UTC), chưa có rule cho tầng hiển thị. Đang khai báo cục bộ ở BR_4.17.1.18 |
| 2 | Badge trạng thái hạn thẻ (Expires soon / Expired, neo cuối tháng, cửa sổ 60 ngày) | Nếu Checkout Step 6 cũng dùng lại thì nên nâng lên common rule. Hiện chỉ mình UC này dùng nên tạm để cục bộ ở BR_4.17.1.11 |
Changelog
| Ngày | Nội dung |
|---|---|
| 2026-09-04 | Đồng bộ với UC_4.17.1_v1.md v2. Gộp toàn bộ feedback BA thành 25 chỉ đạo (D-01 → D-25). Đóng 10 assumption cũ đã được BA trả lời dứt điểm: endpoint Cancel Subscription, giá wireframe là dummy data, ví theo luồng checkout, Resubscribe tách 2 case, nút Extend chỉ 7 ngày cuối tháng, thẻ Expired vẫn chọn được, SES-17 không tách variant, refund tham chiếu UC_4.15.2, modal không chặn mua, modal không liệt kê từng exchange. Gỡ các mục ngoài scope (hard breach / resign / Re-Buy / EOM Failsafe) và mục Crypto (phase này không dùng). Bổ sung 2 assumption mới do BA đề xuất và chưa có nguồn: A-01 chống lặp Flow 12, A-02 reactivation_url là hành động gộp. Bảng câu hỏi rút còn 10 mục, đánh số khớp 1-1 với §10 Open Items. Bảng conflict tăng lên 10 dòng (thêm: chặn mua add-on, variant SES-17, nút phụ modal) |
| 2026-09-04 | Bản đầu — sinh cùng UC_4.17.1_v1.md v1 (Init Flow) |
UC_4.17.1 — Settings: Market Data Management (LIVE)
SRS for the Market Data Management tab — four exchange feeds (CME/CBOT/NYMEX/COMEX), the Subscribe / Unsubscribe / Resubscribe button matrix, one shared payment method, the background jobs Flow 12 (Zombie Protocol) and Flow 22 (Monthly Data Fee Billing), and the R|Trader Pro signing reminder on the Command tab
SRS: UC_4.17.1 — Settings: Market Data Management (LIVE)
Next Page