Problem solving
ปัญหาที่เจอระหว่างทำงานและวิธีแก้ ใช้อ้างอิงเมื่อเจอปัญหาแบบเดิมอีก ยังเปิดอยู่ 0 เรื่อง
- อาการ
- ภาพ overview ของ 170 หน้ากว้างมากและ fit เหลือประมาณ 2% แม้ source direction เป็น TB
- สาเหตุ
- การ collapse strongly connected components ทำให้หน้าจอจำนวนมากอยู่ rank เดียว แล้ว layout วางทุก node ในแถวเดียว
- วิธีแก้
- แบ่งแถว TB ไม่เกิน 6 cards ต่อแถวและคงความสูงตามข้อความจริง เพิ่ม Module/Channel scope กับ Focus โดยซ่อนเฉพาะมุมมองและไม่ลบ hidden nodes ตอน Save; browser ตรวจ bounded width/แนวตั้งและการคง 170 nodes หลังบันทึก
- อาการ
- grid drag assertion ไม่ผ่าน แต่ shape และเส้นแสดงปกติ
- สาเหตุ
- พิกัดกึ่งกลาง start shape อยู่ y≈1019 เมื่อ viewport สูง 1000 และ elementFromPoint ไม่พบ node; กล่อง review เพิ่มความสูงก่อน canvas แต่ test ใช้ mouse coordinates โดยไม่เลื่อนหน้า
- วิธีแก้
- ให้ Playwright scroll canvas เข้ามาใน viewport ก่อนทดสอบ wheel/drag แล้วตรวจพิกัดและ grid จริง ชุดเดิมผ่านครบ 70 ข้ออีกครั้ง ไม่แก้ product drag โดยเดาสาเหตุ
- อาการ
- กดเมนูแล้วหน้าโหลดช้า ทั้งที่ server ตอบเร็ว
- สาเหตุ
- ทุก tab เปิดการเชื่อมต่อ live update (SSE) ค้างไว้ 1 ช่อง browser ให้ประมาณ 6 ช่องต่อเว็บบน HTTP/1.1 เปิดหลาย tab แล้ว request ใหม่ต้องรอ และ CSS/JS ถูกโหลดใหม่ทุกหน้า
- วิธีแก้
- tab ที่ซ่อนอยู่ปิดการเชื่อมต่อแล้วต่อใหม่เมื่อกลับมา, CSS/JS ใส่ ?v=<hash> และให้ browser cache ได้
- อาการ
- กดปุ่ม ▾ ที่ Milestone / Epic หรือย่อทั้งหมด แล้วแถวข้างในยังแสดงอยู่
- สาเหตุ
- JS ใส่ attribute hidden ให้แถวถูกแล้ว แต่ CSS .tl-row { display: flex } มีผลเหนือ [hidden] ของ browser แถวจึงไม่หาย E2E เดิมเช็กแค่ attribute ไม่ได้เช็กว่าหายจากจอจริง
- วิธีแก้
- เพิ่ม .tl-row[hidden] { display: none } และ E2E เช็กจากความสูงของแถวที่เห็นจริง
- อาการ
- เลื่อน chart ไปทางขวาแล้วชี้เมาส์ที่แถว ส่วนที่ช่องรายละเอียดทับ chart เห็นสีแถบทะลุขึ้นมา
- สาเหตุ
- สี hover ของ theme มืดเป็นสีโปร่งแสง (rgba) และไปแทนพื้นทึบของช่องรายละเอียดที่ลอยทับ chart
- วิธีแก้
- วางสี hover เป็นชั้นบนพื้นทึบ (linear-gradient + --surface / --thead) ช่องรายละเอียดจึงทึบเสมอ
- อาการ
- ตรวจหน้า Wait for review ด้วย curl | grep แล้วได้ 0 ฟอร์ม ทั้งที่หน้าเว็บมีฟอร์มครบ
- สาเหตุ
- เครื่องนี้ใช้ rtk ซึ่ง rewrite คำสั่ง curl ให้ย่อ output (เหลือ ~600 ตัวอักษรจาก 34 KB) grep จึงไม่เจอสิ่งที่อยู่ท้ายหน้า
- วิธีแก้
- ใช้ rtk proxy curl เมื่อต้องการ output เต็มสำหรับ grep หรือนับผล ตรวจซ้ำแล้วเจอฟอร์มครบ 6 อัน
- อาการ
- tailscale serve --http ตอบ 404 page not found เมื่อเข้าด้วย IP และตอบ 500 เมื่อเข้าด้วยชื่อเครื่อง
- สาเหตุ
- (1) HTTP serve เลือกปลายทางตามชื่อ host และ MagicDNS ปิดอยู่ เครื่องอื่นจึงต้องใช้ IP ซึ่งไม่ตรงกับชื่อที่ลงทะเบียน (2) WSL ส่งต่อพอร์ตให้ Windows ทาง ::1 เท่านั้น ปลายทาง 127.0.0.1 จึงต่อไม่ได้ และ http://[::1]:8099 ถูกบันทึกเป็น http://::1:8099 ซึ่งไม่ใช่ URL ที่ถูกต้อง
- วิธีแก้
- ใช้ tailscale serve --tcp=8099 tcp://localhost:8099 ซึ่งส่งต่อแบบ TCP ไม่สนชื่อ host และให้ localhost เลือก ::1 เอง ทดสอบทุกหน้าและ SSE ผ่าน IP Tailscale แล้วผ่าน รวมไว้ใน scripts/tailscale.sh
- อาการ
- TestWatchBroadcastsOnDataChange ผ่านบ้างไม่ผ่านบ้าง และหน้าเว็บอาจขึ้นข้อความ JSON ผิดแวบหนึ่งตอนบันทึกไฟล์
- สาเหตุ
- การบันทึกไฟล์จะล้างไฟล์ก่อนแล้วค่อยเขียน watcher ที่ตรวจทุก 1 วินาทีบางครั้งอ่านไฟล์ตอนที่ยังเขียนไม่เสร็จ
- วิธีแก้
- เมื่อเห็นไฟล์เปลี่ยน ให้รอจนขนาดและเวลาแก้ไขของไฟล์คงที่ (ตรวจห่างกัน 100 ms) ก่อนโหลดใหม่ แล้วรันทดสอบซ้ำ 30 รอบผ่านครบ
- อาการ
- §5 (Architecture, การเชื่อมต่อ, NFR) และ §7 (งบประมาณ) พูดถึงระบบที่ไม่เกี่ยวกับ TNSU
- สาเหตุ
- ทีมใช้เอกสารของโครงการอื่นขึ้นโครง แล้วลืมลบเนื้อหาเดิมออก
- วิธีแก้
- เอาเนื้อหานั้นออกจากฐานความรู้ทั้งหมด และระบุว่า §5 กับ §7 ยังไม่ได้เขียนสำหรับ TNSU ให้ Agent ข้ามไป
- อาการ
- เอกสารใช้ SCH-xx เป็นโรงเรียนกีฬา แต่ use case ของทีมใช้ SCH เป็น module ทุนและ กยศ.
- สาเหตุ
- ตั้งรหัสฝั่ง BA เองก่อนได้ use case
- วิธีแก้
- เปลี่ยนรหัสฝั่ง BA เป็น SS-xx ทุกไฟล์ และเขียนคำเตือนไว้ใน AGENTS.md
- อาการ
- ภาพขนาด 2000×486 ตัวอักษรเล็กจนอ่านตรง ๆ ไม่ได้ และมีเลขข้อซ้ำ (8.3, 14.3, 15.3)
- สาเหตุ
- ได้มาเป็นภาพ export ไม่ใช่ไฟล์ต้นฉบับ
- วิธีแก้
- ตอนแรกตัดภาพเป็นส่วนแล้วขยาย 4–5 เท่าเพื่อถอดข้อความ ต่อมา BA ส่งไฟล์ต้นฉบับ TNSU_EDU 191069.drawio มา (30 ต.ค. 2569) จึงอ่านจากไฟล์โดยตรงด้วย gen_ba_drawio.py ข้อความตรงกับที่ถอดจากภาพทุกข้อ เลขข้อซ้ำมีอยู่จริงในต้นฉบับ
- อาการ
- Agent อ่านไฟล์ UC1-Explorer.dc.html ขนาด 300 KB ได้ยาก และค้นหา use case รายตัวไม่ได้
- สาเหตุ
- ข้อมูลทั้งหมดอยู่ในตัวแปร JavaScript บรรทัดเดียว
- วิธีแก้
- เขียนสคริปต์ gen_use_cases.py ดึง object ออกมาแล้วสร้าง Markdown ทีละ module รันใหม่ได้ทุกครั้งที่ทีม export
- อาการ
- การค้นคำว่า อนุมัติ หรือ รับรอง ทำให้นักศึกษาถูกนับเป็นผู้อนุมัติในหลาย module
- สาเหตุ
- คำเหล่านี้ปรากฏในขั้นตอนของผู้ยื่นคำขอด้วย เช่น ยื่นใบลาที่ไม่ต้องอนุมัติ
- วิธีแก้
- ใช้ตารางนับแค่การมีส่วนร่วม แล้วอ่านขั้นตอนอนุมัติ 158 รายการเพื่อทำตารางอำนาจอนุมัติด้วยมือ
- อาการ
- ไม่มี pandoc และ libreoffice ให้แปลง Proposal เป็นข้อความ
- สาเหตุ
- เครื่อง WSL ไม่ได้ติดตั้งไว้
- วิธีแก้
- แตกไฟล์ .docx แล้วอ่าน word/document.xml ด้วย Python ตรง ๆ รวมตารางและตำแหน่งภาพ
- อาการ
- ชุด browser test แรกค้างที่ Page.navigate แม้ HTTP server ตอบ 200
- สาเหตุ
- การเรียก Chromium ด้วยชุด flag และ CDP แบบง่ายในสภาพแวดล้อมนี้ไม่สามารถเปิดหน้าได้ สาเหตุระดับ Chromium ยังไม่ได้ยืนยัน ไม่พบปัญหา HTTP server
- วิธีแก้
- ใช้ Playwright ที่ติดตั้งอยู่แล้วเปิด headless shell ด้วย launch configuration มาตรฐาน ทดสอบจริงผ่าน 23 ข้อ รวมการเขียนและสองผู้ใช้ ไม่มีการติดตั้ง dependency เพิ่ม