StackTrading Docs

QnA Init Docs — UC_4.16.2 Career & HR Widget (LIVE)

UC: UC_4.16.2 — Career & HR Widget (LIVE) BA phụ trách: Anh Hoang Ngày tạo: 2026-08-26 Tài liệu SRS: UC_4.16.2_v1.md


0. Nguồn đã đọc

#NguồnDùng cho
1RFQ_ Stack Trading Prop Tech V7.pdfEndpoint HR Integration (input/output/logic đầy đủ) · Endpoint Current Level Detail (Level, Title, Salary, PTO, payout_portal_url + rule Payout Routing) · 3rd-party stack (Rippling = HR & Payroll)
2RFQ_ Website and Dashboard Implementation V7.pdf§Part C — câu định nghĩa Career & HR Widget: "Displaying Vacation Days, Next Pay Date, and Latest Certificate (Data from Rippling), Manage Payouts (payout_portal_urltarget="_blank" … static vendor URL)"
3Zapier Integration V7.pdfFlow 6 (Level 6 Transition — W-2 vs International, Comp_Track, Standard_Hours, Rippling worker.hire) · Flow 8 (Pay Raise — Base_Income vs Base_Income_Flex, Base_Income_Type) · Flow 13 (Time-Off — Path A W-2 paid DTO check Used_DTO vs DTO_Days; Path B International unpaid hiatus no limit) · Flow 34 / 35 / 36 (payroll, PTO approval, Dots retainer) · Table A / Table B (Level Title, Base_Income, Base_Income_Flex, Base_Income_Type, DTO_Days)
4References/QnA from clients/03_STAGE2_DASHBOARD_EVALUATION/Settings + Career + Viral/QnA_STAGE2_SETTINGS_CAREER_VIRAL_EN.md §10[HR-DEF-01] (Adrian Stack, 2026-08-15) + 3 điểm BA tự raise chưa hỏi khách (field nguồn của PTO, refresh cadence, state khi Rippling unreachable) + Open Item #21
5References/WBS/[BA Internal] Stacktrading.csvUC_4.16.2 = STAGE 2.2: DASHBOARD LIVE / Level-Up & Certificate / Career & HR Widget"Display vacation days, next pay date, lastest certificate" → folder dashboard_live/
6Chỉ đạo khách relay cho BA 2026-08-26Rule hiển thị [Manage Payouts] (ẩn nếu W-2, còn lại → Dots login, tab mới) và [View in Rippling] (mở Rippling tab mới, login page → employee homepage)
7Design frame màn Career khách gửi 2026-08-26Toàn bộ label/string trong §9

⚠️ References/CR/ — grep toàn bộ với rippling, dots, vacation, PTO, pay date, payout, career, W-2: không có CR nào thay đổi phần hiển thị Career & HR. Các CR có chạm Rippling/Dots (CR-20260812-010 ICA TTL 7 ngày, CR-20260812-006 Dots suspension listener, CR-20260813-001 Dots song song Veriff) đều thuộc STAGE 3 KYC & Live Onboarding, không ảnh hưởng màn này. Không có conflict CR cần xử lý.


1. Câu hỏi cần khách / BE chốt

IDLoạiCâu hỏiVì sao phải chốtStatusBA Answer
Q-01BLOCKING BEField nào phân biệt US W-2 Employee vs International Contractor? GET /hr-integration chỉ trả compensation_track (Standard/Flex), nhưng US Track B (Flex Cash) International Contractor đều mang Flex. Current Level Detail thì nói "Evaluate the user's Level and W-2 status" — tức là có discriminator nhưng chưa từng được đặt tên trong payload nàoThiếu field này thì 4 tile + 1 button cùng chết: badge Employment status không resolve được, [Manage Payouts] không biết ẩn/hiện, Benefits / Vacation days / Next pay date không chọn được state. Trùng Open Item #8 của UC_4.16.1Pending BA answer
Q-02BLOCKING BERefresh cadence của read Rippling là gì — gọi API live mỗi request hay cache có TTL? (BA raise 2026-08-15 trong QnA STAGE 2, chưa đưa khách)Quyết định "current" trên màn này nghĩa là gì; và quyết định trader book PTO trong Rippling xong quay lại dashboard thấy số mới ngay hay vài giờ sau. Cũng quyết định rate-limit Rippling có lộ ra trader khôngPending BA answer
Q-03BLOCKING BEvacation_days là số ngày CÒN LẠI hay số ngày ĐƯỢC CẤP? Flow 13 Path A check Used_DTO vs DTO_Days ⇒ Rippling có cả 2 số. Design frame vẽ 10 trên caption 10 days PTO (Levels 6-13) — đúng lúc 2 số bằng nhau nên che mất hoàn toàn sự mơ hồNếu là entitlement, trader đã dùng 8/10 ngày vẫn đọc thấy 10 và lên kế hoạch trên số ngày họ không cóPending BA answer
Q-04UXTile Vacation days hiển thị gì cho International Contractor? Flow 13 Path B cho "No limit on requested days" (hiatus không lương) — đây không phải một balanceRender 0 sẽ đọc thành "bạn không có ngày nghỉ nào", ngược hoàn toàn với sự thật. Có thể phải ẩn hẳn tilePending BA answer
Q-05UXCaption chu kỳ trả lương là chuỗi cố định hay derive? Design frame hardcode Bi-weekly direct deposit, nhưng trigger Flow 34 là "Bi-Weekly/Monthly Payroll Run Cleared", còn International Contractor là retainer hằng tháng qua Dots (Flow 36)Trader trả lương theo tháng mà màn hình bảo họ được trả 2 tuần/lần → ticket payroll. Cần hoặc thêm field cadence vào payload, hoặc chốt rule derivePending BA answer
Q-06CONFLICTpayout_portal_url nhánh W-2 giờ thành dead data. RFQ quy định Level 6+ US W-2 ⇒ payout_portal_url = Rippling employee portal URL. Nhưng chỉ đạo khách 2026-08-26 ẩn [Manage Payouts] đúng với nhóm đó ⇒ nhánh này không còn ai consume trên tab CareerCần xác nhận BE có ngừng populate nhánh Rippling không, hay còn consumer khác. Cũng cần xác nhận không có chỗ nào khác trên dashboard render link payout cho trader W-2Pending BA answer
Q-07UX[View in Rippling] có hiện cho trader không phải W-2 không? Flow 6 Path B ghi "No Rippling API action is required, as the International Contractor signed their agreement at Level 1" ⇒ họ record Rippling (cho ICA) nhưng không có payroll/PTO/benefits trong đó. Chỉ đạo khách không nêu điều kiện hiển thịContractor bấm vào employee portal trống trơn = dead end khó hiểu; nhưng ẩn đi thì mất luôn đường vào ICA đã ký của họ. Cả 2 phương án đều hợp lý — khách phải chọnPending BA answer
Q-08UICopy cho empty state và error state của từng tile là gì? Không source nào của khách cho chuỗi "chưa có gói benefits", "chưa có lương cứng", "PTO không khả dụng", "Rippling unreachable"6 tile × 3 state không có copy = FE không build được, QC không test được. Chốt xong phải đăng ký toast vào Common_rule/list-toast-popup.md cạnh TE-SYS-01Pending BA answer
Q-09UIBenefits hiển thị rút gọn (~$13K) hay đầy đủ? Design frame vẽ dạng rút gọn có dấu ngã — CR-11 không định nghĩa dạng nàyNếu khách muốn rút gọn thì phải chốt rule làm tròn (~$13K từ $13,412?) và bổ sung clause abbreviated-display vào CR-11 để các màn khác làm giống hệtPending BA answer
Q-10BLOCKING BEPath chính xác của 2 endpoint là gì? RFQ chỉ đặt tên chức năng (HR Integration, Current Level Detail), không cho routeSRS đang viết GET /hr-integrationGET /current-level-detail theo convention của các UC dashboard khác. Phải pin trước khi FE integratePending BA answer
Q-11BECurrent Level DetailHR Integration trùng dữ liệu — cái đầu đã trả SalaryPTO, cái sau trả base_salary_annualizedvacation_days. Field nào là source of truth cho tab Career?Nếu 2 endpoint trả 2 giá trị lệch nhau, cùng một màn hình sẽ hiển thị 2 sự thật khác nhau tuỳ tile. SRS đang viết theo hướng HR Integration thắng cho 4 tile HR, Current Level Detail chỉ dùng cho Level/Title/payout_portal_urlPending BA answer
Q-12UXTab Career có tồn tại cho trader LIVE Level 1–5 không? [HR-DEF-01] nói Career & HR chỉ có khi trader đã contracted; nhưng Level 1–5 là contractor 1099/ICA, Base_Income = $0, DTO_Days = 0 ⇒ 4/6 tile đều emptyNếu tab hiện với gần như toàn bộ tile rỗng thì trải nghiệm rất tệ — có thể phải ẩn tab hoặc đổi layout cho nhóm này. SRS đang viết là tab vẫn hiện, tile tự degradePending BA answer
Q-13UXTrader được promote khi đang đứng ở tab Career thì sao? UC này không listen LEVEL_PROMOTION; cinematic force-redirect sang tab Command ([LUC-UI-04]) rồi trader tự quay lạiSRS đang viết là dữ liệu chỉ refresh khi remount tab. Cần xác nhận khách chấp nhận việc Current level / Base salary "cũ" trong khoảng thời gian đóPending BA answer
Q-14TRACEABILITYDesign frame màn Career (2026-08-26) chưa được check vào References/Wireframe/. Toàn bộ string trong §9 đang cite tới một artefact repo không giữFail source-of-truth audit. Cùng finding với Open Item #14 của UC_4.16.1Pending BA answer

2. Giả định BA tự đóng (không chặn viết doc)

IDGiả địnhCăn cứĐã viết vào
A-01Tab Career là read surface thuần, không có bất kỳ request ghi nào (POST/PUT/PATCH/DELETE)[HR-DEF-01] verbatim: "You are just reading in the current value in this screen"BR_4.16.2.12
A-022 endpoint gọi song song, độc lập, fail cái nào chỉ hỏng tile của cái đóKhông source nào ràng buộc thứ tự; ghép chuỗi sẽ làm cả tab chết vì 1 lỗiBR_4.16.2.2, BR_4.16.2.13
A-03Tab Career tái dùng response Current Level Detail mà dashboard đã gọi lúc load, không gọi lại lần 2RFQ ghi rõ payout_portal_url được cấp "upon dashboard load"BR_4.16.2.2
A-04Fetch on mount, không polling, không WebSocket cho dữ liệu HRKhông giá trị nào trên tab này đổi theo nhịp trading; vacation_days đổi khi Rippling duyệt, next_pay_date đổi khi chạy payrollBR_4.16.2.14
A-05null render empty state, tuyệt đối không thay bằng 0 / $0.00 / ngày bịa"Chưa biết" và "bằng 0" là 2 sự thật khác nhau; với salary và PTO thì nhầm lẫn này gây thiệt hại thậtBR_4.16.2.13
A-06Title lấy từ Level Title của Table A/B, FE không tự suy ra từ số levelCùng nguyên tắc với UC_4.16.1 — Zapier Table chỉ đọc server-sideBR_4.16.2.4
A-07base_salary_annualized đã được annualize server-side; FE không bao giờ quy đổi từ Hourly sang nămFlow 8 đã định nghĩa sẵn công thức quy đổi (Rate × ((Standard_Hours × 52) / 12)) ở phía serverBR_4.16.2.5
A-08Track B (Flex Cash) và contractor không có benefits_estimateFlow 6 chỉ cho enroll benefits ở Track A (Full Benefits)BR_4.16.2.6
A-09Band DTO_Days: L1–5 = 0 · L6–13 = 10 · L14–21 = 15 · L22–24 = 20; resolve server-sideĐọc trực tiếp cột DTO_Days của Table A và Table B; khớp caption 10 days PTO (Levels 6-13) trong design frameBR_4.16.2.7
A-10Cả 2 button đều target="_blank" + rel="noopener noreferrer", không kèm token/user_id/PII trên URL, không interstitial/confirm/toastRFQ ghi "standard target="_blank" redirect to open the static vendor URL"; static URL ⇒ vendor tự authenticateBR_4.16.2.11
A-11[Manage Payouts] khi không đủ điều kiện thì ẩn hẳn, không render dạng disabledChỉ đạo khách dùng đúng chữ "hide this button"; button payout trỏ vào hư vô còn tệ hơn không có buttonBR_4.16.2.9
A-12[View in Rippling] vẫn render kể cả khi cả 2 endpoint failURL của nó là environment config, không phải response data. Khi dashboard không hiển thị nổi dữ liệu HR thì lối thoát sang hệ thống sở hữu dữ liệu đó càng phải sốngBR_4.16.2.13
A-13TE-SYS-01 bắn 1 lần / 1 lần load tab, không phải mỗi tile lỗi một toastNhất quán với cách các UC dashboard khác dùng TE-SYS-01BR_4.16.2.13
A-14Không có nút retry và không auto-retry trên tab này; recovery = vào lại tabDữ liệu tĩnh, không đáng thêm state machine retryBR_4.16.2.13
A-15Mọi tile dùng wrap text, không truncate ellipsisSalary hoặc pay date bị cắt là không đọc được, khác với việc chỉ bị nénBR_4.16.2.15

3. Impact sang tài liệu khác

#Tài liệuImpactTrạng thái
1UC_4.16.1 (Level-Up Cinematic & Certificate)Đã đổi số từ UC_4.16.2 → UC_4.16.1 cho khớp WBS. BR_4.16.2.xBR_4.16.1.x, title đổi thành "Level-Up Cinematic & Certificate (LIVE)", BR_4.16.1.1 giờ trỏ các tile HR sang UC này✅ Đã apply
2UC_4.1.1–4.1.5 §UC_4.1.2 Sidebar Tab ListDòng map tab Career phải trỏ cả 2 UC: UC_4.16.1 (certificate) + UC_4.16.2 (HR tiles), bỏ ghi chú "the remaining HR tiles are not documented"✅ Đã apply
3dashboard_live/index.mdBảng UC index: UC_4.16.1 = Level-Up Cinematic & Certificate (đã có doc), UC_4.16.2 = Career & HR Widget (đã có doc)✅ Đã apply
4UC_4.1-4.17/index.mdDòng map Career & HR Widget → UC_4.16.2 (giữ nguyên, nay đã có doc thật)✅ Đã apply
5References/WBS/[BA Internal] Stacktrading.csvRow UC_4.16.2 đang trống toàn bộ Mapping BE / Mapping FE / Mapping 3rd party / Reference. Cần BA cập nhật: BE = GET /hr-integration + GET /current-level-detail; FE = 6 tile + 2 outbound button; 3rd = Rippling, Dots⏳ Chờ BA cập nhật WBS
6Common_rule/list-toast-popup.mdSau khi chốt Q-08, đăng ký copy empty/error state của các tile HR (nếu khách muốn toast riêng thay vì dùng chung TE-SYS-01)⏳ Chờ Q-08
7Common_rule/common_rules.md — CR-11Sau khi chốt Q-09, bổ sung clause abbreviated monetary display (~$13K) để mọi màn làm giống nhau⏳ Chờ Q-09
8UC_4.17.2 (Account Actions — Resign Account)Nút đỏ Resign & Close Account nằm cùng màn Career theo RFQ §Part C. Cần cross-ref 2 chiều để không ai viết trùng⏳ Cần rà
9STAGE 5: PAYOUT & WITHDRAWAL (chưa viết)UC này chỉ định nghĩa [Manage Payouts] hiện/ẩn và trỏ đi đâu. Toàn bộ cơ chế payout ở phía bên kia link thuộc STAGE 5 — phải nhất quán về việc trader W-2 không có route payout từ dashboard⏳ Chưa viết
10STAGE 6: CAREER PATH & PROFESSIONALIZATION (chưa viết)Flow 6 / Flow 8 / Flow 13 là producer của mọi giá trị trên tab này. Cần nhất quán về Comp_Track, Standard_Hours, DTO_Days và discriminator W-2 của Q-01⏳ Chưa viết
11References/Customer supplies/_SOURCE_MANIFEST.yamlDesign frame màn Career 2026-08-26 chưa có entry (cùng vấn đề với 2 file của UC_4.16.1)⏳ Chờ Q-14

On this page