AMLO Screening — Decision Register
7 คำถามที่ต้องได้คำตอบจาก Owner/Compliance ก่อนเริ่ม implement พร้อมตัวเลือกและข้อเสนอเริ่มต้น — ใช้ไล่ในที่ประชุม/แชท
อัปเดต: 2026-08-19
วันที่: 19/08/2026 · สถานะ: 7/7 ตอบครบแล้ว (D7 = เช็ค DB จริงแล้ว ได้ข้อสรุปว่า “ยังไม่มีคำตอบ” เพราะข้อมูลไม่พอ) · เหลือแค่ evidence format ย่อยของ D6 (ต้องแนบไฟล์ไหม/แค่ข้อความ) ที่ไม่บล็อกอะไร · ใช้หน้านี้ไล่ในที่ประชุม/แชท แล้วบันทึกผลตรงคอลัมน์สุดท้าย พื้นหลังเต็มของทุกข้อ → Open Items §1 · ภาพรวมระบบสำหรับคนอ่านครั้งแรก → Overview
สถานการณ์ใน 3 บรรทัด
- Design ของฟีเจอร์บล็อกบริษัทติด AMLO เสร็จและ review ผ่านแล้ว — แต่เริ่ม implement ไม่ได้จนกว่าจะมีคำตอบ 2 ข้อที่ ❗ ด้านล่าง
- D1 (แตะ Sentinel+APIM) เป็นการอนุมัติเชิงสถาปัตยกรรมที่ Owner ต้องตัดสิน ส่วน D2 (เกณฑ์บล็อก) เป็นคำถามด้าน Compliance ล้วนๆ — ทั้งคู่ไม่ใช่เรื่องที่ dev ตัดสินเองได้
- มีช่องโหว่ security ที่มีอยู่แล้วในโค้ดปัจจุบันซึ่ง Phase 1 บังคับต้องปิดครบก่อน go-live (Open Items §5 ข้อ 19) — มีแค่ 1 ข้อที่แก้แยกได้จริงตอนนี้ อีก 2 ข้อ (ต้องแตะ
Backend_FxOrchestratorService/ อาศัย API key ที่ยังไม่ยืนยันว่ามีจริง) ตัดออกจาก scope รอบนี้ตามที่ Owner สั่ง
วิธีใช้
- ❗ = block การเริ่ม implement ต้องได้คำตอบก่อน · ▫ = ไม่บล็อกการเริ่ม แต่ต้องปิดก่อน merge/go-live
- คอลัมน์ “ข้อเสนอ” = คำแนะนำเริ่มต้นจากการวิเคราะห์โค้ดจริง ไม่ใช่มติ — ที่ประชุม override ได้เสมอ
ตารางตัดสินใจ
| ID | ❗ | เรื่อง | ตัวเลือก | ข้อเสนอ | ผลการประชุม / Owner |
|---|---|---|---|---|---|
| D1 | ❗ | อนุมัติให้แตะ Sentinel + APIM policy หรือไม่ | อนุมัติ / ไม่อนุมัติ (ใช้ทางสำรอง) | อนุมัติ — เป็นจุดเดียวที่ครอบคลุม browser traffic ทั้งหมดได้จริงโดยไม่ต้องแก้ทุก service; ทางสำรอง (middleware กลางใน SupApp_util_lib) ต้องรอ deploy ครบทุก service ก่อนถือว่าบังคับใช้จริง | ✅ อนุมัติ (19/08) — แต่ APIM policy แก้ท้ายสุดในลำดับ implementation เพราะกระทบ UAT ที่กำลัง process อยู่ (ส่วนอื่นของ facade v7/enforcement ทำก่อนได้ตามปกติ) |
| D2 | ❗ | เกณฑ์ similarity/AmloType ที่ถือว่า “ติด” | ระบุ threshold ตัวเลข + list AmloType ที่บล็อก | Compliance เป็นเจ้าของเกณฑ์นี้ ไม่ใช่ dev — ต้องแก้เกณฑ์ได้โดยไม่ deploy โค้ดใหม่ (config/DB ไม่ใช่ hardcode) | ✅ มีแถว match = ติดทันที ไม่ใช้ threshold (19/08) |
| D3 | ▫ | amlo-max-age-seconds: ครึ่ง compliance (stale Clear หลัง block ยอมรับได้กี่วินาที) + ครึ่ง performance (peak RPS/latency budget) | ตัวเลขจริงต่อ env | ครึ่ง compliance ตอบได้วันนี้เลย ไม่ต้องรอ implementation — ครึ่ง performance เป็น production-readiness gate ที่วัดได้หลัง implement เท่านั้น (ดู Open Items §4) จึงไม่บล็อกการเริ่มเขียนโค้ด แต่บล็อก go-live | ✅ ครึ่ง compliance = 120 วินาที (19/08) — ครึ่ง performance ยังรอ telemetry |
| D4 | ▫ | นิยาม “ห้ามทำกระบวนการใด ๆ” ครอบคลุมอะไรบ้าง | ตามตารางเสนอ (login/อ่านข้อมูลเดิม ✅ · สร้าง/ส่ง/อนุมัติรายการใหม่ ❌ · สลับบริษัท/logout ✅ เสมอ) | ตามที่เสนอ — แต่ “อ่านข้อมูลเดิม” ยัง implementable ไม่ได้จนกว่าจะมี route inventory พิสูจน์ว่าไม่มี side effect | ✅ ตามที่เสนอ (19/08) |
| D5 | ▫ | งานค้าง (Draft/Submitted) ของบริษัทที่เพิ่งติด — freeze หรือ reject | freeze / reject | freeze — reject แล้วกู้คืนไม่ได้ถ้าปลดบล็อกทีหลัง แต่ผู้อนุมัติฝั่งธนาคารต้องเห็นเหตุผลว่า freeze เพราะ AMLO ไม่ใช่ค้างเงียบๆ | ✅ Freeze (19/08) |
| D6 | ▫ | Governance การปลดบล็อกผ่าน Admin Portal (role, maker-checker, evidence, expiry, SLA) | รายละเอียด 5 ข้อใน Open Items §1.6 | ไม่บล็อกการเริ่ม implement โดยรวม แต่บล็อกการเริ่มงานย่อย clearance state machine (Phase 1 ข้อ 10/12) — อย่างน้อยต้องมี Compliance role เฉพาะ + evidence บังคับ ส่วน maker-checker ให้ Compliance เคาะ | ✅ (19/08, ยืนยันซ้ำแล้ว): role = ไม่แยก role เฉพาะ ใช้ Authorization ผ่านพอ · single approver ไม่ต้อง maker-checker · auto-unblock (ปลดจากไฟล์ตี 5 อัตโนมัติ) park ไว้รอ Business ชี้ขาดก่อน — ตอนนี้ทำแค่ manual clearance API ตามที่ design เดิมวางไว้ ⏳ evidence format (ต้องแนบไฟล์ไหม/แค่ข้อความ) ยังไม่ตอบ |
| D7 | ▫ | ไฟล์ AMLO รายวันเป็น snapshot หรือ delta | snapshot / delta / ยังไม่รู้ | ไม่บล็อกเฟส 1 (design เลี่ยงความเสี่ยงด้วยนิยาม “ติดแล้วติดเลย” ไปแล้ว) — บล็อกเฉพาะเฟส 2 (ปลดบล็อกอัตโนมัติ); ตอบได้จาก SQL ใน Open Items §1.1 ถ้า env นั้นมี batch ที่จบแล้วอย่างน้อย 2 ใบ — ถ้ายังไม่ครบให้บันทึกว่า “ยังไม่มีคำตอบ” ห้ามเดา | ✅ เช็ค DB จริงแล้ว (19/08) — “ยังไม่มีคำตอบ” ตามกฎของ Open Items §1.1 เอง: DEV_CentralizedDb มี batch สถานะ Completed แค่ 1 ใบ (AMLO_20260723055102187.csv, 23/07, 409 แถว, 84 custCode) UAT_CentralizedDb มีข้อมูลชุดเดียวกันเป๊ะ (ทับซ้อน ไม่ใช่ batch อิสระ — เข้าใจว่ามาจากการ farm ข้อมูลจาก dev ไป UAT) SIT_CentralizedDb ยังไม่มีตารางนี้เลย — ต้องรอไฟล์ AMLO เข้ามาอีกอย่างน้อย 1 รอบก่อนถึงจะตอบได้จริง เกี่ยวข้องกับ D6 โดยตรง (auto-unblock ก็รอ Business เหมือนกัน) |
⚠️ D1 มีผลต่อลำดับ implementation — Owner อนุมัติแตะ Sentinel+APIM แล้ว แต่สั่งให้ APIM policy (facade v7) เป็นงานลำดับสุดท้าย เพราะ UAT กำลัง process อยู่ ณ ตอนนี้ แตะตอนนี้เสี่ยงชนงาน UAT — วางแผน implementation ให้ทำ UserService/clearance/FE/cache-envelope-design ก่อน แล้วค่อยแตะ APIM policy จริงเป็นขั้นสุดท้าย
แก้ได้เลยตอนนี้
ตรวจกับโค้ดจริงบน origin/development แล้ว — มีข้อเดียวที่เป็น “ติด attribute เดียว จบใน PR เดียว” จริงตามที่เข้าใจแรก:
| # | ช่อง | สถานะจริง | สิ่งที่ต้องทำ |
|---|---|---|---|
| 1 | AmloScreeningController ไม่มี auth เลย — คืนข้อมูล watchlist ดิบ | ✅ ติด attribute เดียวจบ — แต่ควร confirm ไม่มี caller ก่อน เพราะ AdminAmloIngestionController ข้างๆ ติด [RequireApiKey] ไว้แล้ว แสดงว่าเป็นการตัดสินใจที่ตั้งใจแยกกันไว้ ไม่ใช่ลืม | ติด [RequireApiKey] ที่ Centralized01.API/Controllers/v1/AmloScreeningController.cs:1-26 |
ตัดออกจาก scope รอบนี้ตาม Owner (19/08):
GET /v1/companies/cust-codes(UserService01.API/Controllers/v1/CompanyController.cs:196,199) — ไม่แตะ repoBackend_FxOrchestratorServiceเลย (caller จริงของ endpoint นี้อยู่ที่นั่น)UserCacheController(UserService01.API/Controllers/v1/UserCacheController.cs:16-18) — Owner เห็นว่า KVWarmCacheApiKeyไม่น่ามีค่าจริงตั้งไว้ ถ้า uncomment ตอนนี้จะพัง warm-cache ตอน login เงียบๆ
รายละเอียดเต็ม + อีก 5 ช่องที่เหลือใน §2 → Open Items §2
สถานะล่าสุด (19/08)
เริ่ม implement ได้แล้ว — ทั้ง 2 ข้อ ❗ (D1, D2) ได้คำตอบครบแล้ว ข้อที่เหลือไม่บล็อกการเริ่มเขียนโค้ด:
- D1 ✅ อนุมัติ — แต่ APIM policy (facade v7) ต้องทำเป็นลำดับสุดท้าย เพราะกระทบ UAT ที่กำลัง process อยู่ วางแผน sequencing ให้เริ่มจาก UserService/clearance/FE/cache-envelope-design ก่อน แล้วค่อยแตะ APIM
- D2 ✅ มีแถว match = ติดทันที ไม่ใช้ threshold
- D3 ครึ่ง performance ยังไม่ได้คำตอบ = ไม่บล็อกการเริ่มเขียนโค้ด แต่ไม่มีเลข TTL/SLA จริงใส่ config ได้ ระบบจะ deploy ขึ้น production ไม่ได้จนกว่าจะมี (บล็อกแค่ go-live ไม่ใช่การเริ่ม)
เอกสารที่เกี่ยวข้อง
| อยากรู้เรื่องอะไร | ไปอ่านที่ |
|---|---|
| ภาพรวมสำหรับคนอ่านครั้งแรก | Overview |
| รายละเอียดเต็มของทุกคำถาม (§1), ช่องโหว่ทั้ง 8 (§2), performance gate (§4) | Open Items |
| กลไกเบื้องหลังแบบละเอียด | Architecture & Scenarios |