Multimodal AI / local app
ผมเริ่มจาก flow ที่ดูเล็ก
อัปโหลดรูป → แยกข้อมูล → แก้ไข → บันทึก ฟังดูตรงไปตรงมา แต่ใบเสร็จมีวันที่หลายรูปแบบ ยอดรวมที่อาจไม่ตรงกับรายการ และข้อมูลส่วนตัวที่ไม่ควรไหลไปไหนโดยไม่จำเป็น
สิ่งที่ลองทำ
- ให้ provider หรือ mock ส่ง structured result แล้วให้ Zod ตรวจและ normalize fields
- แปลงปี พ.ศ. เป็น ค.ศ. และบังคับให้รายการที่ผิดหรือวันที่เป็นไปไม่ได้กลับไปให้คนตรวจ
- เก็บเฉพาะ receipt ที่กดยืนยันแล้วใน IndexedDB ผ่าน repository interface
ภาพรวมการทำงาน
- 1
receipt image → upload validation → parse endpoint
- 2
mock / provider → Zod validation และ date normalization
- 3
human review → IndexedDB → history และ dashboard
การไม่ save อัตโนมัติเป็นการตัดสินใจหลัก
ผมไม่อยากให้คำตอบจากโมเดลกลายเป็นรายการค่าใช้จ่ายทันที เพราะ confidence ไม่ใช่คำรับประกันทางการเงิน ขั้นตอน review จึงไม่ใช่หน้าคั่น แต่เป็นส่วนหนึ่งของ product flow

ผลที่ออกมา
synthetic fixture เดินผ่าน normalization path เดียวกับ provider output, รองรับ THB และ Buddhist Era date และส่งค่าที่ confidence ต่ำกลับไปให้ review ต่อ เดโมจึงพิสูจน์ pipeline behavior ไม่ใช่ OCR accuracy

สิ่งที่ยังติดอยู่
- public deployment ใช้ mock AI จนกว่าจะตั้งค่า provider keys ใหม่
- ข้อมูลอยู่ใน browser profile เดียว ไม่มี sync, backup, auth หรือ multi-device support
- รูปถูกเก็บเป็น base64 ใน local storage layer และอาจกินพื้นที่เร็วขึ้น
ถ้าทำใหม่วันนี้
- ทำชุดใบเสร็จที่มี tax, subtotal และภาษาไทยหลายรูปแบบก่อนเพิ่ม provider routing
- แสดงเหตุผลของ validation warning ให้แก้ได้เร็วขึ้นในหน้า review
- วาง export / backup contract ก่อนเก็บข้อมูลจริงระยะยาว
โค้ดและเดโม
ใน repository มีวิธีรัน การทดสอบ และรายละเอียด implementation ฉบับเต็ม