กลับหน้าฝูงบอท

คู่มือใช้งาน UAT Tester · ฝูงบอททดสอบ SML AI Account

UAT Tester คือเว็บที่ให้บอท 32 ตัวทดสอบโปรแกรมบัญชี SML AI Account (www.smlwork.com) ตามสคริปต์ทีละขั้น ทั้งหน้าจอ API และฐานข้อมูล Demo เจอปัญหาจะเปิด issue ใน IssueMate ให้เอง นักพัฒนาที่เป็น AI สั่งทดสอบซ้ำได้เองจนกว่าจะผ่าน ส่วนเพื่อนๆ เปิดดูผลได้ทุกหน้าโดยไม่ต้องล็อกอิน

ภาพที่ 1 · ภาพรวมระบบ

ภาพรวมระบบ UAT Tester: AI นักพัฒนา ผู้ดูแล และผู้ชม สั่งงานหรือดูผลผ่านหน้าเว็บและ MCP ตัวรันทดสอบกับ www.smlwork.com และฐาน smldemo ไม่ผ่านส่งสมอง AI วิเคราะห์แล้วเปิด issue ใน IssueMate
กดที่ภาพเพื่อเปิดภาพเต็ม (PNG)
  • ใครก็เปิดดูหน้าเว็บได้ แต่การสั่งรัน ตั้งค่า ถาม AI และส่ง issue ทำได้เฉพาะผู้ดูแลที่เข้าระบบด้วย Google
  • AI นักพัฒนา (Claude Code / Antigravity) สั่งงานผ่านช่อง MCP ที่ /api/mcp โดยใช้ token
  • ทุกคำสั่งรันเข้าคิวก่อน รันพร้อมกันได้สูงสุด 5 รอบ (ผู้ดูแลปรับได้ 1–10)
  • ตัวรันทดสอบกับของจริงทั้งหมด: เว็บ www.smlwork.com (เข้าแบบ Demo) และฐาน PostgreSQL smldemo เท่านั้น
  • รอบที่ไม่ผ่าน สมอง AI อ่านขั้นที่พังพร้อมภาพหน้าจอ แล้วระบบเปิด issue ในโปรเจกต์ SMLAIACC ของ IssueMate

ภาพที่ 2 · วงจร AI แก้ → ทดสอบ → แจ้ง → แก้ซ้ำ

วงจร 6 ขั้น: AI แก้โค้ด สั่งทดสอบผ่าน MCP บอททดสอบของจริง ไม่ผ่านให้สมอง AI วิเคราะห์ เปิด issue ใน IssueMate แล้ว AI อ่าน issue แก้และตรวจซ้ำจนผ่าน
กดที่ภาพเพื่อเปิดภาพเต็ม (PNG)
  • AI แก้โปรแกรมเสร็จ เรียกคำสั่ง run ผ่าน MCP แล้วรอผลได้ถึง 90 วินาที หรือติดตามด้วย events
  • ผ่าน: ถ้าเคยมี issue ระบบคอมเมนต์ใน issue เดิมว่าตรวจซ้ำผ่านแล้ว หน้าเว็บขึ้นป้ายพร้อมพลุกระดาษ
  • ไม่ผ่าน: สมอง AI เขียนสาเหตุที่น่าจะเป็น (เป็นการคาดเดา ต้องตรวจโค้ดจริงเสมอ) แล้วเปิด issue พร้อมขั้นตอนทำซ้ำ ภาพ และ run.json
  • ระดับปัญหาแปลงเป็นความสำคัญของ issue: S1→critical, S2→high, S3→medium, S4→low · ปัญหาเดิมไม่เปิด issue ซ้ำ
  • AI แก้ตาม issue แล้วสั่ง run แบบระบุเลข issue ระบบรันซ้ำเฉพาะสคริปต์ของ issue นั้น วนจนผ่าน

ภาพที่ 3 · ข้างในการรันสคริปต์ 1 รอบ

ขั้นตอนการรัน: สคริปต์ JSON เข้าคิว ตัวรันทำทีละขั้น 4 ชนิด คือหน้าจอ ตรวจจอสะอาด API และฐานข้อมูล ขั้น cleanup รันเสมอ แล้วแยกผลผ่านหรือไม่ผ่าน
กดที่ภาพเพื่อเปิดภาพเต็ม (PNG)
  • สคริปต์ทดสอบเป็นไฟล์ JSON ในโฟลเดอร์ uat-scripts (ตอนนี้ 31 ชุด) AI เพิ่มเองได้ด้วยคำสั่ง save_script
  • หน้าจอ (ui.*): Chrome ผ่าน Playwright เปิดเมนู กรอก กด แล้วตรวจข้อความ/ค่า และถ่ายภาพจอสดให้การ์ดบอท
  • จอต้องสะอาด (ui.expectClean): ห้ามมี HTTP 4xx/5xx ห้ามมี error ใน JS/console และห้ามมีข้อความ error ฐานข้อมูลบนจอ
  • API (api.request) ตรวจสถานะ HTTP และค่าใน JSON · ฐานข้อมูล (db.query / db.exec) ตรวจทีละแถว แตะได้เฉพาะ smldemo
  • ขั้น cleanup รันเสมอแม้ขั้นหลักพัง ผลทุกรอบเก็บใน runs/<id>/run.json พร้อมภาพและไฟล์หลักฐาน

วิธีดูหน้าเว็บ (สำหรับเพื่อนๆ)

การ์ดบอท
หน้าแรกมีการ์ด 30 ใบ เรียงบอทที่กำลังรันก่อน แล้วตามเวลาทำงานล่าสุด จอบนการ์ดคือภาพหน้าจอล่าสุด แถบล่างบอกว่ากำลังทำขั้นไหน ป้ายแดง "สด" แปลว่ากำลังรันอยู่
ดูทุกขั้นตอน
กดที่จอบนการ์ด จะเปิดรอบการรันนั้น เห็นทุกขั้น ค่าที่คาดหวังเทียบค่าที่ได้จริง และภาพหลักฐาน
ไฟสถานะด้านบน
บอกว่าเว็บ ERP, ฐาน Demo, สมอง AI และ IssueMate พร้อมใช้งานหรือไม่
ปุ่ม ▶ และ ✨
▶ รันสคริปต์ของบอทตัวนั้น · ✨ สั่งบอท AI ให้วางแผนหรือชี้จุดเสี่ยง ทั้งสองปุ่มใช้ได้เฉพาะผู้ดูแล คนอื่นจะได้ข้อความ "ดูได้อย่างเดียว"
แอนิเมชัน
มีคำสั่งจาก AI เข้ามาจะมีลำแสงพุ่งจากมุมขวาบน รอบจบขอบจอเรืองเขียว (ผ่าน) หรือกะพริบแดง (ไม่ผ่าน)

เชื่อม AI ผ่าน MCP (สำหรับนักพัฒนา)

ปลายทาง https://uat.smlwork.com/api/mcp (HTTP, JSON-RPC) ยืนยันตัวด้วยหัว Authorization: Bearer <token> ขอ token จากผู้ดูแล มีคำสั่ง 7 ตัว:

statusสุขภาพระบบ ค่าตั้ง จำนวนสคริปต์ รอบที่กำลังรัน
scriptsรายการสคริปต์ หรืออ่านไฟล์สคริปต์ตาม id
save_scriptเพิ่ม/แก้สคริปต์ (ตรวจรูปแบบก่อนบันทึก)
runสั่งรันตามสคริปต์ / บอท / โมดูล / ทั้งหมด หรือตามเลข issue แล้วรอผล
runsดูรอบการรัน ผลละเอียด หยุด หรือส่งเข้า IssueMate
eventsฟีดเหตุการณ์แบบรอได้ (long-poll)
notifyส่งข้อความขึ้นหน้าเว็บ

คำถามที่พบบ่อย

ทำไมบอทมี 32 ตัว

10 โมดูล (ข้อมูลหลัก งานขาย งานซื้อ สต็อก บัญชี GL ภาษี รายงาน สิทธิ์ความปลอดภัย แอดมิน กระทบยอด) × 3 มุมตรวจ (หน้าจอ ฐานข้อมูล API) + เงินสด/ธนาคาร 2 มุม (หน้าจอ ฐานข้อมูล)

ทดสอบกับข้อมูลลูกค้าจริงไหม

ไม่ ตัวรันยอมให้แตะเฉพาะฐาน Demo ชื่อ smldemo และเข้าเว็บด้วยปุ่ม Demo

บทวิเคราะห์ของสมอง AI เชื่อได้แค่ไหน

เป็นการคาดเดาจากขั้นที่พังและภาพหน้าจอ ต้องตรวจโค้ดจริงก่อนแก้ทุกครั้ง

ทำไมกดรันไม่ได้

การสั่งงานต้องเข้าระบบด้วย Google บัญชีผู้ดูแล คนอื่นดูผลได้ทุกหน้าแต่สั่งงานไม่ได้

จะเปิด issue ซ้ำไหม

ไม่ ระบบจำสคริปต์และขั้นที่พังที่ส่งไปแล้ว เมื่อสคริปต์กลับมาผ่านจึงล้างรายการและคอมเมนต์ใน issue เดิม

ภาพ Workflow สร้างจาก docs/workflow/*.html · อ้างอิงโค้ดจริงใน src/lib และ runner/run.mjs