StackTrading Docs

UC 8.2.7

Flow 10.5 - Daily Pod AI Audit: cuối mỗi ngày làm việc, AI đọc chat trong kênh pod để đánh giá Pod Leader có tương tác với mentee hay không (PASS/FAIL)

FieldValue
BA in ChargeAnh Hoang
Date Created2026-10-12
Versionv1.9
Document ReferencesZapier Integration V7.pdf (§Flow 10.5, §3.3 Table E) · RFQ_ Stack Trading Prop Tech V7.pdf (§Community, Trustpilot and Discord Bot Endpoints — Process Daily Pod Metrics, Create Pod Channel; §4.4 #11) · QnA from clients — QnA_STAGE6_POD_SYSTEM_FLOW10_11.md (POD-AUDIT-01…13, POD-JOIN-02, POD-PLAN-11, POD-XF-04) · QnA_init_docs.md (A-01…A-09, C-01) · Common Rules CR-08, CR-18

UC_8.2.7 — Flow 10.5: Daily Pod Engagement AI Audit

🇻🇳 Section này viết bằng tiếng Việt để BA review. Mọi ID, anchor, tên field/API và text hiển thị cho user giữ nguyên tiếng Anh.

1. Overview

FieldContent
IDUC_8.2.7
Use CaseFlow 10.5: Daily Pod Engagement AI Audit
DescriptionUC này kiểm tra hằng ngày xem Pod Leader có tương tác với mentee trong kênh chat của pod hay không. Cuối mỗi ngày làm việc, hệ thống đọc chat trong kênh, đánh giá leader đạt (PASS) hoặc không đạt (FAIL), rồi lưu kết quả để Operations theo dõi.
Phạm viUC này chỉ ghi nhận mức độ tương tác của Pod Leader, không có hành động tiếp theo nào dựa trên kết quả. Không gồm điểm survey và phản hồi của mentee (UC_8.2.6), tiền carry của leader (Flow 17, UC_8.2.12).
Zapier FlowFlow 10.5 (Daily Pod Engagement AI Audit)
Zapier TableTable E — Pod_Leader_Registry (engagement_metrics, Current_Count)
APIWebhook do Cron Job task Process Daily Pod Metrics gửi sang Zapier (Trigger của Flow 10.5)
Cron Job taskProcess Daily Pod Metrics, chạy 11:59 PM giờ US/Central, Thứ Hai đến Thứ Sáu
3rd PartyDiscord, Google Gemini 1.5 Flash, Zapier, Slack

2. Trigger

  • Cron Job task Process Daily Pod Metrics chạy lúc 11:59 PM giờ US/Central, từ Thứ Hai đến Thứ Sáu. Đây là tác vụ nội bộ của Middleware, tự chạy theo lịch, không do ai gọi.
  • Giờ chạy tự đổi theo giờ mùa đông (CST) và giờ mùa hè (CDT). VD: mùa đông và mùa hè cron đều chạy lúc 11:59 PM theo đồng hồ ở Chicago.
  • Cron không chạy Thứ Bảy và Chủ Nhật. Ngày lễ giữa tuần có chạy hay không chưa chốt (§8 #3).

3. Pre-conditions

  • Pod Leader có ít nhất 1 mentee.
  • Kênh pod của leader đang hoạt động.

4. Post-conditions

  • Mỗi pod được audit có thêm 1 kết quả (PASS hoặc FAIL) trong engagement_metrics của leader, kèm tổng số tin nhắn trong kênh và số tin nhắn của leader.
  • Pod bị bỏ qua thì không có kết quả cho ngày đó: pod không đủ điều kiện audit, bot không đọc được kênh, gửi webhook lỗi, Zap lỗi, hoặc AI trả kết quả sai định dạng (§6).
  • Hệ thống không bật cảnh báo, không áp ngưỡng và không phạt leader dựa trên kết quả.

5. Basic Flow

5.1 Chọn pod cần audit (RFQ V7 — Cron bước 1)

Stage 1 — Lọc leader

  1. Cron Job task Process Daily Pod Metrics chạy trên Middleware (bot Node.js). RFQ V7 liệt kê tác vụ này trong bảng endpoint với input pod_id, leader_id, nhưng đó thực chất là các trường cron gửi đi trong webhook ở bước 14, không phải dữ liệu bên ngoài gửi vào.

  2. Lúc bắt đầu chạy, Middleware ghi ngày hôm nay theo giờ US/Central vào audit_date. Đây là ngày của khung chat được audit, và mọi kết quả của lượt chạy dùng chung ngày này. VD: cron chạy lúc 11:59 PM Thứ Ba thì audit_date là Thứ Ba.

  3. Cron đọc 2 bảng rồi xét lần lượt từng leader:

    • Pod_Leader_Registry: Leader_ID, Current_Count (số mentee hiện có) và kênh pod.
    • Users: discord_user_id của leader và trạng thái DTO hoặc Hiatus.
  4. Leader chỉ được audit khi thoả cả 3 điều kiện:

    • Pod có ít nhất 1 mentee (Current_Count lớn hơn 0).
    • Kênh pod còn tồn tại và chưa bị archive (lưu trữ, không dùng nữa).
    • Leader không bị khoá do đang nghỉ DTO hoặc Hiatus đã duyệt qua Flow 13. DTO là nghỉ phép có lương cho leader W-2; Hiatus là tạm nghỉ cho leader International. Trạng thái này nằm ở cột nào chưa chốt (§8 #4).

    Founding Mentor vẫn bị audit như mọi leader khác, khác với Drawdown Defense là nơi Founding Mentor được miễn. Leader không đủ điều kiện hoặc bị lỗi thì xem E_8.2.7.1, E_8.2.7.2.

5.2 Gom chat và đếm tin nhắn (RFQ V7 — Cron bước 2)

Stage 2 — Đọc kênh pod

  1. Bot Discord của Middleware đọc tin nhắn trong kênh chữ của pod. Mỗi pod có kênh pod-[leader_name] do Create Pod Channel tạo, gồm 1 kênh chữ và 1 kênh thoại, cả hai đều riêng tư. Kênh thoại không được audit: leader trao đổi bằng giọng nói thì vẫn phải để lại tóm tắt hoặc tương tác bằng chữ trong kênh chữ thì mới có thể được PASS.
  2. Bot chỉ lấy tin trong đúng 24 giờ, từ 23:59:00 hôm trước đến 23:59:00 hôm nay, giờ US/Central:
    • VD: lượt chạy Thứ Ba lấy tin từ 23:59:00 Thứ Hai đến 23:59:00 Thứ Ba. Tin gửi lúc 23:59:30 Thứ Ba thuộc khung của Thứ Tư.
    • Bot không lấy bù tin cũ cho đủ 50,000 ký tự. VD: chat Thứ Ba chỉ có 3,000 ký tự thì log gửi đi chỉ có 3,000 ký tự đó.
    • Thứ Bảy và Chủ Nhật không có lượt chạy, nên tin gửi trong cuối tuần bị bỏ hẳn. Lượt Thứ Hai chỉ xét tin từ 23:59:00 Chủ Nhật đến 23:59:00 Thứ Hai. VD: tin gửi lúc 10:00 Thứ Bảy không thuộc lượt nào.
  3. Bot bỏ tin do bot gửi (author.bot == true, VD tin chào mừng welcome ping), không tính vào 2 bộ đếm và không đưa vào raw_chat_log.
  4. Trader đã đồng ý cho hệ thống đọc chat khi ký Master Terms of Service lúc onboarding (Flow 3), nên hệ thống không gửi thông báo trong kênh và không có màn hình giải thích việc này. Bot không đọc được kênh thì xem E_8.2.7.3.

Stage 3 — Đếm tin nhắn

  1. Cron đếm trên toàn bộ tin trong khung thời gian, trước khi cắt log ở bước 13, nên số đếm không bị ảnh hưởng khi log bị cắt:
    • total_channel_messages: tổng số tin nhắn trong kênh.
    • total_leader_messages: số tin do leader gửi, tức tin có tác giả là discord_user_id của leader. Leader chưa liên kết Discord thì xem E_8.2.7.4.

5.3 Kết luận ngay hoặc gửi sang Zapier (RFQ V7 — Cron bước 3)

Stage 4 — Kết luận theo số đếm

  1. Cron dựa vào 2 số đếm để quyết định:
    • total_channel_messages bằng 0, tức là không ai nhắn gì: kết luận PASS. Leader không bị phạt khi mentee im lặng.
    • total_channel_messages lớn hơn 0 và total_leader_messages bằng 0, tức là có người nhắn nhưng leader không nhắn: kết luận FAIL. VD: mentee gửi 12 tin, leader gửi 0 tin thì FAIL.
    • Còn lại, tức là có người nhắn và leader cũng có nhắn: gửi sang Zapier để AI đánh giá. VD: kênh có 20 tin, leader gửi 3 tin thì gửi sang Zapier.
  2. Với 2 trường hợp kết luận ngay, cron không gọi AI và không gửi gì sang Zapier, mà tự ghi 1 phần tử vào engagement_metrics của leader, cùng cách ghi như bước 21 (BR_8.2.7.2). Theo RFQ V7, mọi pod đều được gửi sang Zapier; việc Middleware tự ghi cho 2 trường hợp này là giả định chưa chốt (§8 #1). Ghi lỗi thì xem E_8.2.7.5.

Stage 5 — Ghép log và gửi webhook

  1. Cron ghép các tin thành raw_chat_log, là đoạn chat dạng chữ cho AI đọc:
    • Dòng đầu luôn là Pod Leader: <tên hiển thị của leader>, để Gemini phân biệt tin của leader với tin của mentee.
    • Các dòng sau xếp theo thời gian, tin cũ ở trên. Mỗi tin là 1 dòng dạng [Time] [User]: Message, Time theo giờ US/Central.
    • [User] là tên hiển thị trên Discord của người gửi; không đặt tên hiển thị thì dùng username; không dùng discord_user_id. VD: [09:15] [Minh Tran]: Hôm nay em vào lệnh EURUSD.
  2. raw_chat_log dài hơn 50,000 ký tự thì cron bỏ phần chat cũ ở đầu, chỉ giữ 50,000 ký tự mới nhất:
    • Chỗ cắt rơi vào giữa một dòng thì bỏ luôn dòng đó, nên log có thể ngắn hơn 50,000 ký tự một chút. VD: log dài 62,000 ký tự thì cron bỏ khoảng 12,000 ký tự đầu, cộng thêm phần còn lại của dòng bị cắt dở.
    • Dòng Pod Leader: … luôn được giữ ở đầu.
    • Cron không chia log thành nhiều phần để gửi nhiều lần.
  3. Cron gửi webhook tới Catch Hook của Zap Flow 10.5, mỗi pod mỗi ngày 1 webhook. Payload gồm 6 trường: 5 trường theo RFQ V7 và trường audit_date. Chi tiết xem BR_8.2.7.3. Gửi xong, cron chuyển sang pod kế tiếp, không chờ kết quả AI. Gửi lỗi hoặc chạy lại trong ngày thì xem E_8.2.7.6, E_8.2.7.7.

5.4 AI đánh giá (Flow 10.5 — Trigger, Action 1, Action 2)

Stage 6 — Zapier gọi Gemini

  1. Trigger: Zap Flow 10.5 chạy khi Catch Hook nhận webhook do cron gửi ở bước 14. Catch Hook là địa chỉ nhận webhook do Zapier cấp. Chỉ pod có người nhắn và leader cũng có nhắn mới tới bước này.
  2. Action 1 (Parse): Zapier tách các trường trong webhook, gồm 5 trường RFQ V7 và audit_date (BR_8.2.7.3).
  3. Action 2 (AI Audit): Zapier gửi raw_chat_log cho Gemini 1.5 Flash kèm câu lệnh nguyên văn của khách (BR_8.2.7.1). Câu lệnh yêu cầu Gemini trả đúng 1 từ PASS hoặc FAIL. Sotatek không làm thêm bước thử lại riêng khi AI trả kết quả sai định dạng. Gemini không phản hồi thì xem E_8.2.7.8.

5.5 Ghi kết quả (Flow 10.5 — Action 3)

Stage 7 — Middleware ghi engagement_metrics

  1. Action 3: Zapier chuyển kết quả cho Middleware để Middleware ghi database. Zapier không ghi thẳng vào PostgreSQL, vì Pod_Leader_Registry là bảng do Middleware quản lý. Việc Middleware mở endpoint nhận kết quả là giả định, vì chưa chốt bên nào ghi database (§8 #1). Nguồn không đặt tên endpoint này; đường dẫn do Sotatek chốt trong OpenAPI spec.

    Input fieldValue
    leader_idLấy từ webhook. Bắt buộc
    pod_idLấy từ webhook. Bắt buộc. Dùng để đối chiếu và ghi log
    audit_dateLấy từ webhook. Bắt buộc
    Kết quả AIKết quả Gemini trả ở bước 17, chuyển nguyên văn. Bắt buộc
    total_channel_messagesLấy từ webhook. Bắt buộc. Số nguyên lớn hơn hoặc bằng 0
    total_leader_messagesLấy từ webhook. Bắt buộc. Số nguyên lớn hơn hoặc bằng 0

    Input sai thì xem E_8.2.7.9.

  2. Middleware tìm leader theo leader_id. Không tìm thấy thì xem E_8.2.7.10.

  3. Middleware đọc kết quả AI: đổi toàn bộ sang chữ hoa rồi tìm nguyên từ PASS hoặc FAIL. Từ dính thêm chữ khác không được tính, VD "PASSED" hay "FAILURE".

    • Chỉ có từ PASS thì result là PASS. VD: AI trả The leader engaged moderately, so PASS thì kết quả là PASS.
    • Chỉ có từ FAIL thì result là FAIL.
    • Không có từ nào, hoặc có cả hai, thì xem E_8.2.7.11.
  4. Middleware khoá dòng của leader trong Pod_Leader_Registry, để 2 lần ghi cùng lúc không làm mất phần tử của nhau. Middleware lấy audit_date làm date của phần tử, nên kết quả về sau 00:00 vẫn ghi đúng ngày của khung chat. VD: lượt chạy lúc 23:59 Thứ Ba, kết quả về lúc 00:05 Thứ Tư thì date vẫn là Thứ Ba. Sau đó:

    • Đã có phần tử cùng date (cron chạy lại trong ngày, hoặc cùng kết quả được gửi 2 lần) thì ghi đè, không thêm phần tử trùng.
    • Chưa có thì thêm phần tử mới { date, result, total_messages, leader_messages }, với total_messages lấy từ total_channel_messages và leader_messages lấy từ total_leader_messages. Cách lưu xem BR_8.2.7.2.
  5. Ghi xong, Middleware trả 200 OK. Lỗi hệ thống thì xem E_8.2.7.12.

  6. Sau khi ghi kết quả, hệ thống không làm gì thêm: không áp ngưỡng, không gửi cảnh báo, không phạt leader. Operations tự xem xét kết quả bên ngoài hệ thống. Kết quả FAIL không ảnh hưởng tiền carry của leader (Flow 17, UC_8.2.12).

6. Exceptional Flows

Exception IDExceptionConditionSystem Handling / Fallback
E_8.2.7.1Leader không đủ điều kiện auditLeader không thoả đủ 3 điều kiện ở bước 4.Cron bỏ qua leader đó và chuyển sang leader kế tiếp. Ngày đó leader không có kết quả.
E_8.2.7.2Lỗi khi xử lý 1 leaderCó lỗi ở một leader trong lượt chạy.Cron vẫn chạy tiếp các leader còn lại, không dừng cả lượt.
E_8.2.7.3Bot không đọc được kênhDiscord lỗi hoặc bot mất quyền đọc kênh.Cron bỏ qua pod đó trong hôm nay, ghi log lỗi kỹ thuật và chạy tiếp các pod khác. Pod đó không có kết quả cho ngày này.
E_8.2.7.4Leader chưa liên kết DiscordLeader không có discord_user_id.Cron đặt total_leader_messages bằng 0. Nếu kênh có tin nhắn thì bước 10 kết luận FAIL, không có ngoại lệ.
E_8.2.7.5Cron tự ghi kết quả bị lỗiGhi database lỗi ở bước 11.Cron không ghi phần tử đó, ghi log lỗi kỹ thuật và chạy tiếp các pod khác.
E_8.2.7.6Gửi webhook lỗiZapier không phản hồi hoặc trả lỗi ở bước 14.Pod đó không có kết quả trong ngày. Middleware có gửi lại không và gửi lại thế nào chưa chốt (§8 #5).
E_8.2.7.7Cron chạy lại trong cùng ngàyCron chạy lần hai trong ngày.Cron gửi lại webhook. Kết quả mới ghi đè kết quả cũ cùng ngày, không tạo thêm phần tử (BR_8.2.7.2).
E_8.2.7.8Gemini không phản hồiBước gọi Gemini ở Action 2 lỗi.Zapier tự chạy lại bước lỗi theo cơ chế có sẵn của gói đang dùng. Vẫn lỗi thì Zapier gửi "Zap Error" (ghi tên Zap và bước lỗi) vào kênh Slack Operations. Sotatek chỉ cấu hình đường gửi thông báo, không dựng cơ chế xử lý lỗi riêng. Pod đó không có kết quả trong ngày.
E_8.2.7.9Input không hợp lệThiếu trường bắt buộc, hoặc total_channel_messages hay total_leader_messages không phải số nguyên hoặc bị âm.Middleware trả 400 và không ghi gì. VD: total_leader_messages là -1 hoặc 2.5 thì bị trả 400.
E_8.2.7.10Không tìm thấy leader (Ref: CR-18)leader_id không tồn tại.Middleware bỏ qua và trả 200 OK, không ghi gì. Zapier không bị báo lỗi.
E_8.2.7.11Không xác định được kết quả AI (Ref: BR_8.2.7.1)Câu AI trả về không có từ PASS hay FAIL, hoặc có cả hai.Middleware không ghi phần tử cho ngày đó, ghi log lỗi kỹ thuật kèm nội dung AI trả về, rồi trả 200 OK để Zapier không báo lỗi. Hệ thống không dùng giá trị INCONCLUSIVE. VD: AI trả PASS or FAIL depends on context thì có cả hai từ, nên không ghi.
E_8.2.7.12Lỗi hệ thống khi ghiDatabase lỗi hoặc hết thời gian chờ ở bước 21.Middleware trả 500 và không ghi gì. Zapier coi đây là lỗi Zap và xử lý như E_8.2.7.8.

7. Business Rules

BR_IDRule Description
BR_8.2.7.1AI đánh giá: xem chi tiết tại §7.1.
BR_8.2.7.2Cách lưu kết quả (áp dụng cả cho kết quả cron tự ghi ở bước 11): Kết quả lưu trong cột engagement_metrics (kiểu JSONB, chứa danh sách phần tử) của bảng Pod_Leader_Registry.Mỗi phần tử có dạng { date, result, total_messages, leader_messages }, result chỉ nhận PASS hoặc FAIL. VD: { date: Thứ Ba, result: PASS, total_messages: 20, leader_messages: 3 }.Mỗi leader mỗi ngày chỉ có đúng 1 phần tử, xác định theo cặp leader_id và date; date lấy theo audit_date của lượt chạy.Không có giá trị INCONCLUSIVE; không xác định được kết quả thì ngày đó không có phần tử (E_8.2.7.11).Kết quả audit lưu tách riêng, không gộp với điểm survey và phản hồi của mentee ở UC_8.2.6.Mọi thời điểm ghi database theo chuẩn CR-08.
BR_8.2.7.3Payload webhook gửi Zapier: xem chi tiết tại §7.2.

7.1 BR_8.2.7.1 — AI đánh giá

Thành phầnQuy tắc
ModelGemini 1.5 Flash. Bước này không dùng Gemini 3.1 Pro hay chế độ Extended Thinking
Kết quả lưuChỉ lưu PASS hoặc FAIL. Middleware tìm nguyên từ trong câu AI trả về, không phân biệt chữ hoa hay chữ thường (bước 20). Không xác định được thì không ghi gì
ContextAI biết ai là leader nhờ dòng Pod Leader: <tên hiển thị> ở đầu raw_chat_log
Thử lạiSotatek không làm bước thử lại riêng khi AI trả sai định dạng

Câu lệnh cho AI (nguyên văn):

Review this daily chat log from a trading desk. Did the mentor (Leader) engage with the team, ask probing questions regarding execution, or answer technical inquiries? Return exactly one word: 'PASS' or 'FAIL'.

7.2 BR_8.2.7.3 — Payload webhook gửi Zapier

Cron gửi webhook ở bước 14 tới Catch Hook của Zap Flow 10.5, mỗi pod mỗi ngày 1 webhook (Ref: RFQ_ Stack Trading Prop Tech V7.pdf §Process Daily Pod Metrics; Zapier Integration V7.pdf §Flow 10.5 Action 1).

TrườngKiểuGhi chú
pod_idStringPod được audit
leader_idStringLeader_ID của Pod Leader, dùng để ghi kết quả vào đúng leader
audit_dateDateNgày lúc cron bắt đầu chạy, giờ US/Central. Trường này thêm ngoài 5 trường của RFQ V7
total_channel_messagesIntegerTổng số tin nhắn trong ngày, đếm trước khi cắt log
total_leader_messagesIntegerSố tin nhắn của leader trong ngày
raw_chat_logStringDòng đầu là Pod Leader: <tên hiển thị>. Các dòng sau là chat trong khung 24 giờ, theo thời gian, dạng [Time] [User]: Message. Không gồm tin của bot. Tối đa 50,000 ký tự. Cách ghép và cắt xem bước 12 và 13

8. Open Items

Chi tiết: QnA_init_docs.md.

#Câu hỏiID
1Ai gọi Gemini và ai ghi database, Zapier hay Middleware?A-01
2Lịch sử engagement_metrics giữ bao lâu; Operations xem ở đâu?A-06
3Ngày lễ trong tuần có audit không?A-07
4"Khoá vì DTO hoặc Hiatus" đọc từ cột nào?UC_8.2.4 A-04
5Middleware gửi webhook sang Zapier bị lỗi thì có gửi lại không, gửi lại thế nào?POD-XF-04

9. Phân chia trách nhiệm

Hạng mụcSotatek buildStack Trading OpsBên thứ 3 tự chạy
Bot gom chat, đếm tin nhắn, cắt log, cron✅—Discord
Zap gọi Gemini, ghi kết quả✅—Gemini
Câu lệnh cho AI—✅ Cung cấp (V7)—
Xem xét leader có nhiều FAIL—✅ Thủ công—

Changelog

DateVersionUpdated itemBeforeAfterNotes
2026-10-12v1Initial document——Bản tiếng Việt để BA re-check trước khi chuyển tiếng Anh. Nguồn chính: QnA POD-AUDIT-01…12. Bổ sung so với V7: chỉ chạy Thứ Hai – Thứ Sáu, 2 ca kết luận không cần AI (POD-AUDIT-02/07), cắt log giữ phần mới nhất (POD-AUDIT-05), cột engagement_metrics dạng JSONB (POD-AUDIT-04).
2026-10-12v1.1Thêm mục API & CronCron, payload và Zap Flow 10.5 chỉ được nhắc trong BR_8.2.7.3; lịch chạy chỉ có trong Description / TriggerMục API & Cron: spec cron Process Daily Pod Metrics (lịch, điều kiện chọn pod, đếm, ghép và cắt log, lỗi, chạy lại), webhook 5 trường sang Zapier, Zap Flow 10.5, endpoint ghi kết quả audit (input, output, xử lý, lỗi, gọi trùng). Basic Flow trỏ tới từng API; BR_8.2.7.3 rút các dòng cron / payload / Zap. Thêm Hạng mục mở #11 (POD-XF-04), #12 (A-09)BA định nghĩa theo RFQ_ Stack Trading Prop Tech V7.pdf §4.4 #11, #19: mã lỗi 400/401/500; status Recorded / Skipped; endpoint ghi kết quả audit (theo giả định Hạng mục mở #2); bỏ khoảng trắng trước khi kiểm result; đếm tin nhắn trước khi cắt log; cắt log bỏ dòng đầu bị cụt; Time trong log theo giờ US/Central; lỗi đọc một kênh thì bỏ qua pod đó và chạy tiếp; Process Daily Pod Metrics là tác vụ nội bộ, không mở endpoint cho bên ngoài (V7 liệt kê trong bảng endpoint)
2026-10-12v1.2Basic Flow — mô tả lời gọi APIBước gọi API chỉ gắn "(Ref: API_x)", không rõ bên gọi / bên nhận / kết quả; endpoint ghi kết quả audit chưa có tênMở Stage 1 bằng tên cron Process Daily Pod Metrics + lịch (23:59 Thứ Hai – Thứ Sáu, US/Central); mỗi bước gọi giữa các hệ thống ghi dạng [Bên gọi → Bên nhận] tên API + input chính → kết quả (Cron → Discord, Cron → Zapier, Zapier → Gemini, Zapier → Middleware); tách Stage 3 bước 3 thành bước 3 (webhook) và bước 4 (Gemini); Stage 4 rẽ nhánh theo ca 1–2 / ca 3 và theo status trả về (Recorded / Skipped / lỗi); đặt tên endpoint ghi kết quả audit là endpoint Action 3 (Database Write) (Basic Flow, API & Cron, BR_8.2.7.3)—
2026-10-13v1.3Tên endpoint ghi kết quả auditRecord Pod Audit Result (tên tự đặt)Action 3 (Database Write) — tên bước theo Zapier Integration V7.pdf Flow 10.5—
2026-10-13v1.4Dùng tên API gốc; bỏ tên tự đặtTrường input result của endpoint ghi kết quả; trường output status với giá trị Recorded / Skipped; tên cron Process Daily Pod Metrics (thiếu tiền tố gốc); "Webhook audit"; "endpoint Action 3 (Database Write)"API Process Daily Pod Metrics (internal cron); webhook do API Process Daily Pod Metrics gửi; Zap steps theo Zapier Integration V7.pdf: Flow 10.5 Action 1 (Parse), Action 2 (AI Audit), Action 3 (Database Write); kết quả AI và kết quả xử lý (đã ghi / bỏ qua, không ghi gì) mô tả bằng lời; tên do BE chốt trong OpenAPI specChỉ giữ tên có trong nguồn. Giữ pod_id, leader_id, total_channel_messages, total_leader_messages, raw_chat_log (V7 §Process Daily Pod Metrics, Zapier Flow 10.5 Action 1) và cấu trúc engagement_metrics { date, result, total_messages, leader_messages } (POD-AUDIT-04)
2026-10-13v1.5Stage 4 bước 1 — kết quả trùng ngàyGhi chắc chắn "ghi đè"Ghi đè hay thêm: Hạng mục mở #9 (A-08)Giả định chưa chốt, không ghi như đã chốt
2026-10-14v1.6Toàn UC — viết lại theo khuôn UC_8.1.xCó bảng "Giải thích thuật ngữ" ở đầu; Basic Flow 4 Stage chỉ trỏ "(Ref: API_x)", chi tiết nằm ở mục riêng "API & Cron" với 4 API: API_8.2.7.1 API Process Daily Pod Metrics (internal cron), API_8.2.7.2 Webhook gửi sang Zapier, API_8.2.7.3 Zap Flow 10.5, API_8.2.7.4 Flow 10.5 Action 3 (Database Write); BR_8.2.7.3 "Thông tin kỹ thuật cho dev"; "Hạng mục mở" đặt sau RACI; phần lỗi của cron / endpoint viết dạng bảng riêngBỏ bảng thuật ngữ (DTO / Hiatus, kênh pod giải thích ngay trong bước). Bỏ mục "API & Cron"; lịch cron vào Trigger, điều kiện chọn pod vào Stage 1, đếm / ghép / cắt log vào Stage 2, webhook + Zap Action 1–2 vào Stage 3, ghi kết quả (input, xử lý, mã phản hồi) vào Stage 4; mọi lỗi viết thành nhánh [If …] → ngay tại bước. Còn 2 API đúng như nguồn: (1) API Process Daily Pod Metrics — RFQ V7 bảng Community, Trustpilot and Discord Bot Endpoints (POST, internal cron 11:59 PM); (2) webhook Middleware → Zapier — Zapier V7 §Flow 10.5 Trigger "Webhook received from Middleware Hub". Zap Flow 10.5 (Action 1 Parse, Action 2 AI Audit gọi Gemini, Action 3 Database Write) là hành động Zapier trong Stage 3–4, không đánh số API. BR_8.2.7.3 đổi thành "Payload webhook gửi Zapier" (bảng 5 trường chuyển từ API_8.2.7.2); dòng cron / Zap / kênh pod của BR cũ đã nằm trong Basic Flow. Đổi "Hạng mục mở" thành Open Items, đặt trước RACITheo yêu cầu BA: mô tả và thứ tự như UC_8.1.1 / UC_8.1.2. Nội dung nghiệp vụ và BR ID giữ nguyên. Sửa số API cho khớp nguồn: 4 → 2 (Zapier Integration V7.pdf §Flow 10.5; RFQ_ Stack Trading Prop Tech V7.pdf §Process Daily Pod Metrics). Tên cron giữ API Process Daily Pod Metrics theo quyết định v1.4.
2026-10-14v1.7Cron Job task tách khỏi APICron ghi là API Process Daily Pod Metrics và được đếm là API (2 API)Cron Job task Process Daily Pod Metrics — không phải API, bỏ tiền tố "API"; còn 1 API là webhook gửi Zapier (Trigger Flow 10.5). Overview thêm dòng API và Cron Job taskTheo yêu cầu BA: Cron Job task là tác vụ nền chạy theo lịch, khác API; phải ghi rõ "Cron Job task" như API ghi rõ "API". Nguồn: RFQ_ Stack Trading Prop Tech V7.pdf §3.3 Background Workers (Cron Jobs). Thay quyết định đặt tên v1.4. Tên lấy theo Zapier Integration V7.pdf §Flow 10.5 ("Fired by the Process Daily Pod Metrics cron job") và RFQ V7 bảng endpoint.
2026-10-22v1.8Stage 2 bước 1–4 · Stage 3 bước 2, 4 · Stage 4 bước 2 · BR_8.2.7.1, BR_8.2.7.2, BR_8.2.7.3 · Open ItemsKhung thời gian (giả định 00:00–23:59), tin của bot, nhãn leader, leader chưa liên kết Discord, AI trả sai định dạng, ghi trùng ngày, ngày audit khi kết quả về sau 00:00: Open Items · kết quả AI phải đúng PASS / FAILKhung 24 giờ 23:59:00 → 23:59:00 US/Central, không lấy ngày trước, bỏ tin cuối tuần · bỏ tin của bot khỏi log và bộ đếm · [User] = tên hiển thị Discord, dòng đầu Pod Leader: <tên> · chưa liên kết Discord → FAIL khi kênh có tin · đọc kết quả AI theo nguyên từ PASS / FAIL, không xác định / có cả hai → không ghi, không INCONCLUSIVE · ghi đè theo date · thêm audit_date vào payload và endpoint ghi kết quả · Open Items còn 5 (đánh số lại)Khách trả lời 2026-10-22: C-01, A-02, A-03, A-04, A-05, A-08, A-09. Có cả PASS lẫn FAIL → không ghi; khớp nguyên từ; dòng Pod Leader: — BA chốt
2026-10-22v1.8Basic Flow · Business Rules · Document References — kiểm tra chữ ký webhookBước kiểm tra chữ ký (HMAC/JWS), sai → 401 (RFQ V7 §4.4 #19)Bỏ toàn bộ bước kiểm tra chữ ký và các dòng 401BA chốt 2026-10-22: yêu cầu bảo mật chung, khách không nói riêng cho flow này
2026-10-22v1.8Stage 1 bước 1 · Stage 2 bước 1, 3, 4 · Stage 3 bước 2, 4 · Stage 4 bước 2, 3 · BR_8.2.7.2Một số câu gộp nhiều ý trong 1 dòngTách thành các ý riêng (sub-bullet)Viết lại cho dễ hiểu, không đổi nghiệp vụ
2026-10-22v1.8Stage 2 bước 1 · Stage 3 bước 1, 2, 3, 4 · Stage 4 bước 1, 2 · BR_8.2.7.2Một số câu viết tắt / mơ hồDiễn giải rõ nghĩaViết lại cho dễ hiểu, không đổi nghiệp vụ
2026-10-22v1.8Toàn UC — Basic Flow, Business RulesVăn phong ký hiệu, rút gọn, khó đọcViết lại bằng câu đầy đủ, kèm VDTheo mẫu BA duyệt 2026-10-22, không đổi nghiệp vụ
2026-10-22v1.8Basic Flow · Business Rules — cấu trúc lại theo flow gốcBasic Flow tự sắp xếp, tách rời Business RulesMỗi bước trích nguyên văn flow khách + bổ sung, edge case; BR ngắn gộp vào flow (giữ anchor), BR dài được trỏ từ flowTheo mẫu UC_8.2.2, không đổi nghiệp vụ
2026-10-29v1.9Toàn UC — cấu trúc lại theo khuôn UC_1.8.7 (giống UC_8.2.1 v1.12)Mỗi bước trích nguyên văn flow gốc của khách (Cron bước 1 đến 3, Trigger, Action 1 đến 3); đoạn "điểm khác nguồn"; edge case nằm dưới từng bước; BR_8.2.7.2 và phần "không có hành động tiếp theo" nằm trong flow; mã QnA trong thân docBỏ dòng trích nguyên văn và đoạn "điểm khác nguồn" (giả định Middleware tự ghi 2 trường hợp không cần AI và nhận kết quả từ Zapier ghi thẳng ở bước 11, 18, vẫn trỏ Open Items #1). Mục đánh số 1 đến 9; §5 chia 5.1 chọn pod, 5.2 gom chat, 5.3 kết luận hoặc gửi Zapier, 5.4 AI đánh giá, 5.5 ghi kết quả; bước đánh số liên tục 1 đến 23. Edge case gom vào bảng §6 (E_8.2.7.1 đến E_8.2.7.12). BR gom vào bảng §7; BR_8.2.7.1 ở §7.1, BR_8.2.7.3 ở §7.2. Mọi BR đều được refer từ bước hoặc exception liên quan. Mã QnA chỉ giữ ở Document References, Open Items và Changelog. Giữ nguyên anchor BR_8.2.7.1 đến BR_8.2.7.3, api-cron, open-items; 5 Open Items giữ nguyênBA yêu cầu viết dễ hiểu như UC_1.8.7, không đổi nghiệp vụ
2026-10-29v1.9§1 Overview — DescriptionMô tả chi tiết các bước, tên API, field và nhánh xử lýChỉ ghi tổng quan: UC dùng để làm gì và nội dung chính, bằng câu thường; chi tiết xem §5BA yêu cầu Description chỉ ghi tổng quan, không đổi nghiệp vụ

On this page