ผลตรวจ Test
ผลทดสอบแต่ละรอบ จัดเป็นหัวข้อตามเรื่องที่ตรวจ แต่ละข้อบอกเป็นประโยคว่าตรวจอะไร เลือกดูเฉพาะเรื่องของ BA หรือ Technical ได้
ทั้งหมด 219
สำหรับ BA 146
สำหรับ Technical 118
ผ่าน
Mockup workspace: Sitemap / Page flow / Screen Listing
31 ต.ค. 2569, ผ่าน 13 จาก 13 ข้อ
Mockup browser 43 ข้อ + regression 70/25/9 รวม 147 ข้อผ่าน พร้อม Go/race/vet และ artifact validation
2 หัวข้อที่ตรวจ
แบบหน้าจอและเส้นทาง
BA
ตรวจหน้าจออ้างอิงร่วมกันและไม่ตีความ mapping ร่างเป็นข้อยืนยัน
Screen Listing มี 164 screen IDs และ proposal references 6 ภาพ พร้อม detail/variants/provenance/component links
ผ่าน
Sitemap ใช้ภาพ shape เรียงบนลงล่าง จำกัดความกว้างแถว และกรอง Module/Channel โดยไม่ลบข้อมูลที่ซ่อน
ผ่าน
Page flow เลือกครบ 162 Use cases และรักษา Decision/label/เส้นทางจาก canonical source
ผ่าน
W-41 แสดง A01 สร้างบัญชี A05 แนบหลักฐาน และทางข้ามผู้ปกครอง พร้อมภาพ state ของผลลัพธ์
ผ่าน
หน้าจอเดิมใช้หลาย occurrence ได้ แต่ละ occurrence เปลี่ยน state และ mapping แยกกัน
ผ่าน
Editor และ detail แสดงผลได้บนมือถือ พร้อม grid/zoom/label/arrow editing
ผ่าน
ข้อมูลและการบันทึกร่วม
Technical
ตรวจ catalog/API/storage และไม่รบกวนเครื่องมือเดิม
ตรวจ 170 screen records, 990 preview variants, 6 component contracts/previews และ 162 flow mappings
ผ่าน
go test -race -count=1 ./... และ go vet ./... ผ่าน รวม catalog/reference validation ทุก flow
ผ่าน
Same-origin write, invalid references, path/symlink confinement และ concurrent stale saves ถูกตรวจ
ผ่าน
Saved graph ไม่ถูกแทนที่เมื่อ source เปลี่ยน และ JSON เสียไม่ถูก reset เงียบ
ผ่าน
Save/Restore เก็บ revision snapshots และปฏิเสธ stale save โดยคง local edits
ผ่าน
mockups-check.mjs ผ่าน 43 assertions; Use cases 70; workflow review 25; task briefs 9
ผ่าน
ตรวจ GET บน 8099 ครบเมนู/guide/catalog/drafts และไม่มี real mockup graph ถูกสร้างโดย tests
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง python3 mockups/tools/build_catalog.py --check; cd tracker && go test -race -count=1 ./... && go vet ./...; Playwright mockups-check/usecases-check/workflow-review-check/task-brief-check บน temporary data
ผลจากเครื่องมือทดสอบ ผ่าน 147, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 147 คือ browser assertions 43+70+25+9; Go/data checks เพิ่มแยกกัน ทดสอบเขียนเฉพาะ /tmp/tnsu-mockup-final/data ไม่ approve Use cases จริง
ผ่าน
ทบทวน Use cases และ canonical decision diagrams
31 ต.ค. 2569, ผ่าน 13 จาก 13 ข้อ
ตรวจครบ 162 กรณี/47 decisions พร้อม browser 95 assertions โดยใช้ temporary data เท่านั้น
2 หัวข้อที่ตรวจ
พฤติกรรมและขอบเขต
BA
ตรวจข้อเสนอทางเลือกและไม่ข้ามเงื่อนไขที่มีผลต่อผู้เรียน
ผลตรวจครบ 162 ID และหมายเหตุสอดคล้องกับ canonical/generated catalog
ผ่าน
W-41 ข้ามข้อมูลผู้ปกครองเมื่อไม่จำเป็นได้จริง ไม่บังคับ Parent Portal ทุกคน
ผ่าน
W-77 ส่งเอกสารเพิ่มกลับไปตรวจใหม่ และทางปฏิเสธไม่ไปผลสำเร็จ
ผ่าน
W-147 ต่อสัญญา/ย้ายห้องไม่ผ่านคืนมัดจำแบบย้ายออก
ผ่าน
W-14 มีเส้นฉุกเฉินแยกก่อนสายอนุมัติปกติ; W-96 รอ EC ไม่ปิด milestone
ผ่าน
W-163 ยืนยันซ้ำแล้วข้ามการหมดสิทธิ์ และไม่ตอบไม่เท่ากับสละโดยอัตโนมัติ
ผ่าน
โครงสร้าง แผนภาพและการถดถอย
Technical
รักษาความสอดคล้องของต้นฉบับ ภาพ และ approval/history
go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
ทุกขั้นทั้ง 162 use cases เข้าถึงได้ ไม่มี dangling edge/dead end และมีทางถึง terminal outcome
ผ่าน
เงื่อนไข workflow ที่เปลี่ยนทำ approval stale โดยไม่เขียนทับ saved diagram
ผ่าน
สร้าง generated catalog ซ้ำได้ผลเหมือนเดิมทั้ง 37 ไฟล์
ผ่าน
usecases-check.mjs ผ่าน 70 assertions รวม grid zoom export PNG และ revision/approval
ผ่าน
workflow-review-check.mjs ผ่าน 25 assertions รวม branch labels, reset, saved revision, fit และ mobile
ผ่าน
ตรวจหน้า 8099 แบบอ่านอย่างเดียวแสดง canonical draft รุ่นใหม่โดยไม่สร้าง approval จริง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง python3 docs/agent/tools/check_use_case_review.py; cd tracker && go test -race -count=1 ./... && go vet ./...; Playwright usecases-check.mjs + workflow-review-check.mjs บน temporary server
ผลจากเครื่องมือทดสอบ ผ่าน 95, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 95 คือ browser assertions (70+25); Go และ data checks ตรวจเพิ่มแยกกัน การรันทดสอบก่อนหน้าพบ pointer นอก viewport และแก้ให้ scroll canvas ก่อนลากแล้วรันครบผ่าน ดู P-013
ผ่าน
ปิดงานจัดทำ Role/Security Matrix ฉบับร่าง
31 ต.ค. 2569, ผ่าน 4 จาก 4 ข้อ
ตรวจหลักฐานฉบับร่างและเปลี่ยนสถานะ Done เฉพาะ T-201/T-202 โดยคงรายการรอ BA/Security ยืนยัน
1 หัวข้อที่ตรวจ
สถานะและหลักฐาน
BA และ Technical
ปิดงาน Agent ที่เสร็จแล้วโดยไม่อนุมัติข้อกำหนดแทนผู้ตรวจ
Role/Security Matrix draft v0.1 มีไฟล์และหัวข้อครบตาม checkpoint C-004
ผ่าน
เปลี่ยนเป็น Done เฉพาะ T-201/T-202 และเวลา finished อ้างอิง C-004
ผ่าน
ข้อมูล review และ task อื่นทุก field คงเดิม
ผ่าน
go test -count=1 ./... ผ่าน
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง ตรวจ artifacts/status diff และ cd tracker && go test -count=1 ./...
ผลจากเครื่องมือทดสอบ ผ่าน 4, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ Done คือจัดทำฉบับร่างเสร็จ ไม่ใช่ยืนยัน business/security requirements; review.todo คงไว้
ผ่าน
ตรวจส่งมอบงานที่ Reviewed แล้ว
31 ต.ค. 2569, ผ่าน 9 จาก 9 ข้อ
Go race/vet ผ่าน Browser 70+9 รวม 79 assertions ผ่าน ใช้ข้อมูลชั่วคราวเพื่อปิดชุดงาน T-408–T-417
2 หัวข้อที่ตรวจ
Use cases และ diagram
BA และ Technical
ตรวจฟีเจอร์ที่ผ่านรีวิวทั้งชุดก่อนเก็บ Git
ตารางแบ่ง module/tabs/filter/collapse และ editor ทั้งชุดผ่าน 70 assertions
ผ่าน
Save/revision history/rollback และ approval invalidation ทำงานครบ
ผ่าน
PNG ส่งออกครบและ background White/Transparent ถูกต้องจริง
ผ่าน
UI review panels, dark mode, mobile และ unsaved edits ผ่าน
ผ่าน
Task briefs และคุณภาพโค้ด
BA และ Technical
รักษาผลรีวิวและรายละเอียดงานที่ตรวจแล้ว
Task briefs ผ่าน 9 assertions รวม T-303 และคำถาม 39 ข้อ
ผ่าน
Go test -race -count=1 ./... ผ่าน
ผ่าน
go vet ./... ผ่าน
ผ่าน
JSON ทุกไฟล์ JavaScript syntax และ git diff --check ผ่าน
ผ่าน
สถานะ T-408–T-417 ยังเป็น Reviewed และไม่มี Reject/Hold ค้าง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./... && go vet ./...; node tracker/e2e/usecases-check.mjs <chrome> <temporary-server> <shots> <playwright> <temporary-data>; node tracker/e2e/task-brief-check.mjs <chrome> <temporary-server> <shots> <playwright>
ผลจากเครื่องมือทดสอบ ผ่าน 79, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 79 คือจำนวน browser assertions; Go suite ตรวจแยก ไม่มีการอนุมัติหรือแก้ diagram จริงใน repository
ผ่าน
Task briefs และ stakeholder questions
30 ต.ค. 2569, ผ่าน 13 จาก 13 ข้อ
Go race/vet ผ่าน และ browser read-only 9 ข้อผ่าน ครอบคลุม task brief, T-303, questions, mobile และ SQL Server decision
2 หัวข้อที่ตรวจ
ความครบถ้วนของแผนงาน
BA
ให้ task อ่านแล้วเริ่มงานและรู้ว่าจะถามใครได้
งานรอดำเนินการ 13 งานแสดงรายละเอียด outputs และคำถาม 39 ข้อ
ผ่าน
T-303 แสดงคำถาม hosting 5 ข้อ และสถานะยังรอข้อมูล
ผ่าน
คำถามระบุผู้ที่ควรตอบและผลต่อการตัดสินใจ
ผ่าน
dependencies เป็นลิงก์กดไปงานที่เกี่ยวข้องได้
ผ่าน
ผู้รับผิดชอบที่เสนอมีป้ายรอยืนยัน ไม่ถูกตั้งเป็นผู้ได้รับมอบหมายจริง
ผ่าน
คำถามบนมือถือโหมดมืดไม่ทำให้หน้าล้น
ผ่าน
summary T-302 แสดงผลเลือก SQL Server ที่ยืนยันแล้ว
ผ่าน
งานเสร็จแล้วมีบริบทให้อ่านโดยยังรักษาสถานะเดิม
ผ่าน
โครงสร้างข้อมูลและการแสดงผล
Technical
คง review history และไม่บันทึกข้อสรุปที่ไม่มีคำตอบ
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
รหัสคำถามไม่ซ้ำ dependencies อ้างอิง task ที่มีจริง และคำถาม answered ต้องมี answer
ผ่าน
SSR Task แสดง description/deliverables/questions/ผู้ตอบครบ พร้อม escape ข้อความ
ผ่าน
refs ทุกไฟล์ของ task ที่เติมรายละเอียดมีอยู่จริง
ผ่าน
Browser read-only 9 assertions ผ่าน ไม่เปลี่ยนข้อมูล/ผลรีวิว
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/task-brief-check.mjs <headless-shell> <base-url> <output-dir> <playwright-module>
ผลจากเครื่องมือทดสอบ ผ่าน 9, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 9 คือ browser assertions; งาน hosting/data model/scope ยังคง todo ตามเดิม การเติม brief ไม่ใช่การปิดงานเหล่านั้น
ผ่าน
Review panels UI และ PNG export
30 ต.ค. 2569, ผ่าน 9 จาก 9 ข้อ
Browser 70 ข้อผ่าน รวมไฟล์ PNG จริง และ UI Approval/History ทั้งจอเล็กและโหมดมืด
2 หัวข้อที่ตรวจ
Review panels
BA
อ่านสถานะและประวัติได้ง่าย
Approval ที่อนุมัติแล้วแสดงผู้ตรวจและหมายเหตุแทนฟอร์มว่าง
ผ่าน
Revision history มี empty state และ Current version ที่ชัดเจน
ผ่าน
Refresh ประวัติล้มเหลวแล้วยังเก็บรายการเดิมไว้
ผ่าน
Review panels บนมือถือไม่ทำให้หน้าล้น และ screenshot สว่าง/มืดอ่านได้
ผ่าน
PNG export และ regression
Technical
ส่งออกได้ครบและรักษาความโปร่งใสจริง
เปิด Export PNG dialog และเลือกพื้นหลังได้
ผ่าน
PNG พื้นหลัง White มี pixel มุมเป็น RGBA 255,255,255,255
ผ่าน
PNG Transparent มี alpha channel ที่มุมเท่ากับ 0
ผ่าน
ขนาด PNG ตรงกับ full graph bounds แม้ซูม viewport
ผ่าน
Browser regression ทั้ง 70 ข้อผ่าน และ JavaScript syntax ถูกต้อง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node tracker/e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 70, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ ทดสอบการ Save/Approve เฉพาะ /tmp; ตรวจ PNG ที่ดาวน์โหลดจริง ไม่ใช้ screenshot แทนการส่งออก
ผ่าน
Horizontal workflow, revision history, approval และ module groups
30 ต.ค. 2569, ผ่าน 16 จาก 16 ข้อ
Browser 59 ข้อผ่าน Go race suite และ vet ผ่าน ทดสอบการเขียน/Approve เฉพาะข้อมูล /tmp
2 หัวข้อที่ตรวจ
Workflow และรายการ Use cases
BA
จัดและค้นหากระบวนการได้ง่าย พร้อมตรวจยืนยันเป็นราย Use case
ร่างใหม่ไหลซ้ายไปขวาและเว้นช่องตามขนาด shape
ผ่าน
Arrange horizontally เก็บ shape/connection เดิมครบและ Undo คืนตำแหน่งได้
ผ่าน
Toolbar ใช้ปุ่มอังกฤษที่ชัดเจน
ผ่าน
กลุ่ม Module แสดงชื่อเต็ม หุบ/ขยาย และ Expand all / Collapse all ได้
ผ่าน
หุบ Module แล้ว reload ยังจำสถานะ ใช้กับ channel tabs และ filters ได้
ผ่าน
Approve เก็บชื่อ เวลา หมายเหตุ และแสดงสถานะในตาราง
ผ่าน
แก้/Save/Restore แล้วสถานะอนุมัติต้องยืนยันใหม่และไม่ล้าง approval history
ผ่าน
Restore คืนเนื้อหาจาก revision เดิมเป็น revision ใหม่ เก็บ intermediate revisions ครบ
ผ่าน
ความถูกต้องและ concurrent edits
Technical
ไม่ทับงาน ไม่ยืนยันข้อมูลที่ยังไม่ได้ตรวจ และไม่ลบประวัติ
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
ทุก snapshot และ current graph เขียน atomic และอ่านกลับหลังสร้าง store ใหม่ได้
ผ่าน
การ Save พร้อมกันยอมรับครั้งเดียวและเก็บ history ถูกต้อง
ผ่าน
stale restore / stale source / stale diagram approval ถูกปฏิเสธ
ผ่าน
CSRF และ approval ที่ไม่มีชื่อหรือไม่ยืนยันถูกปฏิเสธ
ผ่าน
ไฟล์เดิมที่ยังไม่มี history ถูกเก็บ revision เดิมก่อนบันทึกถัดไป
ผ่าน
Approve ร่างเริ่มต้นจะ Save layout เป็น revision 1 ก่อนและบันทึกการยืนยัน
ผ่าน
Browser regression ครบ 59 ข้อไม่พบ JavaScript exceptions
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 59, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 59 คือจำนวน browser assertions; tests ของ approval ไม่เคยเขียนข้อมูลจริงใน repo
ผ่าน
Use cases tabs / full descriptions / Ctrl-wheel และ Overview order
30 ต.ค. 2569, ผ่าน 11 จาก 11 ข้อ
Browser regression ผ่าน 41 ข้อ พร้อม Go race suite และ vet ผ่าน ตรวจหน้า 8099 แบบอ่านอย่างเดียวผ่าน
2 หัวข้อที่ตรวจ
การอ่านและค้นหา Use cases
BA
อ่านรายการตามช่องทางและอ่านเนื้อหา diagram ครบ
แท็บทั้งหมด Frontend Backoffice และ Integration ใช้ร่วมกับ filters ได้
ผ่าน
ตารางแสดงยาวลงมาตามหน้าโดยไม่มีความสูงจำกัด
ผ่าน
description จากต้นฉบับแสดงครบ ตัดเป็นบรรทัดสั้น และร่างใหม่ไม่ซ้อนกัน
ผ่าน
description ยาวหลายบรรทัดอยู่ภายใน Start End Process และ Decision ครบทุกตัวอักษร
ผ่าน
Current Task อยู่ก่อน Milestone ทั้งหมดบนหน้าภาพรวมจริงพอร์ต 8099
ผ่าน
การซูมและ regression
Technical
ตรวจการทำงานร่วมกับ editor และการเก็บข้อมูลเดิม
Ctrl + scroll ขึ้นซูมเข้า ลงซูมออก โดยรักษาพิกัดใต้เมาส์
ผ่าน
dropdown แสดงสเกลตรงและไม่เปลี่ยนระดับ zoom ของ browser
ผ่าน
scroll ไม่กด Ctrl ยังคง pan และ zoom/pan ไม่ทำให้ข้อมูลมีสถานะยังไม่บันทึก
ผ่าน
Integration ต้องมีชื่อระบบที่ระบุ ไม่อนุมานจากขั้นตอนระบบทั่วไป
ผ่าน
Browser ทั้ง 41 ข้อผ่าน รวมกริด เส้นหักมุม สองผู้ใช้ SSE save/reload และมือถือ
ผ่าน
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>; main read-only smoke
ผลจากเครื่องมือทดสอบ ผ่าน 41, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 41 หมายถึง browser regression; ยังตรวจ main 8099 แบบอ่านอย่างเดียวและ Go suite แยกต่างหาก
ผ่าน
Diagram Snap to grid และเส้นเชื่อมหักมุม
30 ต.ค. 2569, ผ่าน 4 จาก 4 ข้อ
Browser ผ่าน 24 ข้อหลังปรับ Snap to grid และเส้น orthogonal บนข้อมูล /tmp
1 หัวข้อที่ตรวจ
การจัดตำแหน่งและเส้นเชื่อม
BA และ Technical
จัด diagram ให้อยู่แนวเดียวกันและอ่านทางเดินของเส้นได้ง่าย
ลาก shape แล้วพิกัดขยับตรงกริด 20 หน่วย
ผ่าน
ทุกช่วงของเส้นเชื่อมเป็นแนวนอนหรือแนวตั้ง หักมุม 90°
ผ่าน
shape ที่เพิ่มและพิกัดหลังลากยังตรงกริดหลังบันทึกและเปิดใหม่
ผ่าน
Regression browser ทั้ง 24 ข้อผ่าน รวม Fit/กึ่งกลาง ซูม ลากเส้น สองผู้ใช้ SSE undo/redo โหมดมืดและมือถือ
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node tracker/e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 24, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ การลากทดสอบใช้จุดที่ไม่อยู่กึ่งกลางระหว่างสองช่องกริด เพื่อไม่ผูก assertion กับทศนิยมจาก SVG zoom
ผ่าน
Use cases Table view และ Diagram editor
30 ต.ค. 2569, ผ่าน 15 จาก 15 ข้อ
Go suite พร้อม race detector และ go vet ผ่าน Browser ผ่าน 23 ข้อบนข้อมูลสำเนา รวมการจัดกึ่งกลางและ Fit ทั้งหมดตามคำขอล่าสุด
2 หัวข้อที่ตรวจ
Catalog และการแสดงผล
BA
ใช้ Use cases เดิมเพื่ออ่านและแก้ workflow ได้สะดวก
ตารางแสดงครบ 162 Use cases และกรอง Module / คำค้นหาได้
ผ่าน
Diagram ฉบับร่างเก็บขั้นตอนต้นฉบับครบและมีข้อมูลผู้เกี่ยวข้อง
ผ่าน
เปิด diagram แล้วเห็นทุก shape อยู่กึ่งกลางทั้งสองแนว
ผ่าน
ผู้ใช้ซูมเข้าและกลับมาดูพอดีทั้งหมดได้
ผ่าน
เพิ่ม shape 4 แบบ แก้ข้อความ และลาก shape กับเส้นเชื่อมได้
ผ่าน
แก้ข้อความและหัวลูกศรต้น–ปลายของเส้นเชื่อมได้
ผ่าน
ลบ shape พร้อมเส้นที่เกี่ยวข้อง และ undo/redo คืนได้
ผ่าน
ข้อมูลบันทึกส่วนกลางยังอยู่หลังเปิดใหม่ โหมดมืดและจอมือถือใช้งานได้
ผ่าน
ความถูกต้องและการบันทึก
Technical
รักษาข้อมูลและไม่ทับงานของผู้ใช้อื่น
Go test -race -count=1 ./... ผ่านทุก test รวม SSE
ผ่าน
go vet ./... และ JavaScript syntax check ผ่าน
ผ่าน
ปฏิเสธ CSRF รหัสไม่รู้จัก JSON ผิดรูปแบบ ข้อมูลเกินขนาด shape/เส้นไม่ถูกต้อง และ revision เก่า
ผ่าน
บันทึกแล้วอ่านกลับได้ และรองรับวงจรกับ canvas ว่าง
ผ่าน
ทดสอบสองผู้ใช้จริง: บันทึกเวอร์ชันเก่าไม่ทับงานอีกคนและเก็บข้อความในหน้าจอไว้
ผ่าน
SSE จริงไม่ล้าง diagram ที่ยังไม่บันทึก
ผ่าน
Browser ทดสอบ 23 ข้อผ่านและไม่พบ JavaScript exception
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 23, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 23 คือ browser assertions; Go suite ผ่านทุกข้อด้วย ใช้ Playwright ที่มีอยู่แล้ว ไม่ได้เพิ่ม dependency ให้ tracker ทดสอบการเขียนบนข้อมูล /tmp เท่านั้น
ผ่าน
Tracker โหลดช้าเมื่อเปิดหลาย tab
30 ต.ค. 2569, ผ่าน 8 จาก 8 ข้อ
ตรวจว่า tab ที่ไม่ได้ดูคืนช่องเชื่อมต่อ, กลับมาแล้ว live update ทำงานต่อ และ CSS/JS โหลดจาก cache ผ่านทุกข้อ
2 หัวข้อที่ตรวจ
Server
Technical
ยืนยันว่า server ไม่ใช่ต้นเหตุ
ทุกหน้าตอบภายใน 2 ms บนเครื่อง และ 5–25 ms ผ่าน tailnet
ผ่าน
CSS/JS ที่มี ?v ตรงกับ build ได้ Cache-Control immutable, ไม่มีหรือไม่ตรงได้ no-cacheTestStaticCaching
ผ่าน
go test ทั้งหมด27 ผ่าน
ผ่าน
Browser (E2E)
BA
เปิดหลาย tab แล้วไม่ช้า
tab ที่ถูกซ่อนปิดการเชื่อมต่อ live updateการเชื่อมต่อลดลง 1
ผ่าน
กลับมาที่ tab แล้วป้ายเป็น "อัปเดตแบบเรียลไทม์" อีกครั้ง
ผ่าน
เปิดหน้าที่สองแล้ว CSS/JS มาจาก cache ทั้งหมด
ผ่าน
Live update ยังทำงาน (live-check บนข้อมูลสำเนา)32 → 33 task โดยไม่ reload
ผ่าน
Timeline (timeline-check)9 ข้อ
ผ่าน
ผ่าน
Timeline เต็มจอและเส้นแบ่ง
30 ต.ค. 2569, ผ่าน 13 จาก 13 ข้อ
ตรวจว่า Timeline ใช้พื้นที่เต็มจอ, chart ยืดถึงขอบขวา, ลากเส้นแบ่งได้และจำค่า, ย่อ/ขยายแถวได้ และตำแหน่งแถบยังถูกต้องหลังเปลี่ยนเป็น % ผ่านทุกข้อ
4 หัวข้อที่ตรวจ
Timeline layout
Technical
ตำแหน่งแถบยังถูกต้องหลังเปลี่ยนจาก px เป็น %
Task 1 วันกว้าง 1 หน่วยพอดี และความกว้างขั้นต่ำ = จำนวนหน่วย × 44 px
ผ่าน
Task ที่ยังเปิดอยู่ยืดถึงเส้นตอนนี้
ผ่าน
แถบ Epic ครอบทุก task ข้างใน
ผ่าน
go test ทั้งหมด26 ผ่าน
ผ่าน
Full width (E2E)
BA
chart ใช้พื้นที่จอได้เต็ม
หน้า Timeline กว้างถึงขอบ browsermain 1348 + เมนู 252 = 1600 px
ผ่าน
chart ยืดถึงขอบขวา ไม่มีที่ว่าง
ผ่าน
เส้นแบ่งรายละเอียด / chart (E2E)
BA
ปรับความกว้างช่องรายละเอียดได้ตามต้องการ
ลากที่หัวตารางแล้วช่องรายละเอียดกว้างขึ้น380 → 540 px
ผ่าน
ลากที่ขอบแถวแล้วช่องรายละเอียดแคบลง540 → 440 px
ผ่าน
กดลูกศรขวาแล้วขยับ 20 px
ผ่าน
reload แล้วจำความกว้างไว้
ผ่าน
กด Home แล้วกลับค่าเดิม380 px
ผ่าน
ย่อ / ขยาย (E2E)
BA
ซ่อนแถวข้างใน Milestone / Epic ได้จริง
กดย่อ Epic แล้ว task ข้างในหายจากจอ32 → 25 แถว (7 task)
ผ่าน
กดขยายแล้วกลับมาครบ
ผ่าน
ผ่าน
Timeline (Gantt chart)
30 ต.ค. 2569, ผ่าน 14 จาก 14 ข้อ
ตรวจหน้า Timeline: คำนวณช่วงเวลาและตำแหน่งแถบถูกต้องทุกระดับเวลา, ย่อ/ขยาย, เลื่อนไปที่ตอนนี้ และ Live update ไม่ทำให้ตำแหน่ง scroll หาย ผ่านทุกข้อ
3 หัวข้อที่ตรวจ
Timeline layout
BA
ความยาวของแถบตรงกับเวลาที่ใช้จริง
Task 1 วันกว้าง 1 วันพอดีในมุมมองวัน44 px
ผ่าน
Task ที่ In Progress / Wait for review ยืดถึงตอนนี้
ผ่าน
แผน (start → due) แสดงเป็นกรอบเส้นประ
ผ่าน
Task ที่ไม่มีวันขึ้นว่า "ยังไม่ได้กำหนดวัน" และนับเป็น Unscheduled
ผ่าน
แถบ Epic / Milestone ครอบทุก task ข้างใน และแสดง % ที่เสร็จ
ผ่าน
Milestone target แสดงเป็น ◆
ผ่าน
Scales (Hour / Day / Week)
BA และ Technical
สลับระดับเวลาได้และหน้าไม่หนักเกินไป
ทั้ง 3 scale เปิดได้ (HTTP 200) และ scale ที่ไม่รู้จักกลับเป็น Day
ผ่าน
Week เริ่มวันจันทร์
ผ่าน
Hour view จำกัด 21 วันรอบตอนนี้เมื่อแผนยาว
ผ่าน
Minimum span: Day 21 วัน, Week 12 สัปดาห์, Hour 48 ชม. ไม่ให้ chart แคบเกินไป
ผ่าน
Interaction (E2E)
BA และ Technical
ใช้งานใน browser จริง
เปิดหน้าแล้วเส้น "ตอนนี้" อยู่ในจอ
ผ่าน
ย่อ Milestone แล้วซ่อนแถวลูกทั้งหมด และจำค่าหลัง reload
ผ่าน
Live update ไม่ทำให้ตำแหน่ง scroll แนวนอนหาย120 → 120 px ในมุมมองชั่วโมง
ผ่าน
Light / Dark / Mobile แสดงผลถูกต้อง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; timeline browser check
ผลจากเครื่องมือทดสอบ ผ่าน 30, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + 20s (E2E)
หมายเหตุ go test: 26 ผล (20 test + 6 subtest), E2E timeline 4 checks
ผ่าน
File viewer, Reviewed status และ Done สีเขียว
30 ต.ค. 2569, ผ่าน 21 จาก 21 ข้อ
ตรวจว่าไฟล์แนบเปิดเป็นหน้า HTML ในแท็บใหม่ได้ และปลอดภัย, สถานะ Reviewed ทำงานตามที่ตกลง และทุก flow เดิมยังผ่านหลังเปลี่ยน ผ่านทุกข้อ
5 หัวข้อที่ตรวจ
File viewer (refs)
BA
กดไฟล์แนบแล้วเปิดเป็นหน้าที่อ่านง่ายในแท็บใหม่
Refs ในหน้า Wait for review เปิด /files/... ในแท็บใหม่
ผ่าน
Role Matrix แสดงเป็น HTML: 10 ตาราง, 115 แถว, TOC 13 หัวข้อ
ผ่าน
Row filter: พิมพ์ "การเงิน" แล้วเหลือแถวที่เกี่ยวข้องพบ 2 แถว
ผ่าน
Anchor link ไปหัวข้อถูกจุด#3-approval-authority-matrix
ผ่าน
Mermaid diagram render ครบ13 จาก 13 diagram ใน 05-workflows.md
ผ่าน
Path ใน code span ของข้อความรีวิวกดเปิดไฟล์ได้
ผ่าน
โฟลเดอร์แสดงรายการไฟล์ และ /files/tracker redirect ไป /files/tracker/
ผ่าน
Security (file viewer)
Technical
ตัวเปิดไฟล์ต้องไม่เปิดอะไรนอก repo
Path traversal (../ และ %2e%2e) ได้ 404 หลัง clean path
ผ่าน
.git และไฟล์ซ่อนเปิดไม่ได้
ผ่าน
Symlink ที่ชี้ออกนอก repo เปิดไม่ได้ (EvalSymlinks + prefix check)
ผ่าน
Text ที่ไม่ใช่ path ใน repo ไม่ถูกทำเป็นลิงก์
ผ่าน
Markdown renderer
Technical
เอกสารใน docs/ แสดงครบเหมือนบน GitLab
Pipe table รวม escaped pipe และ code ในช่อง
ผ่าน
Heading ID แบบ GitHub รองรับภาษาไทย
ผ่าน
ยังตัด <script>, javascript: และ HTML tag ออก
ผ่าน
Task status: Reviewed
BA
Done = Agent ทำเสร็จและทดสอบผ่าน, Reviewed = ผู้รีวิว Approve แล้ว
กด Approve แล้ว task เป็น Reviewed
ผ่าน
Progress % นับทั้ง Done และ Reviewed
ผ่าน
Done สีเขียว, Reviewed สีน้ำเงินพร้อม ✓ ทั้ง Light และ Dark
ผ่าน
Task ที่ Approve ก่อนหน้านี้ 4 งานย้ายเป็น ReviewedT-302, T-401, T-403, T-404
ผ่าน
Regression (E2E)
BA และ Technical
flow เดิมยังทำงานหลังเปลี่ยน
Live update: browser เห็น task count เปลี่ยนเองโดยไม่ reload
ผ่าน
Theme: Light / Dark / System ผ่าน 5 กรณี
ผ่าน
Review form: Reject + Checklist + Save ผ่าน 7 checks บนข้อมูลสำเนา
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/{live,theme,review}-check.mjs ; viewer check
ผลจากเครื่องมือทดสอบ ผ่าน 43, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + ~40s (E2E)
หมายเหตุ go test: 25 ผล (19 test + 6 subtest). E2E: live 1, theme 5, review form 7, viewer 5 checks
ผ่าน
Review form: Approve / Reject / Hold
30 ต.ค. 2569, ผ่าน 23 จาก 23 ข้อ
ตรวจ Review form ที่ให้กรอกผลรีวิวแล้วกด Save ได้จากหน้าเว็บ: บันทึกลง milestones.json ถูกต้อง, กัน CSRF และไม่ทับข้อความที่กำลังพิมพ์ตอนมี Live update ผ่านทุกข้อ
5 หัวข้อที่ตรวจ
Review workflow
BA
กด Approve / Reject / Hold แล้วสถานะงานเปลี่ยนตามที่ตกลงกัน
Approve: review เป็น Done และ task เป็น Done พร้อมวันที่ Finished
ผ่าน
Reject: review เป็น Rejected และ task กลับไปเป็น In Progress
ผ่าน
Hold: review เป็น Hold และ task ยังอยู่ใน Wait for review
ผ่าน
Checklist ที่ติ๊กถูกบันทึกไว้
ผ่าน
ทุกครั้งที่ Save จะต่อท้ายใน Review history ไม่ทับของเดิม
ผ่าน
หลัง Save กลับไปที่ tab ตามผล พร้อม notice ว่าบันทึกแล้ว
ผ่าน
Form validation
BA
ผู้รีวิวรู้ทันทีว่ากรอกอะไรไม่ครบ และไม่ต้องพิมพ์ใหม่
Reject / Hold โดยไม่เขียนรายละเอียด ระบบไม่ยอมบันทึก
ผ่าน
ฟอร์มแสดงซ้ำพร้อมข้อความและชื่อที่กรอกไว้
ผ่าน
Task ที่ยังไม่ได้ส่งรีวิว บันทึกผลไม่ได้
ผ่าน
Data integrity (milestones.json)
Technical
Save แล้วเปลี่ยนเฉพาะ field ที่เกี่ยวข้อง diff ใน git อ่านง่าย
Ordered JSON round-trip: อ่านแล้วเขียนกลับได้ไฟล์เหมือนเดิมทุก byteทดสอบกับไฟล์ข้อมูลจริงทั้ง 4 ไฟล์
ผ่าน
Field อื่นและลำดับ key ไม่เปลี่ยน ภาษาไทยและ <b> ไม่ถูก escape
ผ่าน
Atomic write: เขียนไฟล์ชั่วคราวแล้ว rename ไม่มีไฟล์ครึ่ง ๆ
ผ่าน
Security
Technical
เปิดผ่าน Tailscale แล้ว ต้องกันการส่งฟอร์มจากเว็บอื่น
CSRF: POST จาก Origin อื่นได้ 403
ผ่าน
POST ที่ไม่มี Origin และ Referer ได้ 403
ผ่าน
Request ที่ถูกปฏิเสธไม่แก้ไฟล์ข้อมูล
ผ่าน
Task ที่ไม่มีจริงได้ 404
ผ่าน
Form size limit 64 KB และ Decision ไม่เกิน 10,000 ตัวอักษร
ผ่าน
Browser (E2E)
BA และ Technical
ทดสอบใน headless Chrome กับข้อมูลชุดสำเนา ไม่แตะข้อมูลจริง
Live update ไม่ทับข้อความที่กำลังพิมพ์ในฟอร์ม
ผ่าน
เลือก Reject, ติ๊ก Checklist, กรอกชื่อ แล้ว Save ได้
ผ่าน
Redirect ไป tab Rejected พร้อม notice
ผ่าน
Decision แสดงผลเป็น Markdown
ผ่าน
ไฟล์ข้อมูลบันทึกผลและชื่อผู้รีวิว
ผ่าน
Browser จำชื่อผู้รีวิวไว้ใช้ครั้งต่อไป
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/review-check.mjs <chrome> http://localhost:8098 <copy>/milestones.json T-201
ผลจากเครื่องมือทดสอบ ผ่าน 29, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + 12s (E2E)
หมายเหตุ go test: 22 ผล (16 test + 6 subtest), E2E review form: 7 checks บน server แยกที่ port 8098 กับข้อมูลสำเนา ข้อมูลจริงไม่ถูกแก้
ผ่าน
Tracker รอบ 2: หน้าย่อย, Checkpoint, Test แบบจัดกลุ่ม, Review tabs
30 ต.ค. 2569, ผ่าน 33 จาก 33 ข้อ
ตรวจว่าข้อมูลงานถูกต้อง หน้าเว็บทุกหน้าเปิดได้ การรีวิวแยกตามสถานะ และการอัปเดตสดยังทำงาน หลังเพิ่มหน้าย่อย Milestone / Epic / Task, ประวัติ Checkpoint จาก Agent, หน้าผลทดสอบแบบจัดกลุ่ม และ tab การรีวิว ผ่านทุกข้อ
9 หัวข้อที่ตรวจ
Data validation
BA
ถ้ามีคนแก้ไฟล์ข้อมูลผิด ระบบต้องไม่แสดงข้อมูลเพี้ยน และบอกได้ว่าผิดตรงไหน
JSON เสีย: หน้าเว็บยังแสดงข้อมูลชุดก่อนหน้า พร้อม error message
ผ่าน
ไม่รับ status ที่สะกดผิดใช้ได้เฉพาะ todo, in_progress, review, done
ผ่าน
ไม่รับ ID ซ้ำ (task / epic / milestone)
ผ่าน
ไม่รับ milestone / epic / task ที่ไม่มี ID
ผ่าน
ไม่รับ review state ที่ไม่รู้จักใช้ได้เฉพาะ todo, rejected, hold, done
ผ่าน
tests.json / problems.json / checkpoints.json เป็น optional
ผ่าน
Progress calculation
BA
ตัวเลขบนหน้าภาพรวมต้องตรงกับงานจริง
Task count ตาม status ถูกต้องทุกระดับ (project / milestone / epic)
ผ่าน
Current Task: แยก steps done / remaining และ % ถูกต้อง
ผ่าน
Epic code สร้างอัตโนมัติเช่น E0.1, E1.2
ผ่าน
Review queue เรียงตาม requested date (เก่าสุดก่อน)
ผ่าน
Date format เป็นปี พ.ศ.30 ต.ค. 2569
ผ่าน
Pages & Routing
BA และ Technical
ทุกหน้าเปิดได้ และไปถึงรายละเอียดของงานได้ทุกระดับ
ทุก page ได้ HTTP 200 จากข้อมูลจริงทดสอบกับ server ที่รันอยู่ด้วย 11 หน้า ได้ 200 ทุกหน้า
ผ่าน
Milestone / Epic / Task page มี breadcrumb
ผ่าน
Multi-milestone: sidebar แสดงทุก milestone, epic code เป็น E1.x
ผ่าน
URL ที่ไม่มีจริงได้ 404milestone / epic / task ที่ไม่มี และ epic ที่อยู่ผิด milestone
ผ่าน
Review tabs & Checklist
BA
ผู้รีวิวเห็นงานแยกตามผลการรีวิว และรู้ว่าต้องทำอะไรเป็นขั้นตอน
Tab Todo / Rejected / Hold / Done แยกถูกต้องค่าที่ไม่รู้จักกลับไปที่ Todo
ผ่าน
Overview นับเฉพาะ Todo เป็น Review
ผ่าน
Decision render เป็น Markdown
ผ่าน
Test results view (BA / Technical)
BA และ Technical
แต่ละฝ่ายเลือกดูเฉพาะหัวข้อที่เกี่ยวกับงานของตัวเองได้
Filter BA / Technical แสดง group และ count ถูกต้อง
ผ่าน
มี case fail แล้ว run เป็น "ไม่ผ่าน"
ผ่าน
Checkpoint log
BA
บันทึกสรุปจาก Agent เรียงถูกและไม่มีรายการเสีย
เรียงล่าสุดก่อน รองรับทั้ง timestamp และ date
ผ่าน
ไม่รับ checkpoint ที่ไม่มี ID, ID ซ้ำ หรือ timestamp ผิด
ผ่าน
Markdown sanitize
Technical
ข้อความจากไฟล์ข้อมูลต้องแสดงสวยงาม แต่ฝังสคริปต์หรือ HTML ไม่ได้
Render bold / italic / code / link / list ถูกต้อง
ผ่าน
Sanitize: ตัด <script>, javascript: link และ HTML tag
ผ่าน
ข้อความใน code span ไม่ถูก format ซ้ำ
ผ่าน
Live update (SSE)
Technical
หน้าที่เปิดค้างไว้ต้องเปลี่ยนเองเมื่อข้อมูลเปลี่ยน
File watcher: แก้ไฟล์แล้ว reload และ broadcast
ผ่าน
SSE /events ส่ง hello แล้ว update
ผ่าน
E2E: browser เห็น task count เปลี่ยนเองโดยไม่ reload27 → 28 ใน headless Chrome แล้วคืนไฟล์ข้อมูลเหมือนเดิม
ผ่าน
Theme (Light / Dark / System)
BA และ Technical
เลือกธีมได้และจำค่าที่เลือก
ระบบตั้งเป็นโหมดมืด + เลือก "ตามระบบ" ได้ธีมมืด
ผ่าน
ระบบตั้งเป็นโหมดสว่าง + เลือก "ตามระบบ" ได้ธีมสว่าง
ผ่าน
กด "มืด" แล้วเปลี่ยนเป็นธีมมืดทันที
ผ่าน
reload แล้วยังเป็นธีมมืด
ผ่าน
กลับไป "ตามระบบ" แล้วลบค่าที่จำไว้
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/live-check.mjs ; node e2e/theme-check.mjs
ผลจากเครื่องมือทดสอบ ผ่าน 25, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.5s (go test) + 15s (e2e)
หมายเหตุ go test: 19 ผล (13 test + 6 subtest), e2e อัปเดตสด 1 ชุด, e2e ธีม 5 กรณี และตรวจ 11 หน้าบน server ที่รันอยู่
ตรวจหลังเปลี่ยนโครงสร้างเป็น Milestone → Epic → Task
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=10 ./... และ e2e live-check, theme-check
ผลจากเครื่องมือทดสอบ ผ่าน 152, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 25s
หมายเหตุ go test 10 รอบ (15 test รวม subtest ต่อรอบ = 150) กับ e2e อัปเดตสดและธีมอย่างละ 1 ชุด ผ่านทั้งหมด ตรวจหน้าจอที่ 1440px และ 390px
ตรวจการสลับธีมสว่าง / มืด / ตามระบบ
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node e2e/theme-check.mjs <chrome> <out-dir>
ผลจากเครื่องมือทดสอบ ผ่าน 5, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 12s
หมายเหตุ ตรวจ 5 กรณี: OS มืดกับตามระบบ, OS สว่างกับตามระบบ, กดมืด, reload แล้วยังมืด, กลับเป็นตามระบบแล้วลบค่าที่จำไว้
รันซ้ำ 30 รอบเพื่อยืนยันว่าไม่มี test ที่ผ่านบ้างไม่ผ่านบ้าง
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=30 ./...
ผลจากเครื่องมือทดสอบ ผ่าน 360, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 13s
หมายเหตุ รันซ้ำเพื่อจับ test ที่ผ่านบ้างไม่ผ่านบ้าง หลังแก้ watcher ให้รอไฟล์เขียนเสร็จ (ดู P-007) ผ่านครบทุกรอบ
ตรวจว่าหน้าเว็บอัปเดตเองในเบราว์เซอร์จริง
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node e2e/live-check.mjs <chrome> data/milestones.json
ผลจากเครื่องมือทดสอบ ผ่าน 1, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 6s
หมายเหตุ เปิดหน้าภาพรวมใน headless Chrome แล้วเพิ่ม task ชั่วคราวในไฟล์ข้อมูล จำนวน Task บนหน้าที่เปิดอยู่เพิ่มจาก 22 เป็น 23 โดยไม่ reload จากนั้นคืนไฟล์ข้อมูลเป็นเหมือนเดิม
ผ่าน
tracker: go test
30 ต.ค. 2569
ชุดทดสอบแรกของ tracker
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test ./...
ผลจากเครื่องมือทดสอบ ผ่าน 12, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s
หมายเหตุ 9 test (12 รวม subtest): โหลดและตรวจข้อมูล, เก็บข้อมูลชุดเดิมเมื่อ JSON เสีย, นับสถานะ, แยกขั้นตอน Current Task, อ่าน git log, วันที่ พ.ศ., render ทุกหน้า, watcher และ SSE