StackTrading Docs

QnA Init Docs — UC_4.8.1: PnL Gauge (SIM Overview)

Ngày tạo: 2026-08-08 Ngày BA review: 2026-08-10 Phiên bản: v1 BA phụ trách: Trang Nguyen Trạng thái: ✅ BA đã trả lời toàn bộ QN-4.8.1-01→04 — sẵn sàng cho Step 3 (Architect viết SRS)


Carried-forward context (đã confirm ở dashboard_common/UC_4.1.1-4.1.5/QnA_init_docs.md, KHÔNG hỏi lại)

  • A-06: PnL Gauge (SIM = UC_4.8.1, LIVE = UC_4.11.2) thuộc module Overview, KHÔNG thuộc Global Shell — dial có 4 trạng thái (Starting point / Drawdown defense enabled / Breached-Account Disabled / Level Up) là đúng, chỉ phần "cấp global header" bị bác. (Source: docs/BA/UC_4.1-4.17/dashboard_common/UC_4.1.1-4.1.5/QnA_init_docs.md)

Nguồn

  • RFQ_ Website and Dashboard Implementation V7.pdf §Part C (dòng 572-575 bản extract dashboard_v7_full.txt): "PnL Gauge: A prominent, streaming account balance and PnL dial requiring explicit frontend state management for four distinct visual states: Starting point, Drawdown defense enabled, Breached (Account Disabled), and Level Up."
  • Cùng file, dòng 837-839: trong "Passing Associate Track" Shadow Mode, ghi chú "PnL Gauge is active since it shows them the timer" — gauge vẫn hoạt động ở ReadOnly Mode.
  • RFQ_ Stack Trading Prop Tech V7.pdf §3.2 (v7_full.txt): event ACCOUNT_METRICS (dòng 394-398, streaming balance/equity/open_pnl/realized_pnl, throttle 1000ms), event LEVEL_STOP_BREACH (dòng 451-465), event LEVEL_PROMOTION (dòng 439-444).
  • RFQ_ Stack Trading Prop Tech V7.pdf §Reference Data Endpoints — "Current Level Detail" (dòng 642-651): trả về Notional, dùng để "populate the dashboard header, 'Next Level' progress bars, and the PnL Gauge defense state".

WBS UC_4.8.1 có description sẵn ("Compact profit and loss visualisation: current equity vs starting balance with a mini equity curve sparkline showing PnL over time") khớp với nguồn trên.


IDCâu hỏiGiả định (BA/QC đề xuất)BA chốt (ưu tiên cao nhất)Trạng thái
QN-4.8.1-01[SCOPE — 🔴 CRITICAL] Trạng thái "Drawdown defense enabled" có thể xảy ra trên SIM không? Defense Protocol (Table F, 48h cooling-off) theo toàn bộ nguồn đã đọc chỉ áp dụng Level 9+. SIM chỉ có 1 tier duy nhất (Level 0 — evaluation, pass/fail nhị phân, không có khái niệm "lên level" trong lúc còn ở SIM). WBS module Failure & Recovery của SIM (category STAGE 2.1. DASHBOARD SIM) chỉ có 4 UC: UC_4.9.1 (Soft Breach), UC_4.9.2 (Hard Breach), UC_4.9.3 (Sim Reset), UC_4.9.4 (Time Extension) — KHÔNG có UC "Defense Protocol" nào cho SIM (trong khi LIVE có hẳn UC_4.14.4 "Scenario C: Defense Protocol"). Vậy trạng thái thứ 2 của gauge có bao giờ trigger được trên SIM không?Đề xuất: trạng thái "Drawdown defense enabled" không bao giờ trigger trên SIM (Defense Protocol chỉ tồn tại ở LIVE, UC_4.14.4). SRS UC_4.8.1 vẫn liệt kê đủ 4 state theo nguồn (để đúng structure), nhưng ghi rõ note: "State này N/A cho SIM — chỉ áp dụng khi user đã ở LIVE (xem UC_4.14.4)".Đúng như đề xuất — trạng thái "Drawdown defense enabled" không bao giờ trigger trên SIM (Defense Protocol chỉ tồn tại ở LIVE, UC_4.14.4). SRS UC_4.8.1 vẫn liệt kê đủ 4 state theo nguồn, kèm note rõ: "State này N/A cho SIM — chỉ áp dụng khi user đã ở LIVE (xem UC_4.14.4)".✅ Đã chốt
QN-4.8.1-02[Chung với dashboard_common/UC_4.2.3/QnA_init_docs.md A-10] Mini equity curve sparkline dùng chung endpoint GET /equity-curve với Equity Curve full (UC_4.2.3), hay 2 nguồn dữ liệu riêng? BA chỉ cần trả lời 1 lần, áp dụng cho cả UC_4.8.1 và UC_4.2.3.Dùng chung 1 endpoint GET /equity-curve?timeframe=, PnL Gauge gọi cố định timeframe=1D để render bản rút gọn — tránh duplicate logic tính toán 2 nơi.BA: "Áp dụng cho cả 2" — xác nhận dùng chung 1 endpoint GET /equity-curve?timeframe= cho cả UC_4.8.1 và UC_4.2.3, PnL Gauge gọi cố định timeframe=1D. (Đồng bộ với A-10 đã ghi trong dashboard_common/UC_4.2.1-4.2.5/QnA_init_docs.md, và đã được viết sẵn vào UC_4.2.3 §BR_4.2.3.1.)✅ Đã chốt
QN-4.8.1-03Field "starting balance"ACCOUNT_METRICS chỉ có balance/equity/open_pnl/realized_pnl hiện tại, không có field "giá trị vốn cấp ban đầu" để so sánh (dial cần "current equity vs starting balance"). Field nào là nguồn baseline?Dùng Notional (từ endpoint Current Level Detail) làm baseline "starting point" cho dial — đây là giá trị vốn cấp cho tier/level hiện tại, không đổi trong suốt phiên.Đã chốt — BA cung cấp công thức đầy đủ (2026-08-10): On load, frontend gọi GET /current-level-detail, payload trả về Target/Stop của user. Left End (Minimum) = Hard Stop Loss threshold (Market_Loss_When_Stopped, vd Stop = $1,250 → đầu trái dial = -$1,250). Right End (Maximum) = Profit Target (Profit_Target, vd Target = $1,875 → đầu phải dial = +$1,875). Kim chỉ (needle) = Current Net PnL trực tiếp (Unrealized + Realized), lắng nghe WebSocket ACCOUNT_METRICS (tính bằng equity trừ allocated_capital ban đầu — tương đương Notional). Giá trị hiển thị dưới kim = Current Net PnL dạng USD live, đúng bằng tổng P&L đã đóng + đang mở. → Vậy baseline dial KHÔNG phải 1 điểm mốc tĩnh đơn lẻ để so sánh, mà là dial 2 đầu (Stop ↔ Target) với kim chạy theo Net PnL — thay thế hoàn toàn hướng đề xuất ban đầu (chỉ dùng Notional làm 1 điểm mốc).✅ Đã chốt
QN-4.8.1-04Transition animation giữa 4 state — nguồn không mô tả hiệu ứng chuyển đổi (vd Breach xảy ra đột ngột ngay từ Starting point, chưa qua Drawdown defense).[ASSUMPTION] Chuyển state tức thời (không cần animation transition phức tạp) khi nhận WS event tương ứng — chỉ riêng "Level Up" có cinematic riêng (cross-ref UC Level-Up Cinematic, LIVE UC_4.15.1 — SIM tương đương chưa xác nhận có tồn tại không, vì SIM evaluation "Level Up" = pass challenge, chuyển sang luồng Live Onboarding, không rõ có cinematic riêng cho SIM hay chỉ có ở LIVE).KHÁC đề xuất ban đầu — BA: "giữa các state sẽ có motion chuyển đổi." Xác nhận CÓ transition animation giữa các state (không phải instant/tức thời như đề xuất ban đầu). Chi tiết animation cụ thể (duration, easing) không thuộc phạm vi functional spec — SRS chỉ ghi nhận hành vi "có transition motion khi chuyển state", không mô tả chi tiết thị giác.✅ Đã chốt (KHÁC đề xuất ban đầu)
QN-4.8.1-05Cross-ref backend flow — không phải câu hỏi cần trả lời riêng, chỉ ghi nhận: trạng thái "Breached (Account Disabled)" trùng trigger (LEVEL_STOP_BREACH) với luồng backend đã được document chi tiết ở dashboard_sim/UC_4.9.2/QnA_init_docs.md (Hard Breach - Level Stop). Khi viết SRS, UC_4.8.1 chỉ mô tả hành vi hiển thị của gauge ở state này (dial khóa đáy, overlay), KHÔNG lặp lại toàn bộ backend flow (Atomic Kill Switch, Frosted Glass toàn trang) — phần đó thuộc UC_4.9.2, dùng Markdown link tham chiếu.— (ghi chú kỹ thuật cho Architect, không cần BA chốt)✅ Đã resolve qua research
QN-4.8.1-06[ROUND 2, 2026-08-16 — trigger từ review UC_4.12.2 LIVE] State label (right) — "Est. Bonus $[amount]" và "Promotion: Level [N]" lấy từ đâu, và có tooltip không? BR_4.8.1.4 trước đó đánh dấu [ASSUMPTION, pending confirmation] do ACCOUNT_METRICS/Current Level Detail không có field bonus.— (câu hỏi mở, chưa có đề xuất cụ thể — cần BA/BE xác nhận nguồn field)BA confirm: [N] = next level (current level + 1); [amount] = Bonus_Paid_To_Trader của level đó — cả hai lấy trực tiếp từ Table A (Forex)/Table B (Futures) theo asset class của trader, cho level kế tiếp. Không có tooltip hiển thị thêm ở field này. Áp dụng đồng thời cho SIM (UC_4.8.1) và LIVE (UC_4.12.2).✅ Confirmed — gỡ bỏ [ASSUMPTION] khỏi BR_4.8.1.4

Ghi chú Phase 2.2 — WBS Cross-UC Consistency Check

  • CR Conflict Check: Đã đọc References/CR/_CR_INDEX.md — không có CR nào tham chiếu trực tiếp PnL Gauge/module Overview SIM.
  • Same-category consistency (STAGE 2.1. DASHBOARD SIM): Sibling UC: UC_4.7.1-4.7.5 (Global Shell), UC_4.9.1-4.9.4 (Failure & Recovery — cross-ref QN-4.8.1-01/05 ở trên).
  • Cross-folder dependency: UC_4.2.3 (Equity Curve, dashboard_common) ↔ UC_4.8.1 (mini sparkline) — xem QN-4.8.1-02.
  • Orphan-UC check: UC_4.8.1 xác nhận tồn tại trong WBS qua node script/parse_wbs.js --compact, category STAGE 2.1. DASHBOARD SIM, module Overview.

Ghi chú Phase 2.5 — Impact Analysis

Không có state-changing action trực tiếp trên widget PnL Gauge (read-only display, cập nhật qua WebSocket/REST). Các state-changing action liên quan (flatten position khi Hard Breach, purchase reset) đã được cover ở UC_4.9.2/UC_4.9.3.


Changelog

DateVersionUpdated itemBeforeAfterNotes
2026-08-08v1Initial creation5 QnA itemsInit Flow Step 1+2
2026-08-10v1.1BA review — trả lời QN-4.8.1-01/02/043 mục ⏳ Chờ BA3 mục ✅ Đã chốt (QN-04 khác đề xuất ban đầu — có transition animation). QN-4.8.1-03 vẫn 🟡 cần làm rõ thêm (BA hỏi ngược "tại sao cần dữ liệu này")BA (Trang Nguyen) trả lời trực tiếp qua chat 2026-08-10
2026-08-10v1.2BA cung cấp công thức đầy đủ cho QN-4.8.1-03🟡 Cần làm rõ thêm✅ Đã chốt — dial 2 đầu (Hard Stop Market_Loss_When_Stopped ↔ Profit Target Profit_Target), kim = Net PnL live qua ACCOUNT_METRICS, thay thế hoàn toàn hướng đề xuất ban đầu (Notional làm 1 điểm mốc)BA (Trang Nguyen) trả lời trực tiếp qua chat 2026-08-10 — UC_4.8.1 đã sẵn sàng 100% cho Step 3
2026-08-16v1.3BA review round 2 (trigger từ UC_4.12.2 LIVE review) — chốt QN-4.8.1-06BR_4.8.1.4 [ASSUMPTION, pending confirmation] cho nguồn bonus/next-level✅ Confirmed — next-level/bonus lookup trực tiếp Table A/B theo asset class, không tooltip; [ASSUMPTION] gỡ bỏ khỏi BR_4.8.1.4 và Screen Description dòng 5BA (Trang Nguyen) trả lời trực tiếp 2026-08-16

On this page