StackTrading Docs

QnA Init Docs — UC_8.2.2 (Flow 10.1A - Trading Plan Ingestion)

UC liên quan: UC_8.2.2 — Flow 10.1A: Trading Plan Ingestion Trigger: Mentee submit form Trading Plan trên Typeform Agent tạo: Agent 1 (Auditor) + Agent 2 (Challenger), theo system_init_workflow.md — Init Flow Ngày tạo: 2026-10-12 · Phiên bản: v1 BA phụ trách: Anh Hoang Ghi chú: Thay thế bản QnA_init_docs ngày 2026-10-10 (đã xoá cùng UC cũ). Câu hỏi cũ được mang sang, ghi ID cũ trong ngoặc. Phân chia sở hữu nội dung giữa 8 UC Pod: UC_8.2.1 §4.1.


0. Compliance Checklist (Agent 1 — Auditor)

#Hạng mụcKết quảGhi chú
1Source pre-flight✅Không có CR về Flow 10.1A. QnA: QnA_STAGE6_POD_SYSTEM_FLOW10_11.md v1.7. Nguồn gốc: Zapier Integration V7.pdf §Flow 10.1A · RFQ_ Stack Trading Prop Tech V7.pdf §Analyze Trading Plan
2CR-08 Timestamp✅Thời điểm submit, Induction_Due, bản ghi PDF
3CR-18 Webhook no-op⚠️Ca mentee chưa có leader vẫn lưu PDF — khác "no data is written" của CR-18. Xem A-08
4CR-15.2 Slack✅"Zap Error" → #ops-general (P-01)
5WBS✅UC_8.2.2, category STAGE 6. WBS ghi "Gemini 1.5 Pro" — đã bị QnA override (O-02)
6Folder✅docs/BA/UC_8.1-8.5/UC_8.2.2/
7[MISSING_DEPENDENCY]⚠️UC_8.2.3, UC_8.2.4, UC_8.2.5 viết cùng đợt
8[CROSS_UC_CONFLICT]⚠️list_email.md KLA-13 — xem C-02
9Spec V7 bị QnA override✅Xem §2

1. Đã chốt từ QnA / nguồn — không hỏi lại

IDNội dung đã chốtNguồn
Q-01Form Trading Plan trên Typeform, tách riêng form Style. Stack Trading đưa câu hỏi, Sotatek dựng form + webhook; không có UI Dashboard (Day 2)POD-JOIN-02/03, POD-XF-08
Q-02Form có hidden field user_idPOD-PLAN-16
Q-03Ảnh = screenshot chart/setup, render inline trong Google Doc; tối đa 3 ảnh, mỗi ảnh ≤ 5MB — cấu hình trong Typeform builderPOD-PLAN-04/15
Q-04Câu "Legal/Consent" bắt buộc ở cuối form, trước nút submit (copy T-03)POD-PLAN-13
Q-05"Immutable" = câu trả lời khoá sau khi submit, sinh PDF tĩnhPOD-JOIN-03
Q-06Link vẫn nhận sau 72 giờ; nộp muộn chạy flow bình thường, không có hậu quả hệ thốngPOD-PLAN-06
Q-07Action 1–3 chạy hoàn toàn trong Zapier; dùng action "Create Document from Template" bằng tài khoản Google công ty; Stack Trading tạo & giữ templatePOD-PLAN-01/14
Q-08Link ảnh tạm của Typeform — không cần xử lý ảnh hết hạnPOD-PLAN-03
Q-09PDF lưu S3 vĩnh viễn; link công khai sinh bằng UUID (không presigned); mentee không xem lại; leader cũ giữ email gốcPOD-PLAN-10
Q-10POST /analyze-trading-plan nhận user_id + document_s3_url, trả 200 OK ngay, chạy nền; Middleware tự tra email leader từ user_idV7 §Analyze Trading Plan, POD-PLAN-16
Q-11Link PDF lưu trong PostgreSQL để luồng khác đọcPOD-BRIEF-13
Q-12Đóng Plan_Due, mở Induction_Due = lúc submit + 5 ngày lịch (rolling — nộp muộn thì leader vẫn đủ 5 ngày)V7 Flow 10.1A Action 5, POD-PLAN-06/08
Q-13Mentee chưa có leader (đang waitlist) → không chạy AI, không email, 200 OK; PDF vẫn lưuPOD-PLAN-09
Q-14Gemini 3.1 Pro + Extended Thinking; timeout 120s; 3 retry (2s → 4s → 8s); hết retry → ai_analysis = AI analysis temporarily unavailable. và vẫn bắn webhookPOD-DISP-05/12
Q-15Không human review; mentee không bao giờ nhận phân tích AIPOD-PLAN-12, POD-DISP-04
Q-16Prompt phân tích plan = prompt V7 (nguyên văn)QnA RACI hạng mục 5
Q-17Webhook TRADING_PLAN_ANALYZED gồm mentor_email, pdf_url, ai_analysisV7 §Analyze Trading Plan
Q-18Zap lỗi → Zapier tự chạy lại theo plan; hard-fail → "Zap Error" vào Slack Ops; Sotatek cấu hình Zapier Manager, không build handler riêngPOD-PLAN-11
Q-19Nộp lại = sự kiện mới → PDF mới → email cập nhật cho leader; không lọc trùngPOD-PLAN-05

2. Spec V7 bị QnA override — đã áp, không cần BA quyết

IDSpec V7QnA (thắng)
O-01Action 4 truyền mentor_email + link PDFTruyền user_id + document_s3_url; Middleware tự tra email (POD-PLAN-16)
O-02Analyze Trading Plan dùng Gemini 1.5 ProGemini 3.1 Pro + Extended Thinking, timeout 120s, 3 retry (POD-DISP-05)
O-03"Database logs SLA_Deadlines" (không nói bảng ở đâu)Bảng PostgreSQL mới SLA_Deadlines (POD-SLA-03) — định nghĩa tại UC_8.2.4

3. Conflict — cần BA quyết

IDCâu hỏiGiả định (BA/QC đề xuất)BA chốt (ưu tiên cao nhất)Trạng thái
C-02[CROSS_UC_CONFLICT] list_email.md có KLA-13 Template_Mentee_Trading_Plan (Klaviyo — "form distribution"), nhưng QnA chốt link Trading Plan đi qua Pod_Assignment_Confirmation + welcome ping + email SLA. KLA-13 còn dùng không?Flow 10.1A không dùng KLA-13. Hỏi khách bỏ KLA-13 khỏi danh sách hoặc nói rõ dùng ở đâu.⏳ Chờ BA 🟡

4. Câu hỏi & giả định (Agent 2 — Challenger)

IDCâu hỏiGiả định (BA/QC đề xuất)BA chốt (ưu tiên cao nhất)Trạng thái
A-01Ai ghi DB ở Action 5? V7 để Action 5 "Database logs Induction_Due and clears Plan_Due" là bước của Zap, nhưng SLA_Deadlines nằm trong PostgreSQL (POD-SLA-03) và Zap đã kết thúc ở Action 4 ("receives 200 OK and ends").Middleware tự làm Action 5 ngay khi nhận lời gọi Action 4, trước khi trả 200 OK (đóng Plan_Due, mở Induction_Due, lưu link PDF). Zapier không ghi DB.Toàn bộ Flow 10.1A do Middleware (Node.js) xử lý thay Zapier (dev đề xuất): Typeform gửi thẳng tới API Analyze Trading Plan; Middleware ghi SLA ngay khi nhận bài, rồi chạy nền map dữ liệu → Google Doc → PDF → S3 → Gemini → webhook. BA chốt 2026-10-15.✅ Đã chốt
A-02Zap lỗi trước Action 4 (cũ: A-02). Zap hard-fail ở Google Docs / PDF / S3 → Middleware không biết mentee đã nộp → Plan_Due không đóng → mentee vẫn bị gửi email breach. Khách nói "mentee không bị flag vì Plan_Due đã clear" (POD-PLAN-11) — không đúng với thứ tự này.Chấp nhận: Ops chạy lại Zap khi nhận "Zap Error"; không build thêm.Khách đã trả lời (POD-PLAN-11): Zapier tự chạy lại theo gói Company, hard-fail → alert Slack Operations; mentee không bị flag vì Plan_Due đóng ở Action 5. BA đóng 2026-10-15.✅ Đã chốt
A-03Nộp lại và Induction_Due (cũ: A-03). POD-PLAN-05 chốt nộp lại = sự kiện mới nhưng không nói SLA. Mở Induction_Due mới mỗi lần nộp sẽ reset hạn 5 ngày của leader, hoặc mở lại hạn đã đóng dù leader đã đặt lịch.Chỉ mở Induction_Due ở lần nộp đầu tiên trong pod hiện tại; lần nộp sau chỉ sinh PDF + email cập nhật, không đổi SLA.Mỗi trader chỉ nộp 1 lần; trang wrapper chặn lần 2 (thay POD-PLAN-05). Đổi sang pod mới → dùng lại Trading Plan đã nộp ("The Trading Plan should just be reused"), không nộp lại; leader mới nhận PDF và Induction_Due lúc gán pod. Thêm chặn ở backend: chỉ ghi Induction_Due = T+5 khi lần gán pod hiện tại chưa có (IS NULL), không ghi đè / mở lại hạn đang mở hoặc đã đóng. Khách trả lời 2026-10-22.✅ Đã chốt
A-04Nộp khi đang waitlist rồi được gán pod (cũ: A-04). POD-PLAN-09 chỉ nói PDF "lưu để dùng khi được assign". Khi Flow 11 gán pod: (1) có mở Plan_Due 72 giờ không? (2) PDF đã nộp có tự được phân tích, gửi leader mới và mở Induction_Due? (3) Mentee waitlist lấy link form ở đâu (link chỉ gửi khi đã có pod)?(1) Đã có PDF → không mở Plan_Due. (2) Middleware tự chạy phân tích + email + mở Induction_Due với PDF mới nhất. (3) Không có đường chính thức — chỉ xảy ra khi dùng lại link cũ. Ảnh hưởng UC_8.2.1 / UC_8.2.8.Theo giả định: (1) không mở Plan_Due; (2) Middleware tự phân tích PDF mới nhất, gửi webhook, mở Induction_Due cho leader mới (= lúc gán + 5 ngày lịch); (3) không có đường chính thức. BA chốt 2026-10-15.✅ Đã chốt
A-05Field thiếu cho email leader (cũ: A-07). T-04 cần Leader_Name, Mentee_Name, calendar_link nhưng TRADING_PLAN_ANALYZED (V7) chỉ có mentor_email, pdf_url, ai_analysis.Webhook bổ sung tên Pod Leader, tên mentee, link đặt lịch của leader và mã mentee (tên trường do BE chốt trong OpenAPI spec). Nơi lưu calendar_link → UC_8.2.3 A-02.Middleware tra và gửi kèm trong webhook: tên Pod Leader, Master Calendar link (từ Pod_Leader_Registry theo leader của mentee), tên mentee (từ Users). Tên trường do BE chốt. BA chốt 2026-10-15.✅ Đã chốt
A-06Chống trùng khi Zapier chạy lại Action 4 (cũ: A-06) [POD-XF-04] → 2 bản ghi, 2 lần gọi Gemini, 2 email cho leader.Middleware bỏ qua lời gọi có document_s3_url đã tồn tại (CR-18).Middleware bỏ qua lời gọi có document_s3_url đã nhận (200 OK, CR-18). BA chốt 2026-10-15.✅ Đã chốt
A-07Người không còn đủ điều kiện vẫn nộp (cũ: A-08) — link không hết hạn: đã terminate/resign, Inactive_Hold, đã lên Level 7.Đã rời pod → pod_leader_id rỗng → xử lý như Q-13 ở §1 (chỉ lưu PDF). Không cần rule riêng.⏳ Chờ BA 🟡
A-08CR-18 cho ca lưu một phần (cũ: A-11). CR-18 định nghĩa "no data is written", nhưng ca waitlist vẫn lưu link PDF.Ref CR-18 cho phần phản hồi 200 OK; UC ghi rõ ngoại lệ "vẫn lưu link PDF". Không sửa CR-18.⏳ Chờ BA 🟡
A-09Mốc tính Induction_Due (cũ: A-09). POD-PLAN-08 tính từ lúc submit, nhưng Action 4 không truyền thời điểm submit; nếu Zap chạy lại, Middleware nhận trễ hàng giờ.Zapier truyền thêm thời điểm submit của Typeform (tên trường do BE chốt trong OpenAPI spec); Middleware dùng làm mốc.Khách đã trả lời (POD-PLAN-08): tính từ lúc Typeform được submit, 5 ngày lịch, rolling. BA đóng 2026-10-15.✅ Đã chốt
A-10Upload PDF lên S3 ở Action 3: ai cấu hình bucket + quyền truy cập cho Zapier, ai đặt tên file theo UUID (POD-PLAN-10)?Sotatek cấu hình action AWS S3 trong Zap bằng tài khoản AWS của Stack Trading; tên file = UUID sinh trong Zap.Ngoài phạm vi BA — dev tự cấu hình. BA bỏ 2026-10-15.⛔ Bỏ
A-11Lưu nhiều phiên bản PDF. Nộp lại sinh PDF mới (POD-PLAN-05); Wednesday Brief cần biết bản nào là baseline (UC_8.2.5 A-04).Lưu mọi phiên bản kèm thời điểm submit; bản mới nhất được đánh dấu. Chọn baseline do UC_8.2.5 quyết.⏳ Chờ BA 🟡
A-12Tài khoản, API key, chi phí Gemini [POD-XF-12] (cũ: A-12) — áp cho UC_8.2.2, 8.2.5, 8.2.7.Stack Trading sở hữu tài khoản + billing; Sotatek cấu hình key trên Middleware.Ngoài phạm vi BA. BA bỏ 2026-10-15.⛔ Bỏ
A-13Lỗi trong phần chạy nền của POST /analyze-trading-plan. Middleware trả 200 OK ngay rồi mới tải PDF từ S3 và ghi database (V7 §Analyze Trading Plan). Không tải được PDF (link sai, file chưa có, S3 lỗi) hoặc ghi database lỗi thì Zapier không biết để chạy lại; POD-DISP-05 chỉ chốt thử lại cho lời gọi Gemini.Tải PDF lỗi → thử lại theo cùng nhịp với Gemini (3 lần, 2s → 4s → 8s); hết lượt → xử lý như AI lỗi: ai_analysis = AI analysis temporarily unavailable., vẫn gửi webhook. Ghi database lỗi → ghi log lỗi kèm user_id + document_s3_url để Ops chạy lại tay. Nếu A-01 chốt ghi database trước khi trả 200 OK thì lỗi ghi trả 500 và Zapier tự chạy lại.Khách duyệt Node.js làm Action 1–5. Lỗi phần chạy nền → ghi log + 1 Slack alert #ops-general (khách ghi #operations, map theo P-01): "Trading Plan Ingestion Failed for User [user_id] at Step [step_name]: [error_message]." Không thử lại; dừng xử lý lần nộp. Khách trả lời 2026-10-22.✅ Đã chốt
A-14Gửi webhook TRADING_PLAN_ANALYZED sang Zapier bị lỗi (Catch URL không nhận, lỗi mạng). Leader không nhận email Trading Plan nhưng Induction_Due của leader vẫn chạy → leader có thể bị breach dù chưa nhận plan. Nguồn chưa nói thử lại / cảnh báo (cùng nhóm POD-XF-04).Thử lại 3 lần, chờ 2s → 4s → 8s; vẫn lỗi → gửi Slack cảnh báo vào kênh Ops (như "Zap Error" ở BR_8.2.2.5) kèm tên mentee, email leader, link PDF để Ops gửi tay. Việc lưu PDF và cập nhật SLA không bị huỷ.Ghi log + 1 Slack alert #ops-general: "Failed to dispatch TRADING_PLAN_ANALYZED for User [user_id]". Không build hàng đợi gửi lại. Khách trả lời 2026-10-22.✅ Đã chốt

Impact analysis — dữ liệu Flow 10.1A ghi ra và nơi dùng tiếp

Dữ liệuDùng bởi
Bản ghi link PDF Trading PlanEmail leader (UC_8.2.3) · Wednesday Brief baseline (UC_8.2.5)
SLA_Deadlines — đóng Plan_Due, mở Induction_DueFlow 10.2 (UC_8.2.4) · Calendar Auditor đóng Induction_Due (UC_8.2.3)
Webhook TRADING_PLAN_ANALYZEDZapier Flow 10.1B (UC_8.2.3)

5. [PATTERN] Rule candidate cho common_rules.md

IDCâu hỏiGiả định (BA/QC đề xuất)BA chốt (ưu tiên cao nhất)Trạng thái
P-02[PATTERN] "Zap Error" → Slack (POD-PLAN-11) đúng cho mọi Zap của Pod System (Flow 10, 10.1A, 10.1B, 10.2, 10.3, 10.4, 10.5, 11), không riêng 10.1A.Gom thành common rule mới (CR-19 "Zapier hard-fail alert"): Zapier tự chạy lại theo plan, hard-fail → Zapier Manager gửi "Zap Error" (tên Zap + step lỗi) vào kênh Ops (UC_8.2.1 P-01). Các UC Pod chỉ Ref.⏳ Chờ BA 🟠

6. BLOCKED — chờ khách, loại khỏi SRS

QnA IDNội dungẢnh hưởng UC
POD-PLAN-02Danh sách câu hỏi của form Trading PlanUC không có bảng field của form — chỉ ghi các phần đã chốt (hidden field, ảnh, consent)
POD-PLAN-01URL Google Doc templateUC chỉ ghi cơ chế map field → placeholder

7. Việc nội bộ phát sinh

#ViệcOwner
1Đòi khách bộ câu hỏi Trading Plan + URL template (ClickUp ticket theo POD-PLAN-01)BA
2Gửi khách: A-02, A-03, A-04, A-12, A-14, C-02BA

Tổng kết trạng thái

  • Đã chốt: Q-01 → Q-19, O-01 → O-03.
  • Chờ BA: C-02, A-07, A-08, A-11, P-02.
  • Đã chốt 2026-10-15: A-01, A-02, A-04, A-05, A-06, A-09. Bỏ: A-10, A-12.
  • Chờ khách: không còn.
  • Đã chốt 2026-10-22 (khách): A-03, A-13, A-14.
  • BLOCKED: không còn — bộ câu hỏi form và URL template khách đã gửi, BA bổ sung sau.

On this page