Agent Dev Thai Academyprinciples · patterns · architecture
แผนภาพที่ CI เช็กได้ · แบบทดสอบ
0/4
ก่อนปิดบท

ทายก่อนรันโค้ด

ทุกข้อคือแผนภาพหนึ่งรูปกับ diff หนึ่งชิ้นจาก agent

คะแนน 0 / 6
ข้อ 1 / 6

แผนภาพสถาปัตยกรรมอยู่ใน Notion บอกว่า core ไม่ import ใคร agent เพิ่ม import { prisma } from "@/infra/members" ใน core/pricing.ts แล้ว test ผ่าน จะเกิดอะไรต่อ?

1 · Class & Package Diagrams รูปที่อยู่นอก repo ไม่มีอะไรอ่าน agent ไม่เห็น CI ก็ไม่เห็น ทุก PR ผ่าน รูปผิดไปทีละเส้น และคนแรกที่รู้คือคนที่สั่งงานตามรูปแล้วขอบเขตงานผิด ดูบนกระดาน 1 · Class & Package Diagrams →
ข้อ 2 / 6

คุณอยากให้แผนภาพ package เป็นสัญญาที่ agent ต้องผ่านก่อน merge ข้อไหนทำได้จริง?

1 · Class & Package Diagrams CLAUDE.md กับรูปใน PR เป็นแค่ข้อความให้อ่าน ไม่มีอะไรบังคับ กฎ import ที่สร้างจากแผนภาพแล้ว CI รัน ทำให้ PR ที่ข้ามเส้นไม่ผ่าน และการเปลี่ยนเส้นต้องแก้ docs/arch.mmd ซึ่งคนรีวิวเห็นใน diff ดูบนกระดาน 1 · Class & Package Diagrams →
ข้อ 3 / 6

test ของ checkout mock ทุกตัวให้สำเร็จ แล้วเช็กแค่ expect(mocks.enroll).toHaveBeenCalled() agent เปลี่ยนเป็น Promise.all([omise.charge(order), enroll(order)]) อะไรจะจับได้?

2 · Sequence Diagrams test ถามแค่ว่า enroll ถูกเรียกหรือยัง ไม่ถามว่าเรียกหลังเงินเข้าหรือเปล่า และ mock ไม่เคยคืนค่าว่าบัตรไม่ผ่าน กิ่ง declined ในแผนภาพ ที่เป็น test ของมันเอง คือตัวที่จับได้ ดูบนกระดาน 2 · Sequence Diagrams →
ข้อ 4 / 6

repo นี้มี contract test ที่อ่าน docs/checkout.seq.mmd PR เพิ่ม await notifyInstructor(order) หลัง enroll โดยไม่แตะไฟล์แผนภาพ ผลคืออะไร?

2 · Sequence Diagrams fake จดทุกการเรียกตามลำดับ แล้วเทียบกับเส้นในแผนภาพ ขั้นใหม่จึงต้องมีเส้นของมัน และพอมีเส้น test ก็สร้างกิ่งที่มันล้มให้ ที่ไม่ห่อ notifyInstructor ไว้จะ throw หลังตัดเงิน แล้วโดนจับก่อน merge ดูบนกระดาน 2 · Sequence Diagrams →
ข้อ 5 / 6

ออเดอร์เก็บสถานะเป็น isPaid, isCancelled, isRefunded ที่หลายไฟล์ตั้งเอง webhook ตั้ง isCancelled = false ทุกครั้งที่เงินเข้า ถ้า Omise ส่ง charge.complete ซ้ำหลังแอดมินคืนเงินไปแล้ว จะเกิดอะไร?

3 · State Machine Diagrams canWatch อ่านแค่ isPaid กับ isCancelled ธงสามตัวได้ 8 แบบ แต่ที่ควรเกิดได้มีแค่ 4 ตารางเส้นเดียวไม่มีเส้น refunded → paid เลยปฏิเสธ event นี้ ดูบนกระดาน 3 · State Machine Diagrams →
ข้อ 6 / 6

PR เพิ่มสถานะ disputed ใน type Status และตาราง NEXT ทำไม default: return assertNever(s) ใน canWatch ถึงสำคัญ?

3 · State Machine Diagrams assertNever รับได้แค่ never สถานะใหม่ที่ไม่มี case จึงคอมไพล์ไม่ผ่าน agent ต้องตัดสินใจทุกที่ ส่วนธงใหม่อย่าง isDisputed ไม่มีอะไรพาไปเปิดไฟล์ที่อ่านธง ดูบนกระดาน 3 · State Machine Diagrams →
คะแนนเก็บในเบราว์เซอร์ของคุณเท่านั้น