#history#uat#issuemate#bugs#test-data
ภาพรวม
2026-10-19..29 บั๊กเข้าสามทาง: GitHub issue #1-#100 ที่ watcher ดึงมาแก้เป็นชุด, UAT swarm (R1, r2, r3b ใน handoff 2026-10-22) และใบงาน IssueMate SMLAIACC-nnn วันที่ 29 ปิด "13 S1 bugs + 5 Hold" กับ SMLAIACC-123..169 ซ้ำเพราะเส้นทางที่ข้ามด่านกลางและข้อมูลทดสอบที่ค้าง
อาการ
- A (watcher): 1ae4ac0c ปิด #1-#35 (147 ไฟล์ รวม
wait_for_issue.py); ต่อด้วย bc8d27d4 (#36-#48), 866328e7 (#49-#72), bbf81811 (#73-#91), 72d402f3 (#92-#93), 6ba1a6d9 (#94-#97 รวม 401 refresh token), 2c97aa3a (#98-#100) (ชุดหลังตามข้อความ commit; ยังไม่ตรวจ diff) - B (UAT r3b, 2026-10-22): หยุดกลางทางราว 40 นาที;
r3f-trans-glพบ B1: บันทึกเอกสาร ~10 ใบพร้อมกันกับสินค้าเดียวกันได้deadlock detectedเป็น HTTP 400;regression64 เคสไม่พบ - C (13f953cc): จาก
uat_s1_fixes_test.go: A3/Hold1 ต้นทุนเฉลี่ยรับคืน (48, 58, 60), A5 โอน 422 ไม่บังคับสมุดปลายทาง, A6 ยอด/ราคา/จำนวนติดลบผ่าน, B1 ปี พ.ศ./ค.ศ. ในรายงานภาษี, B3 flag มัดจำ 11/25/110/112 ไม่อยู่ใน VAT, C1 SQL รายงานอ่านไฟล์เซิร์ฟเวอร์ได้; ส่วน GL, สิทธิ์, bcrypt ไม่มี test - D (a3809aba, 8dad8a4d, 3ca3b07b):
/login,/adminยิง query ก่อนล็อกอิน; ไม่มีลูกค้า POSAR0001/CASH; อัตรา VAT 0; หน้าเปลี่ยนรหัสผ่านโหมดสาธิตไม่มีช่องกรอก (SMLAIACC-122); PDF ไม่มีชื่อเมนู, ปุ่มลัด grid
สาเหตุ (root cause)
- B: บันทึกแก้
ic_trans_detailของเอกสารอื่นที่ใช้สินค้าเดียวกันโดยไม่เรียงลำดับ lock (คอมเมนต์ 4341ae81; handoff ไม่ระบุ commit แก้ แต่วันและอาการตรงกัน) - C: ข้ามด่านกลาง:
report/runรับcustomSqlด้วยสิทธิ์อ่าน, regex SQL ไม่กันpg_read_file/lo_export, รหัสผ่านเก็บ plaintext,vat_effective_yearลบ 543 ตรงๆ แม้เป็น ค.ศ. - D: หน้าบ้านเรียก API ทั้งที่ยังไม่มี session/DB (
smlBilingualDataCache.ts,numeric.ts); seed ไม่ครบ
วิธีแก้
- C:
report/run/report/pdfที่มีcustomSqlต้อง admin;forbiddenSQLKeywordsReเพิ่มฟังก์ชันไฟล์/lo_*/dblink;HashPassword+Authenticateรองรับ bcrypt และ plaintext เดิม;glfaPeriodSQLแยกปีด้วย>2400; ลงtransVatTabs4 flag;trans.goปฏิเสธยอดติดลบ/บังคับสมุดปลายทาง 422; รับคืน 48 ใช้ต้นทุนเฉลี่ยปัจจุบัน - B: 4341ae81 เพิ่ม
lockStockItems(advisory lock เรียงรหัสสินค้า) ดู บทเรียนบั๊กการทำงานพร้อมกันและ advisory lock (Concurrency & Advisory Locks) - D:
isPublicOrNoDbPathข้ามการโหลดบนหน้า login/select-database/admin; seed ลูกค้า POS; ถอดอัตรา VAT จากยอดเมื่อเป็น 0
commit ที่เกี่ยวข้อง
13f953cc— 13 S1 + 5 Hold (33 ไฟล์) รวมบัญชี 212015 ของ 310/311/315 และ WHT ในช่องทางจ่ายa3809aba— กัน query ก่อนล็อกอิน, seed POS, อัตรา VAT; watcher ปลุกเมื่อai_approved/มีคอมเมนต์ใหม่8dad8a4d— หน้ารหัสผ่านสาธิต + กฎฐานทดสอบ;3ca3b07b— SMLAIACC-123..169- SMLAIACC-106..116 (22-23 ต.ค. UI/ตัวเลข/แท็บ) ตามข้อความ commit ยังไม่ได้ตรวจ diff; 234/235 แยก 6 commit ตาม root cause
โค้ดปัจจุบันที่ป้องกัน
backend/internal/application/process/uat_s1_fixes_test.go:10-160(test ทั้ง 7 ข้อ)backend/internal/application/process/report_template.go:499,502;.../http/process/permission.go:60;backend/internal/domain/identity/identity.go:44-69;.../http/admin/handler.go:283,340backend/internal/application/process/trans_tax.go:42,80-81;report_menu_gl_fa.go:1023;trans.go:863,1021backend/internal/application/process/service.go:272(48),:987-1000(lockStockItems),:1658(212015);pos_config.go:410frontend/src/config/i18n/smlBilingualDataCache.ts:74;frontend/src/lib/api-server.ts:79-104(refresh token single-flight จาก 6ba1a6d9);scripts/wait_for_issue.py:713(poll 60 วินาที)
บทเรียน / กฎที่ได้
- จัดกลุ่มบั๊กตาม root cause, แก้พร้อม test ที่พังก่อนแก้, commit ละ root cause แล้วรันชุดเต็มซ้ำ ห้ามบอกเสร็จก่อนรอบสุดท้ายผ่าน (
HANDOFF_SMLCM_PARITY_2026-10-22.md:52) - ทดสอบกับ
smldemoเท่านั้น ห้ามแตะฐานลูกค้าจริง; r3b ทิ้งเอกสารZZ4-ไว้ 55ic_trans, 19gl_journal, 6cb_trans, 3 สินค้า (handoff ข้อ 4) ลบผ่านหน้าจอ/API ลบของ backend เท่านั้นเพื่อให้สต็อก/GL ถอย ห้าม SQL ดิบ; แถว audit ปล่อยไว้ - AGENTS.md ข้อ 7 (8dad8a4d) สร้างฐาน
uat_<name>ได้ แต่ห้ามรหัสหลุดลงเว็บ/แชท/log/git และห้ามแก้smldemoยกเว้นแถวUAT - สิทธิ์และ SQL ตรวจที่ backend ทุกเส้นทาง; หน้าก่อนล็อกอินห้ามยิง API
- ชุด
options-r3efg(แก้erp_option) รันเดี่ยว: INSERT -> ทดสอบ -> DELETE ใน try/finally แล้วนับแถว = 0
ดูเพิ่ม
เฝ้าและตอบใบงาน IssueMate SMLAIACC (wait_for_issue.py, reply-batch, คำถาม PDF) · UAT Swarm 32 บอท: คำสั่ง DSL และกติกาผู้ทดสอบขี้สงสัย (UAT Swarm DSL, Skeptical Tester) · บทเรียนบั๊กลงบัญชี GL และความสมดุล (GL Posting & Balance Bugs) · บทเรียนระบบสิทธิ์เมนู (Permission & Menu Rights) · บทเรียนการบันทึก master data ไม่ให้ข้อมูลหาย (Master Save: Preserve Columns) · hist-parity-smlcm · history-overview
ที่มาในโค้ด
- git: 13f953cc, a3809aba, 8dad8a4d, 3ca3b07b, 1ae4ac0c, bc8d27d4, 866328e7, bbf81811, 72d402f3, 6ba1a6d9, 2c97aa3a, 4341ae81
docs/HANDOFF_SMLCM_PARITY_2026-10-22.md(ข้อ 3-4),docs/kms/KMS_UAT_SWARM_AND_ISSUEMATE.md