tracker/data/checkpoints.json
[
{
"id": "C-001",
"at": "2026-10-29T12:20:31+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "สร้างฐานความรู้โครงการจาก Proposal",
"summary": "ศึกษา Business Proposal ทั้งฉบับ รวมภาพ workflow และภาพตัวอย่างหน้าจอ แล้วเขียนเป็นฐานความรู้ให้ Agent ใช้ ต่อด้วยถอดภาพโครงสร้าง module ของ BA และตั้ง git repo",
"changes": [
"สร้าง docs/agent/ 01–11: ภาพรวม ศัพท์ module บทบาท workflow UX/UI architecture NFR แผนงาน KPI และคำถามค้าง",
"ถอดภาพ module ของ BA เป็น UNI-01…08 และโรงเรียนกีฬา 15 module พร้อมตารางเทียบกับระบบใน Proposal",
"เพิ่ม AGENTS.md และ CLAUDE.md ชี้ไปที่ docs/agent",
"ตั้ง git repo และ commit แรก"
],
"tasks": [
"T-101",
"T-102",
"T-103"
],
"refs": [
"docs/agent/README.md",
"docs/agent/03-modules.md",
"AGENTS.md"
],
"commit": "ec2a33b"
},
{
"id": "C-002",
"at": "2026-10-30T12:13:24+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "ระบุว่า Proposal §5 และ §7 ไม่เกี่ยวกับ TNSU",
"summary": "พบว่า §5 และ §7 ของ Proposal เป็นเนื้อหาของโครงการอื่น จึงระบุในเอกสารทุกจุดว่าห้ามใช้เป็น requirement ระหว่างรอทีมยืนยัน",
"changes": [
"README, AGENTS.md และไฟล์ 07, 08, 09, 11 ระบุว่า §5.1–5.3 และ §7 เป็นเนื้อหาชั่วคราว",
"ระบุเลขหน้าโดยประมาณของส่วนที่ปนมา"
],
"tasks": [
"T-104"
],
"refs": [
"docs/agent/11-open-questions-and-known-issues.md"
],
"commit": "51550d2"
},
{
"id": "C-003",
"at": "2026-10-30T12:23:03+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "สร้าง catalog use case และเอาเนื้อหาโครงการอื่นออก",
"summary": "ถอดข้อมูล 162 use case จาก Use case Explorer ที่ทีม export มา เขียนสคริปต์สร้าง catalog ทีละ module และเอารายละเอียดของโครงการอื่นออกจากฐานความรู้ตามที่ทีมยืนยัน",
"changes": [
"เพิ่ม tools/gen_use_cases.py และ docs/agent/use-cases/ (35 module, 162 use case)",
"เขียน 12-use-cases.md: ตารางเทียบกับ BA และ Proposal แนวคิดหลัก ระบบภายนอก และ 18 จุดที่ต้องตรวจสอบ",
"เปลี่ยนรหัสโรงเรียนกีฬาของ BA จาก SCH เป็น SS เพราะ use case ใช้ SCH เป็นทุนและ กยศ.",
"เขียน 07 และ 08 ใหม่จากเนื้อหา TNSU เท่านั้น"
],
"tasks": [
"T-104",
"T-105"
],
"refs": [
"docs/agent/12-use-cases.md",
"docs/agent/tools/gen_use_cases.py"
],
"commit": "babd21d"
},
{
"id": "C-004",
"at": "2026-10-30T12:49:14+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Role Matrix, Security Matrix และ ADR tech stack",
"summary": "ทำ Role Matrix และ Security Matrix ฉบับร่างจาก use case และบันทึกการตัดสินใจของ project owner (tech stack, ไม่มีระบบเดิม, ค่ากฎตั้งโดยมหาวิทยาลัย)",
"changes": [
"13-role-matrix.md: 59 รหัสบทบาท โมเดลขอบเขตสิทธิ์ และตารางอำนาจอนุมัติประมาณ 40 เรื่อง",
"14-security-matrix.md: ระดับข้อมูล L1–L4 สิทธิ์ตามโดเมนข้อมูล การยืนยันตัวตน SoD และ audit",
"docs/adr/0001-tech-stack.md พร้อมข้อเปรียบเทียบ SQL Server กับ PostgreSQL",
"ตัดเรื่องระบบ E-Education เดิมออกทุกไฟล์"
],
"tasks": [
"T-201",
"T-202",
"T-301",
"T-302"
],
"refs": [
"docs/agent/13-role-matrix.md",
"docs/agent/14-security-matrix.md",
"docs/adr/0001-tech-stack.md"
],
"commit": "5d2b2ec"
},
{
"id": "C-005",
"at": "2026-10-30T12:57:38+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "README ของ repo และ push ขึ้น GitLab",
"summary": "ตั้ง remote GitLab แล้ว push และเขียน README ภาษาไทยสำหรับคนในทีม",
"changes": [
"README.md: สถานะงาน tech stack โครงสร้าง repo และวิธีอัปเดตข้อมูล",
"push branch main ขึ้น GitLab"
],
"tasks": [
"T-103",
"T-106"
],
"refs": [
"README.md"
],
"commit": "abedeb3"
},
{
"id": "C-006",
"at": "2026-10-30T13:41:32+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "สร้างเว็บติดตามความคืบหน้างาน",
"summary": "สร้าง tracker เป็น Go server ที่ render ฝั่ง server และอัปเดตสดด้วย Server-Sent Events มี 6 เมนูตามที่ขอ พร้อมข้อมูลตั้งต้นจากงานจริงของทีม",
"changes": [
"หน้าภาพรวม: จำนวน Task / Review / Checkpoint, milestone แบบหลอด segment และ Current Task",
"go test 12 รายการ และ e2e ตรวจการอัปเดตสดในเบราว์เซอร์จริง",
"กติกาใน AGENTS.md ให้ Agent อัปเดตข้อมูล tracker"
],
"tasks": [
"T-401"
],
"refs": [
"tracker/"
],
"commit": "8878325"
},
{
"id": "C-007",
"at": "2026-10-30T13:54:20+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Dark mode และแก้ watcher อ่านไฟล์ระหว่างบันทึก",
"summary": "เพิ่ม dark mode แบบตามระบบ/สว่าง/มืด และแก้ปัญหา watcher อ่านไฟล์ที่ยังเขียนไม่เสร็จ ซึ่งทำให้ test ผ่านบ้างไม่ผ่านบ้าง",
"changes": [
"เปลี่ยนสีทั้งหมดเป็น token และเพิ่มปุ่มเลือกธีม",
"watcher รอให้ไฟล์คงที่ก่อนโหลดใหม่ (P-007)",
"go test ซ้ำ 30 รอบผ่านครบ"
],
"tasks": [
"T-401"
],
"refs": [
"tracker/static/style.css",
"tracker/live.go"
],
"commit": "d2349fd"
},
{
"id": "C-008",
"at": "2026-10-30T14:01:41+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "จัดงานเป็น Milestone → Epic → Task",
"summary": "ย้ายงานเดิมทั้งหมดไปเป็น Milestone 0 (เตรียมความพร้อม) แตกเป็น 7 epic และเพิ่ม epic สำหรับจัดหมวดหมู่ milestone ของงานจริง",
"changes": [
"โครงสร้างข้อมูลใหม่ milestone → epic → task และรหัส epic อัตโนมัติ (E0.1…)",
"หน้าภาพรวมแสดงหลอดแบ่งกลุ่มตาม epic และแถวของแต่ละ epic"
],
"tasks": [
"T-401",
"T-701"
],
"refs": [
"tracker/data/milestones.json"
],
"commit": "8dcc598"
},
{
"id": "C-009",
"at": "2026-10-30T15:15:07+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "ถอดไฟล์ draw.io ต้นฉบับของ BA",
"summary": "อ่านไฟล์ TNSU_EDU 191069.drawio ทั้ง 7 หน้า ยืนยันว่า module ตรงกับที่ถอดจากภาพ และได้ข้อมูลใหม่: โครงสร้างหน่วยงาน หลักสูตรจริง 9 หลักสูตร และ flow ของ BA 2 เรื่อง",
"changes": [
"เพิ่ม tools/gen_ba_drawio.py และ docs/agent/ba-drawio.md",
"03-modules: โครงสร้างหน่วยงานและรายการหลักสูตร",
"05-workflows: flow สร้างหลักสูตรและเปิดสอน (รวมวิชาเรียนรวม)",
"ปิดปัญหา P-003 ภาพความละเอียดต่ำ"
],
"tasks": [
"T-107"
],
"refs": [
"docs/agent/ba-drawio.md",
"docs/agent/03-modules.md",
"docs/agent/05-workflows.md"
],
"commit": "cccee73"
},
{
"id": "C-010",
"at": "2026-10-30T15:19:54+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Dark mode แบบ GitHub",
"summary": "เปลี่ยนชุดสีโหมดมืดเป็นแบบ GitHub dark และแก้ตัวอักษรบนพื้นสีทองที่อ่านยาก",
"changes": [
"ชุดสีโหมดมืดใหม่",
"token ตัวอักษรบนพื้นสีทองและเมนูด้านข้าง"
],
"tasks": [
"T-401"
],
"refs": [
"tracker/static/style.css"
],
"commit": "1b2d42e"
},
{
"id": "C-011",
"at": "2026-10-30T15:22:46+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Dark mode เข้มขึ้นและจัดเนื้อหากึ่งกลาง",
"summary": "ทำโหมดมืดเข้มขึ้นอีกระดับ ไล่ระดับชั้นสีไม่ให้กลืนกัน ตรวจ contrast ตาม WCAG ทุกคู่สี และจัดเนื้อหาให้อยู่กึ่งกลางบนจอกว้าง",
"changes": [
"ชั้นสี page < เมนู < การ์ด < ส่วนที่ยกขึ้น",
"กรอบ Todo ปรับให้ผ่าน 3:1",
"จัดเนื้อหากึ่งกลาง"
],
"tasks": [
"T-401"
],
"refs": [
"tracker/static/style.css"
],
"commit": "ef793d7"
},
{
"id": "C-012",
"at": "2026-10-30T15:33:44+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "เปิด tracker ให้เข้าจาก Tailscale",
"summary": "ตั้ง tailscale serve แบบ TCP บน Windows ส่งต่อพอร์ต 8099 เข้า WSL ทดสอบทุกหน้าและการอัปเดตสดผ่าน IP Tailscale แล้วผ่าน",
"changes": [
"scripts/tailscale.sh on | off | status",
"เปลี่ยนพอร์ตเริ่มต้นเป็น 8099",
"บันทึกปัญหา P-008 (HTTP serve ได้ 404/500)"
],
"tasks": [
"T-402"
],
"refs": [
"tracker/scripts/tailscale.sh",
"tracker/README.md"
],
"commit": "a34ed5c"
},
{
"id": "C-013",
"at": "2026-10-30T15:52:25+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Tracker รอบ 2: หน้าย่อย, Checkpoint จาก Agent, Test แบบจัดกลุ่ม, Review tabs และ animation",
"summary": "ปรับ tracker ตามคำขอของ project owner 5 เรื่อง: แยกหน้าตามลำดับชั้นเพื่อรองรับ milestone ของงานจริง, เปลี่ยน Checkpoint จาก git log เป็นบันทึกสรุปที่ Agent เขียน, จัดผลทดสอบเป็นหัวข้อให้ BA และ Technical อ่านเข้าใจ, แยกการรีวิวตามสถานะพร้อม checklist และให้งานที่กำลังทำหรือรอรีวิวมี animation",
"changes": [
"หน้าย่อย /milestones/{milestone}, /milestones/{milestone}/{epic} และ /tasks/{task} พร้อม breadcrumb และรายชื่อ milestone ในเมนูด้านข้าง",
"Checkpoint อ่านจาก data/checkpoints.json แทน git log เอา git.go และ flag -repo ออก และเขียนสรุปย้อนหลัง 12 รายการ",
"ผลตรวจ Test: จัดกลุ่มตามหัวข้อ ป้าย BA / Technical ตัวกรองมุมมอง และย้ายรายละเอียดเทคนิคไปส่วนพับ",
"Wait for review: tab Todo / Rejected / Hold / Done, checklist เป็นขั้นตอน และข้อความแบบ markdown (render ฝั่ง server แบบปลอดภัย)",
"Animation: แสงวิ่งบน In Progress และลายเลื่อนบน Wait for review หยุดเมื่อระบบตั้งลดการเคลื่อนไหว",
"เขียน checklist ให้งานที่รอรีวิวทั้ง 4 งาน และบันทึกผลทดสอบรอบนี้แบบจัดกลุ่ม (33 ข้อ ผ่านทั้งหมด)",
"อัปเดต tracker/README.md, README.md และ AGENTS.md (กติกาเขียน checkpoint และผลทดสอบ)"
],
"tasks": [
"T-403",
"T-201",
"T-202",
"T-302",
"T-401"
],
"refs": [
"tracker/",
"tracker/README.md",
"AGENTS.md"
]
},
{
"id": "C-014",
"at": "2026-10-30T16:02:17+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Review form: กรอกผลรีวิวและ Save จากหน้าเว็บ",
"summary": "เพิ่มฟอร์มรีวิวตามคำขอของ project owner ให้ผู้รีวิวติ๊ก Checklist เลือก Approve / Reject / Hold เขียนผล แล้วกด Save ผลบันทึกลง milestones.json ให้ Agent อ่านได้ และปรับหน้าผลตรวจ Test ให้ใช้คำภาษาอังกฤษตามที่ทีมใช้",
"changes": [
"POST /reviews/{task}: validate, กัน CSRF (Origin/Referer), จำกัดขนาด 64 KB",
"แก้ไฟล์ JSON แบบคงลำดับ key และ field อื่น เขียนแบบ atomic และเก็บ Review history ทุกครั้ง",
"Approve → task Done, Reject → task In Progress, Hold → ค้างที่ Wait for review",
"Live update ไม่ทับฟอร์มที่กำลังกรอก, browser จำชื่อผู้รีวิว",
"ผลตรวจ Test ใช้คำภาษาอังกฤษ (Validation, Live update (SSE), Routing, Markdown sanitize ฯลฯ)",
"AGENTS.md: Agent ต้องอ่านผลรีวิว Rejected / Hold ก่อนเริ่มงานทุกครั้ง"
],
"tasks": [
"T-404"
],
"refs": [
"tracker/review_submit.go",
"tracker/ojson.go",
"tracker/README.md",
"AGENTS.md"
]
},
{
"id": "C-015",
"at": "2026-10-30T16:16:16+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "ไฟล์แนบเปิดเป็น HTML, สถานะ Reviewed และนำผลรีวิว T-302 (SQL Server) ไปใช้",
"summary": "ทำตามคำขอ 3 เรื่อง: ไฟล์แนบอย่าง Role Matrix และ Security Matrix กดเปิดเป็นหน้า HTML อ่านง่ายในแท็บใหม่, เพิ่มสถานะ Reviewed แยกจาก Done และให้ Done เป็นสีเขียว ระหว่างทำพบว่าผู้รีวิว (ทิว) Approve ไป 4 งานผ่าน Review form จึงอ่านผลแล้วนำไปใช้: บันทึกการเลือก SQL Server ลง ADR-0001",
"changes": [
"File viewer /files/<path>: markdown render พร้อมตาราง, TOC, row filter, heading anchor และ mermaid; ป้องกัน path traversal, .git และ symlink",
"Refs และ path ใน code span ในข้อความรีวิวเปิดในแท็บใหม่",
"สถานะ reviewed: Approve แล้วเป็น Reviewed, % นับ Done + Reviewed, ย้าย T-302, T-401, T-403, T-404 เป็น Reviewed",
"Done สีเขียว / Reviewed สีน้ำเงินพร้อม ✓",
"ADR-0001: ฐานข้อมูลเป็น SQL Server ตามผลรีวิว T-302 พร้อมผลกระทบ (RabbitMQ สำหรับ queue, Thai collation, JSON, temporal และ ledger tables)",
"อัปเดต README, AGENTS.md, 07, 11, docs/agent/README และ tracker/README"
],
"tasks": [
"T-405",
"T-305",
"T-302"
],
"refs": [
"tracker/files.go",
"tracker/md.go",
"docs/adr/0001-tech-stack.md",
"AGENTS.md"
]
},
{
"id": "C-016",
"at": "2026-10-30T16:24:53+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "เมนู Timeline (Gantt chart)",
"summary": "เพิ่มหน้า Timeline ตามคำขอ: Milestone › Epic › Task ฝั่งซ้าย แถบเวลาฝั่งขวาคล้าย Jira Timeline ปรับดูรายชั่วโมง วัน และสัปดาห์ได้ คำนวณตำแหน่งทั้งหมดฝั่ง server และอัปเดตสดเหมือนหน้าอื่น",
"changes": [
"timeline.go: ช่วงเวลาทำจริงและแผน, แถบ Epic / Milestone, target marker, scale และหัวตาราง",
"หน้า /timeline พร้อมเส้นตอนนี้, วันหยุดแรเงา, ย่อ/ขยาย และปุ่มไปที่ตอนนี้",
"Task รองรับ start / due (แผน) และวันเวลาแบบ RFC 3339",
"Live update คงตำแหน่ง scroll ของ chart",
"AGENTS.md: บันทึก started / finished พร้อมเวลา"
],
"tasks": [
"T-406"
],
"refs": [
"tracker/timeline.go",
"tracker/templates/timeline.html",
"tracker/static/timeline.js"
]
},
{
"id": "C-017",
"at": "2026-10-30T16:35:00+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "Timeline เต็มจอ ปรับความกว้างช่องรายละเอียดได้",
"summary": "ตามคำขอ: หน้า Timeline ต้องใช้พื้นที่กว้าง จึงให้ใช้ความกว้างถึงขอบ browser และ chart ยืดเต็มพื้นที่ เพิ่มเส้นแบ่งที่ลากซ้ายขวาเพื่ออ่านชื่องานได้ยาวขึ้น และแก้สีพื้นหลังช่องรายละเอียดที่ซ้อนกับแถบตอนชี้เมาส์ใน theme มืด",
"changes": [
"หน้า Timeline ไม่จำกัด max-width (หน้าอื่นคงเดิม)",
"ตำแหน่งแถบ หัวตาราง และเส้นตอนนี้ คำนวณเป็น % ของ chart; ความกว้างจาก scale กลายเป็นความกว้างขั้นต่ำก่อนเลื่อนแนวนอน",
"เส้นแบ่งลากได้ที่หัวตารางและขอบทุกแถว, คีย์บอร์ด (ลูกศร, Shift+ลูกศร, Home) และจำค่าใน browser",
"Hover สีบนช่องรายละเอียดวางบนพื้นทึบ ใน theme มืดจึงไม่เห็นแถบ chart ทะลุ",
"E2E ใหม่ e2e/timeline-check.mjs"
],
"tasks": [
"T-407"
],
"refs": [
"tracker/timeline.go",
"tracker/templates/timeline.html",
"tracker/static/timeline.js",
"tracker/static/style.css",
"tracker/e2e/timeline-check.mjs"
]
},
{
"id": "C-018",
"at": "2026-10-30T16:48:00+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "แก้ย่อ/ขยายใน Timeline",
"summary": "ผู้ใช้แจ้งว่าย่อ/ขยายใช้งานไม่ได้ ตรวจใน browser พบว่า JS ซ่อนแถวถูกต้องแล้ว แต่ CSS ของแถวทำให้แถวที่ซ่อนยังแสดงอยู่ แก้ CSS และเพิ่มการตรวจย่อ/ขยายใน E2E",
"changes": [
"style.css: .tl-row[hidden] { display: none }",
"e2e/timeline-check.mjs: ย่อ Epic แล้ว task ข้างในหาย ขยายแล้วกลับมา"
],
"tasks": [
"T-407"
],
"refs": [
"tracker/static/style.css",
"tracker/e2e/timeline-check.mjs"
]
},
{
"id": "C-019",
"at": "2026-10-30T17:05:00+07:00",
"agent": "Claude Code (Opus 5.5)",
"title": "แก้ tracker ช้าเมื่อเปิดหลาย tab และอ่านผลรีวิว",
"summary": "ผู้ใช้ถามว่าเว็บช้าเพราะอะไร วัดแล้ว server ตอบใน 1–25 ms และไม่ใช้ CPU ปัญหาอยู่ที่ browser: ทุก tab ถือการเชื่อมต่อ live update ค้างไว้ ซึ่ง browser ให้ได้ประมาณ 6 ช่องต่อเว็บ เมื่อเปิดหลาย tab หน้าใหม่ต้องรอคิว จึงให้ tab ที่ไม่ได้ดูปิดการเชื่อมต่อ และ cache CSS/JS ไว้ใน browser อ่านผลรีวิวแล้ว: ทิว approve T-302, T-401, T-403–T-407 ทั้งหมดอยู่ในสถานะ Reviewed ไม่มีงานที่ Reject หรือ Hold และ T-201, T-202 ยังรอรีวิว",
"changes": [
"live.js: ปิด EventSource เมื่อ tab ถูกซ่อน และต่อใหม่ + ดึงข้อมูลล่าสุดเมื่อกลับมา",
"main.go: staticVersion (hash ของไฟล์ static), template func asset, Cache-Control แบบ immutable เมื่อ ?v ตรง",
"Test ใหม่ TestStaticCaching",
"บันทึกผลรีวิวของทิวลงใน repo"
],
"tasks": [
"T-408",
"T-302",
"T-401",
"T-403",
"T-404",
"T-405",
"T-406",
"T-407"
],
"refs": [
"tracker/static/live.js",
"tracker/main.go",
"tracker/templates/layout.html"
]
},
{
"id": "C-020",
"at": "2026-10-30T20:00:07+07:00",
"agent": "Codex",
"title": "Use cases แบบตาราง พร้อม diagram editor บันทึกส่วนกลาง",
"summary": "เพิ่มเมนู Use cases ตามคำขอ ใช้แหล่งข้อมูลเดิมและแยก diagram ฉบับร่างออกจากข้อกำหนด ผู้ใช้เลือกบันทึกส่วนกลางและขอ Table view ต่อมาขอจัดกึ่งกลางพร้อมซูมให้เห็นทั้งหมดเริ่มต้น จึงเพิ่ม Fit และการเลื่อนมุมมอง อ่าน review แล้วไม่มี Reject / Hold ที่ต้องแก้ก่อน เรียกใช้งานเวอร์ชันใหม่ที่ 8099 ตามที่ผู้ใช้อนุญาต",
"changes": [
"ตารางค้นหา / กรอง 162 Use cases ใน 35 modules และหน้า actors / จุดเริ่มต้น / ผลลัพธ์ / ขั้นตอน / ความสัมพันธ์",
"SVG editor: shape 4 แบบ, title/description/type, ลากตำแหน่งและเส้นเชื่อม, ข้อความบนเส้นและหัวลูกศรต้น–ปลาย, ลบ, undo/redo, zoom, Fit ทั้งหมดเริ่มต้น, pan และ export JSON",
"บันทึก JSON ส่วนกลางแบบ atomic พร้อม validation และ revision conflict; live refresh และการบันทึกล้มเหลวไม่ล้างงานใน editor",
"ทดสอบ Go พร้อม race detector และ vet; Browser ผ่าน 23 ข้อ รวม SSE จริง สองผู้ใช้ และ Fit/กึ่งกลาง",
"อัปเดตคู่มือและแหล่งความรู้ งาน T-409 รอผู้ใช้ตรวจ ไม่มีการสร้าง worktree หรือ workspace ใหม่"
],
"tasks": [
"T-409"
],
"refs": [
"tracker/usecases.go",
"tracker/diagram.go",
"tracker/static/usecases.js",
"tracker/templates/usecases.html",
"tracker/e2e/usecases-check.mjs",
"tracker/README.md",
"docs/agent/12-use-cases.md"
]
},
{
"id": "C-021",
"at": "2026-10-30T20:04:29+07:00",
"agent": "Codex",
"title": "Diagram ขยับตามกริดและใช้เส้นเชื่อมหักมุม",
"summary": "ปรับตามคำขอระหว่างทดลองใช้: จัดตำแหน่ง shape ให้ตรงกริด และเปลี่ยนเส้นเชื่อมจากแนวอิสระเป็นแนวนอน/แนวตั้งหักมุม 90° โดยยังคง Fit ทั้งหมดและจัดกึ่งกลางเป็นค่าเริ่มต้น",
"changes": [
"การลาก เพิ่ม shape และขยับด้วยแป้นพิมพ์ snap พิกัดทีละ 20 หน่วย",
"กริดวาดใน SVG จึงซูมและเลื่อนไปพร้อมกับ diagram",
"เส้นเชื่อมใช้ orthogonal routing เลือกขอบ shape และปรับเส้นตามตำแหน่ง รวมเส้นย้อนกลับและ self-loop; เส้นขณะกำลังลากก็หักมุม",
"Browser ผ่าน 24 ข้อ รวมยืนยันว่าทุกช่วงเส้นเป็นแนวนอน/แนวตั้งและพิกัดที่บันทึกตรงกริด",
"รีสตาร์ตเวอร์ชันล่าสุดบนพอร์ตหลัก 8099 ตามสิทธิ์ที่ผู้ใช้ให้ไว้"
],
"tasks": [
"T-409"
],
"refs": [
"tracker/static/usecases.js",
"tracker/static/usecases.css",
"tracker/templates/usecases.html",
"tracker/e2e/usecases-check.mjs"
]
},
{
"id": "C-022",
"at": "2026-10-30T20:14:46+07:00",
"agent": "Codex",
"title": "จัดกลุ่ม Use cases อ่าน description ครบ ซูมด้วยเมาส์ และย้าย Current Task",
"summary": "ทำคำขอต่อเนื่องครบ: Ctrl + scroll ซูมตามจุดเมาส์, description แสดงครบหลายบรรทัดพร้อมขยาย shape, แท็บกลุ่มงานพร้อมตารางไม่จำกัดความสูง และ Current Task อยู่ก่อน Milestone ในหน้าภาพรวม รีสตาร์ตใช้งานจริงที่ 8099 แล้ว",
"changes": [
"Ctrl + scroll ขึ้น/ลงซูม 1–300% โดยรักษาจุดใต้เมาส์; dropdown แสดงสเกลจริงและไม่ทำให้ diagram มีสถานะยังไม่บันทึก",
"ตัดบรรทัด Title/Description ตามคำและกลุ่มตัวอักษรไทย ไม่ตัดทิ้ง ขยาย shape ทั้งสี่แบบ และเว้นช่องร่างใหม่ตามความสูงจริง",
"แท็บ Frontend / Backoffice / Integration ใช้ร่วมกับ filters ได้ แสดง counts และเหตุผลใน tooltip กลุ่มซ้อนกันได้ เป็นการอนุมานเบื้องต้นไม่ใช่ข้อสรุปหน้าจอ/API",
"ตารางแสดงยาวตามเนื้อหาโดยไม่ล็อคความสูง; ย้าย Current Task ไปก่อน Milestone ทั้งหมด",
"Go race tests และ vet ผ่าน Browser regression ผ่าน 41 ข้อ และตรวจพอร์ตหลักแบบอ่านอย่างเดียวผ่าน รวมลำดับ Current Task"
],
"tasks": [
"T-409",
"T-410"
],
"refs": [
"tracker/static/usecases.js",
"tracker/templates/usecases.html",
"tracker/usecase_channels.go",
"tracker/usecases.go",
"tracker/templates/overview.html",
"tracker/e2e/usecases-check.mjs",
"tracker/README.md"
]
},
{
"id": "C-023",
"at": "2026-10-30T20:44:48+07:00",
"agent": "Codex",
"title": "Workflow ซ้ายไปขวา Revision history Approve และตารางหุบตาม Module",
"summary": "ทำคำขอชุดต่อเนื่องครบ: layout แนวนอน, ประวัติการบันทึกพร้อม rollback, อนุมัติราย Use case ให้ Agent ใช้พัฒนา, toolbar อังกฤษ และตารางจัดกลุ่ม Module ชื่อเต็ม งานเหล่านี้รอผู้ใช้ตรวจ ไม่ได้ approve Use case จริงแทนผู้ใช้",
"changes": [
"ร่างเริ่มต้นแนวนอนตามขนาดข้อความและปุ่ม Arrange horizontally ที่ไม่ล้าง shape/เส้นพร้อม Undo",
"Snapshot ทุก Save ในไฟล์เดียวกับ current graph เขียน atomic; Restore สร้าง revision ใหม่และรักษาประวัติ รองรับไฟล์ที่บันทึกก่อนเปิดใช้ history",
"Approve บันทึก reviewer/time/note ผูก source hash และ diagram revision/hash พร้อม audit trail; source/save/restore ทำให้ต้องยืนยันใหม่",
"เพิ่ม API history/restore/approval พร้อม CSRF validation และ revision conflict รวมกติกาให้ Agent ตรวจ approval ล่าสุดก่อนพัฒนา TNSU product",
"Toolbar แยก Shapes/Edit/View + More ด้วยปุ่มอังกฤษ; ตารางหุบ/ขยายตาม Module แสดงชื่อเต็มและจำสถานะผ่าน live refresh",
"Go race suite และ vet ผ่าน Browser ผ่าน 59 ข้อด้วยข้อมูล /tmp รวมการบันทึก-approve-เปลี่ยน-rollback และกรณี approve ร่างครั้งแรก"
],
"tasks": [
"T-411",
"T-412",
"T-413",
"T-414"
],
"refs": [
"tracker/diagram_history.go",
"tracker/usecase_approval.go",
"tracker/static/usecases.js",
"tracker/static/usecase-groups.js",
"tracker/templates/usecases.html",
"tracker/e2e/usecases-check.mjs",
"tracker/README.md",
"AGENTS.md"
]
},
{
"id": "C-024",
"at": "2026-10-30T21:08:18+07:00",
"agent": "Codex",
"title": "เก็บ UI Approval/History และ Export PNG แบบพื้นหลังขาว/โปร่งใส",
"summary": "จัด review panels ให้เป็นสัดส่วน และเพิ่ม Export PNG ที่เก็บภาพครบทั้ง diagram พร้อมเลือกพื้นหลัง อ่านผลรีวิวล่าสุดพบ T-408–T-414 ได้รับอนุมัติแล้วและคงสถานะ Reviewed ตามฟอร์มเดิม ขณะนี้รับงานถัดไปเพื่อเติม task brief ที่ยังมีแต่หัวข้อ",
"changes": [
"การ์ด Approval แสดงสถานะ ผู้ตรวจ เวลา หมายเหตุ และ audit timeline; เมื่ออนุมัติแล้วซ่อนฟอร์มว่าง",
"Revision history แยกวันที่/เวลา รายละเอียด Current และ actions พร้อม empty/error/loading; Refresh ล้มเหลวไม่ล้างรายการเดิม",
"More → Export PNG เปิด dialog เลือก White / Transparent; ส่งออกเต็ม diagram ไม่รวมกริด/จุดลาก ปรับขนาดตามขีดจำกัด canvas",
"Browser ผ่าน 70 ข้อ รวมตรวจ alpha channel และขนาด PNG จริง รวม screenshot ธีมสว่าง/มืด/มือถือ"
],
"tasks": [
"T-415",
"T-416"
],
"refs": [
"tracker/static/usecase-review.css",
"tracker/static/usecase-export.js",
"tracker/static/usecases.js",
"tracker/templates/usecases.html",
"tracker/e2e/usecases-check.mjs"
]
},
{
"id": "C-025",
"at": "2026-10-30T21:19:31+07:00",
"agent": "Codex",
"title": "เติม task briefs และคำถามเพื่อเริ่มงานได้จริง",
"summary": "ผู้ใช้พบว่า T-303 และหลายงานมีเพียงหัวข้อ จึง audit backlog เทียบฐานความรู้และเติมรายละเอียด 19 รายการ โดย 13 งานที่ยังไม่เริ่มมี 39 คำถามระบุผู้ที่ควรตอบ/เหตุผลอย่างชัดเจน ส่วนงานเก่าเพิ่มบริบทตามหลักฐานและคงสถานะ/ผลรีวิวเดิม",
"changes": [
"เพิ่ม description, deliverables, dependencies, suggested_owner และ questions ในข้อมูล Task และหน้ารายละเอียด",
"T-303 มีขั้นตอนเก็บ mandate/inventory/capacity/RTO-RPO/งบและเจ้าของ operation ก่อนเปรียบเทียบ hosting และให้ผู้มีอำนาจยืนยัน ADR",
"เติม brief ให้ T-203/T-304/T-501–T-506/T-601–T-602/T-701–T-702 พร้อมคำถามด้านขอบเขต/ผู้ตัดสินใจ/ข้อมูลต้นทาง ไม่รอค่าคงที่ที่ต้องเป็น configuration",
"เพิ่มบริบทให้ T-102/T-103/T-105/T-106/T-301 และแก้ summary T-302 เป็นผลเลือก SQL Server ที่อนุมัติแล้ว",
"คำถามมี ID คงที่ ผู้ที่ควรตอบ เหตุผล และช่องบันทึกคำตอบ/ผู้ยืนยัน/เวลา/source; ยังไม่มีการเลือก hosting หรือแต่งคำตอบให้",
"Go race suite และ vet ผ่าน Browser task brief 9 ข้อผ่าน พร้อมตรวจ refs ทุกไฟล์มีอยู่จริง และ screenshot T-303 บน desktop/mobile"
],
"tasks": [
"T-417",
"T-203",
"T-303",
"T-304",
"T-501",
"T-502",
"T-503",
"T-504",
"T-505",
"T-506",
"T-601",
"T-602",
"T-701",
"T-702"
],
"refs": [
"tracker/data/milestones.json",
"tracker/templates/task.html",
"tracker/data.go",
"tracker/task_brief_test.go",
"tracker/e2e/task-brief-check.mjs",
"docs/agent/15-preparation-task-briefs.md",
"AGENTS.md"
]
},
{
"id": "C-026",
"at": "2026-10-31T02:12:41+07:00",
"agent": "Codex",
"title": "เก็บงานที่ผ่านรีวิวและตรวจชุดส่งมอบก่อน commit",
"summary": "อ่านผลรีวิวล่าสุดแล้ว T-408–T-417 อยู่ใน Reviewed ครบ ไม่มี Reject/Hold ค้าง จึงรวบรวม code เอกสาร task briefs และผลอนุมัติให้เป็นชุดส่งมอบเดียว โดยคงงานและประวัติรีวิวไว้ครบ ตรวจใหม่บนข้อมูลชั่วคราวก่อนบันทึก Git",
"changes": [
"เก็บฟีเจอร์ Use cases/diagram editor, revision history, approval gate, PNG export, module groups และ UI ตามงานที่ผู้ใช้อนุมัติแล้ว",
"เก็บ task briefs 19 รายการ คำถาม 39 ข้อ และเอกสารกติกา Agent ที่ผ่านรีวิว โดยไม่เปลี่ยนคำถามที่ยังเปิดหรือผลตัดสินใจ hosting",
"อ่านผลอนุมัติล่าสุดของ T-415/T-416/T-417 จาก review form และรักษาผล/เวลาเดิม ไม่เติมชื่อผู้รีวิวแทนข้อมูลที่ว่าง",
"Go test -race -count=1 ./... และ go vet ./... ผ่าน พร้อม syntax/JSON/diff checks",
"Browser regression ผ่าน 70 ข้อ และ task briefs ผ่าน 9 ข้อบนข้อมูล /tmp รวม 79 assertions โดยไม่แก้ Use case จริง"
],
"tasks": [
"T-408",
"T-409",
"T-410",
"T-411",
"T-412",
"T-413",
"T-414",
"T-415",
"T-416",
"T-417"
],
"refs": [
"tracker/data/milestones.json",
"tracker/data/tests.json",
"tracker/README.md",
"docs/agent/15-preparation-task-briefs.md",
"AGENTS.md"
]
},
{
"id": "C-027",
"at": "2026-10-31T02:15:17+07:00",
"agent": "Codex",
"title": "เปลี่ยนงานจัดทำ matrix ฉบับร่างที่เสร็จแล้วเป็น Done",
"summary": "ตามคำขอให้ปิดงานที่เรียบร้อยแล้ว เปลี่ยน T-201/T-202 จาก Review เป็น Done ในขอบเขตการจัดทำฉบับร่าง v0.1 เอกสารมีอยู่ครบตาม checkpoint C-004 ส่วนคำถามและการยืนยันบทบาท/อำนาจ/สิทธิ์จาก BA/Security ยังเปิด review.todo ไว้ตามจริง",
"changes": [
"T-201 Role Matrix draft และ T-202 Security Matrix draft เป็น Done พร้อม finished อ้างอิงเวลาบันทึกงานเสร็จใน C-004",
"คง review state/checklist/history เดิมทุกช่อง และไม่ตั้ง Reviewed/Approve แทนผู้ตรวจ",
"คงสถานะและข้อมูล task อื่นทุกงาน รวมงานที่ Reviewed แล้วและงาน Todo ที่ยังรอข้อมูล"
],
"tasks": [
"T-201",
"T-202"
],
"refs": [
"tracker/data/milestones.json",
"docs/agent/13-role-matrix.md",
"docs/agent/14-security-matrix.md"
]
},
{
"id": "C-028",
"at": "2026-10-31T02:59:35+07:00",
"agent": "Codex",
"title": "ทบทวน Use cases ครบทุกกรณีและแก้ทางแยกที่กระทบสิทธิ์ผู้เรียน",
"summary": "ตรวจครบ 162 กรณี เทียบแหล่งทางการไทยและแยก UNI/SS ไม่ทำผู้ปกครองเป็น gate มหาวิทยาลัยทุกคน แก้ข้อเสนอ workflow 60 รายการ เพิ่ม decision 47 จุด พร้อมเปิดคำถามนโยบาย ไม่ approve แทนผู้ใช้",
"changes": [
"เพิ่มรายงานผลครบ 162 รายการและคำถาม UR-Q01…10 พร้อมผู้ตอบที่เสนอ/หลักฐานไทย",
"แก้เส้นเอกสารเพิ่มให้วนกลับตรวจ แยกไม่เปิดรุ่น รอเงิน ต่อ/ย้ายหอ ฉุกเฉินและ EC ไม่ไหลไปผลสำเร็จผิด",
"ใช้ canonical wf metadata ร่วมกันใน draft/reset/generated docs พร้อม source hash และคง diagram ที่บันทึกเดิม",
"ตรวจโครงสร้างและ terminal paths ทุก use case; Go/race/vet ผ่าน; browser 70+25 ผ่าน; รันเวอร์ชันใหม่บน 8099"
],
"tasks": [
"T-108"
],
"refs": [
"docs/agent/16-use-case-review-2026-10-31.md",
"docs/agent/reviews/2026-10-31-use-case-audit.json",
"use_cases/UC1-Explorer.dc.html",
"tracker/workflow.go",
"tracker/workflow_test.go",
"tracker/static/usecases.js",
"tracker/e2e/workflow-review-check.mjs",
"tracker/data/tests.json"
]
},
{
"id": "C-029",
"at": "2026-10-31T11:21:44+07:00",
"agent": "Codex",
"title": "Mockup workspace ใช้ screen artifacts ร่วมกันใน Sitemap และ Page flow",
"summary": "เพิ่มเมนู Mockup ครบ 3 หน้าย่อย พร้อม 170 screen records และ Page flow ตาม canonical 162 Use cases แยกภาพ/state/component/source และ revision ที่แก้ร่วมกันอย่างเป็นระบบ",
"changes": [
"นำเข้ารหัสหน้าจอ 164 รหัสเป็น wireframe ร่าง 6 states และอ้างภาพ proposal เดิม 6 ภาพ พร้อม provenance ที่ไม่อ้างว่า final",
"สร้าง Sitemap ภาพหน้าจอบนลงล่างและตัวกรอง Module/Channel; Page flow ซ้ายไปขวารักษา source decisions/labels/loops พร้อม mapping ที่แก้ได้",
"เพิ่ม Screen Listing/detail และ links กลับ Use case / artifact / component contracts",
"เพิ่ม grid/zoom/pan/fit/arrange, repeat screen instances, labelled connections/arrowheads, Undo/Redo และ revision/conflict/restore แบบ atomic",
"ตรวจ artifacts/ทุก flow, Go/race/vet และ browser 147 ข้อ ผ่านบนข้อมูลชั่วคราว; เปลี่ยนตัวรัน 8099 และตรวจ GET โดยไม่บันทึกข้อมูลทดสอบจริง"
],
"tasks": [
"T-418"
],
"refs": [
"mockups/README.md",
"docs/agent/17-mockup-workspace.md",
"tracker/mockup_catalog.go",
"tracker/mockup_store.go",
"tracker/mockups.go",
"tracker/static/mockups.js",
"tracker/e2e/mockups-check.mjs",
"tracker/data/tests.json"
]
}
]