Giao diện
R2 — Danh sách User Story as-built (SAPP Works tools) ​
Tác giả: lane
ba/(AI) · Ngày: 2026-09-30 · Mode: B – As-built · Commit:e77c47aDành cho: BA confirm trước khi viết FS chi tiết (R3). Nguồn: 7 inventory đã qua Gate R1.
Sửa sau R3 (2026-09-30): người viết FS 26878 phần A đối chiếu inventory: A-80…A-83 là flow Chuyển nhượng (US-D08), A-90…A-92 là màn re-sync / gửi lại (US-D18); tổng số bước là 250. Bảng dưới đã sửa theo.
Quy ước ​
- Mã US có tiền tố nhóm để không trùng với số story gốc của ticket SAPP (26878 có "story US-03", 26297 có "AC1…"):
US-Pnền tảng ·US-HHubSpot ·US-EeContract 20603 ·US-I24395 ·US-T23954 ·US-D26878 ·US-S26297. Tên file:US-P01-<slug>.md. - Role: mọi US ghi "Người dùng tool" — Assumption (G-01 chưa trả lời). US-P03/P04 là Admin CMS (có quyền
tools:*/env_systems:*, Fact từ code). - Cột "Ghi": US đó có ghi dữ liệu lên hệ thống ngoài không, và môi trường nào.
PROD= có đường ghi production (kể cả qua "staging" HubSpot = portal prod). - Nguồn A-xx = mã hành động trong inventory của nhóm; mọi A-xx phải xuất hiện ≥ 1 lần.
- Không có Priority (as-built — đã triển khai hết).
FS 1 — Nền tảng dùng chung · docs/fs/sapp-platform-as-built-v0.1-20260930/ ​
Inventory: platform
| US | Tên User Story | Role | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-P01 | Mở workspace SAPP, duyệt sidebar và mở một tool | Người dùng tool | — | A-01, A-03, A-04, A-05, A-06, A-07, A-09 |
| US-P02 | Truy cập tool đang bật / ẩn / khoá (mở khoá bằng mã bí mật) | Người dùng tool | — | A-02, A-08 |
| US-P03 | Quản trị trạng thái tool và nhóm tool | Admin CMS | DB mind_keep | A-10, A-11 |
| US-P04 | Cấu hình kết nối hệ ngoài theo môi trường (env_systems) | Admin CMS | DB mind_keep | A-12 |
| US-P05 | Tra vết log SAP và theo dõi / kích hoạt đợt quét doanh thu | Người dùng tool (qua sub-tool) | dev/staging (quét) | A-13, A-14, A-15 |
| US-P06 | Đóng vai SAP: dựng callback đã ký | Người dùng tool (qua sub-tool) | dev/staging | A-16 |
| US-P07 | Thêm option vào property danh sách của HubSpot dev | Người dùng tool (qua sub-tool) | dev | A-17 |
| US-P08 | Đọc / ghi SAPP Ops qua passthrough (auto-login, kiểm tra kết nối) | Người dùng tool (qua sub-tool) | PROD | A-18, A-19, A-21 |
| US-P09 | Chạy câu SQL đã lập danh mục trên DB Ops | Người dùng tool (qua sub-tool) | dev/staging | A-20 |
Overview sẽ chứa phần chung: 259 route @Public() (NFR/Observed), cơ chế fail-closed, bảng môi trường.
FS 2 — HubSpot · docs/fs/sapp-hubspot-as-built-v0.1-20260930/ ​
Inventory: hubspot · sub-tool sapp.001–004
| US | Tên User Story | Tool | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-H01 | Tra định nghĩa một property | sapp.003 Get property | — | A-01, A-02, A-11 |
| US-H02 | Clone property từ prod sang dev | sapp.001 Clone prod to dev | dev | A-03 |
| US-H03 | Xem lịch sử thay đổi property trên một bản ghi | sapp.002 Snapshot property | — | A-04 |
| US-H04 | Xem danh sách pipeline và stage | sapp.004 Pipeline | — | A-05, A-06 |
| US-H05 | Clone pipeline từ prod sang dev | sapp.004 Pipeline | dev | A-07 |
| US-H06 | Nhân bản pipeline trong cùng portal | sapp.004 Pipeline | dev · PROD | A-08, A-09 |
A-10 (gọi route không có UI, kể cả staging) → Overview (Observed), không thành US.
FS 3 — SAPP-20603 eContract · docs/fs/sapp-20603-econtract-as-built-v0.1-20260930/ ​
Inventory: 20603 · sub-tool sapp.005, 012, 013
| US | Tên User Story | Tool | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-E01 | Kiểm tra flow process eContract của một deal | sapp.005 Retry | — | A-01, A-02 |
| US-E02 | Retry các flow FAIL và chờ cron xử lý | sapp.005 Retry | PROD (DB econtract → EFY/FPT) | A-03, A-04, A-05 |
| US-E03 | Chia sẻ kết quả retry (copy gửi dev, mở Check luồng) | sapp.005 Retry | — | A-06, A-07 |
| US-E04 | Xem timeline luồng eContract của một deal | sapp.012 Check luồng | — | A-08, A-09 |
| US-E05 | Thống kê lỗi eContract theo khoảng thời gian | sapp.013 Thống kê lỗi | — | A-10, A-11 |
| US-E06 | Xem danh sách deal lỗi và trạng thái tự hồi phục | sapp.013 Thống kê lỗi | — | A-12 |
FS 4 — SAPP-24395 · docs/fs/sapp-24395-as-built-v0.1-20260930/ ​
Inventory: 24395 · sub-tool sapp.006, 007
| US | Tên User Story | Tool | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-I01 | Chọn môi trường và xem contact / deal đã tạo bằng tool | sapp.006 | — | A-01, A-02, A-08 |
| US-I02 | Tạo contact test (trùng email → cập nhật contact cũ) | sapp.006 | dev · PROD (qua "Staging") | A-03, A-04 |
| US-I03 | Tạo deal test theo 14 deal case và gắn contact | sapp.006 | dev · PROD (qua "Staging") | A-05, A-06, A-07 |
| US-I04 | Bulk product: bắt đầu session, nạp và tạo course category | sapp.007 | Ops (môi trường theo SAPP_BASE_API_URL, ❓) | A-09, A-10, A-11, A-16, A-17 |
| US-I05 | Bulk product: nạp và tạo subject còn thiếu | sapp.007 | Ops ❓ | A-12, A-13 |
| US-I06 | Bulk product: tạo product và xem báo cáo kết quả | sapp.007 | Ops ❓ | A-14, A-15 |
FS 5 — SAPP-23954 · docs/fs/sapp-23954-as-built-v0.1-20260930/ ​
Inventory: 23954 · sub-tool sapp.008, 009
| US | Tên User Story | Tool | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-T01 | Truy vấn ticket theo pipeline / cap_nhat_owner / owner / ngày | sapp.008 (subtool 1) | — | A-01, A-02, A-03, A-04, A-05 |
| US-T02 | Làm mới cap_nhat_owner hàng loạt | sapp.008 (subtool 2) | dev · PROD | A-06, A-07 |
| US-T03 | Tự kiểm tra thay đổi owner sau khi làm mới | sapp.008 (subtool 3) | — | A-08 |
| US-T04 | Xem và tải lại lịch sử làm mới | sapp.008 | Redis mind_keep | A-09, A-10 |
| US-T05 | Check snapshot một ticket | sapp.009 (subtool 4) | — | A-11, A-12 |
FS 6 — SAPP-26878 · docs/fs/sapp-26878-as-built-v0.1-20260930/ ​
Inventory: 26878 · sub-tool sapp.010 · 14 flow, 250 bước (P1 = 56, P2 = 194; số 223 ở Gate R1 đếm thiếu — sửa ở R3)
Ba US đầu mô tả khung chạy dùng chung cho mọi flow; mỗi flow sau đó là 1 US, chỉ mô tả chuỗi bước + điều kiện riêng, tham chiếu loại bước ở US-D03 thay vì lặp lại.
| US | Tên User Story | Story SAPP gốc | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-D01 | Chạy một flow test theo stepper (chọn portal, chọn flow, bỏ qua, reset, lưu / khôi phục phiên) | — | — | A-01, A-02, A-03, A-04, A-05, A-06, A-07 |
| US-D02 | Xem lịch sử run và log SAP của một flow | — | Redis mind_keep | A-08, A-09, A-10 |
| US-D03 | Thực hiện một bước theo loại (deal · guide · stage · sync · link · resync · ops · option · classcode · scan · trace · sql) | — | HubSpot · Ops · SAP (theo portal; BE nhận cả prod) | A-20 → A-31 |
| US-D04 | Flow P1: Học phí thường | US-03 | theo portal | A-40 → A-46 |
| US-D05 | Flow P1: Gia hạn / Bảo lưu | US-05 | theo portal | A-50 → A-55 |
| US-D06 | Flow P1: CBE / Cert / Becker | US-06 | theo portal | A-60 → A-65 |
| US-D07 | Flow P1: Chuyển đổi (chuỗi 3 deal) | US-11 | theo portal | A-70 → A-74 |
| US-D08 | Flow P1: Chuyển nhượng (3 deal, 2 học viên) | US-13 | theo portal | A-80 → A-83 |
| US-D09 | Flow P2: DTTH theo buổi | US-01 | staging / dev | A-100 → A-117 |
| US-D10 | Flow P2: DTTH lớp online | US-02 | staging / dev | A-120 |
| US-D11 | Flow P2: DTTH chốt sổ | US-03 | staging / dev | A-121 |
| US-D12 | Flow P2: DTTH ghi bù (học viên A/B) | US-04 | staging / dev | A-122 |
| US-D13 | Flow P2: DTTH rời lớp (A rời / B nhận) | US-05 | staging / dev | A-123 |
| US-D14 | Flow P2: DTTH đảo buổi | US-06 | staging / dev | A-124 |
| US-D15 | Flow P2: Trường chiều | US-07 | staging / dev | A-125 |
| US-D16 | Flow P2: DTTH đồng bộ lại | US-08 | staging / dev | A-126 |
| US-D17 | Flow P2: DTTH đồng bộ ngược (⏸ chờ SAPP: sign-callback) | US-09 | staging / dev | A-127 |
| US-D18 | Đồng bộ lại theo story và gửi lại thô (5 màn re-sync, 3 màn gửi lại) | US-08/09/10/12/14 | theo portal | A-90 → A-92; E-03, E-06 (inventory §2.1) |
Trace và "Chạy lượt quét" của 26878 → tham chiếu US-P05 (nền tảng), không lặp.
FS 7 — SAPP-26297 · docs/fs/sapp-26297-as-built-v0.1-20260930/ ​
Inventory: 26297 · sub-tool sapp.011 · 9 luồng, 78 case · chỉ dev/staging
| US | Tên User Story | Luồng / ticket | Ghi | Nguồn A-xx |
|---|---|---|---|---|
| US-S01 | Nhập fixture và chạy một case (gọi API · SQL · hướng dẫn, tự chấm, ghi ngược fixture) | khung chung | theo bước | A-01 → A-12 |
| US-S02 | Chuẩn bị điều kiện và dọn dữ liệu sau test | Chuẩn bị · Dọn | DB dev/staging | (case 0.1, 0.2) |
| US-S03 | Chuyển nhượng suất học cho học viên khác | Luồng 1 | Ops dev/staging | A-20, A-21, A-24 |
| US-S04 | Hủy chuyển nhượng | Luồng 2 | Ops dev/staging | A-22, A-23 |
| US-S05 | Kiểm tra các trạng thái chặn chuyển nhượng | Luồng 3A | Ops dev/staging | (case 3A.x) |
| US-S06 | Kiểm tra các trạng thái chặn xóa học viên | Luồng 3B | Ops dev/staging (xóa mềm thật) | A-25 |
| US-S07 | Kiểm tra các trạng thái chặn hủy chuyển nhượng | Luồng 3C | Ops dev/staging | (case 3C.x) |
| US-S08 | Kiểm tra khoá học của học viên trên LMS (⏸ thiếu URL LMS, lỗi 13058) | Luồng 4 · SAPP-28974 | — | A-26 |
| US-S09 | Đồng bộ lại qua ticket HubSpot (⏸ bị guard SAPP chặn) | Luồng 5 · SAPP-28978 | HubSpot dev | A-27 → A-32 |
| US-S10 | Kiểm tra mail thông báo | Luồng 6 · SAPP-28980 | — | (case 6.x) |
BRD tóm tắt · docs/brd/brd-as-built-v0.1-20260930.md ​
Một BRD cho cả cụm: vấn đề nghiệp vụ mỗi nhóm tool phục vụ, phạm vi, rule nghiệp vụ chính. Mục tiêu / KPI đánh dấu Assumption (G-05 chưa trả lời), ghi "Reconstructed from code @e77c47a".
Tổng ​
| FS | Số US |
|---|---|
| Nền tảng | 9 |
| HubSpot | 6 |
| 20603 eContract | 6 |
| 24395 | 6 |
| 23954 | 5 |
| 26878 | 18 |
| 26297 | 10 |
| Tổng | 60 + BRD tóm tắt |