# 00 — เทมเพลตมาตรฐาน: Import เอกสาร → ตาราง → ตรวจไขว้

> แนวคิดหลัก: **ทำครั้งเดียว ใช้ได้ทุก flow** — import ชุดเอกสาร (PDF/รูป) เข้าระบบ AI สกัดเป็น **ตารางมาตรฐาน 6 ชุด** แล้วรัน **ชุดตรวจไขว้เดียวกัน** กับทุกเคส โดยไม่ต้องแก้โค้ดต่อเคส
> pattern เดียวกับ demo เดิมของ Manuel (CaseModule: Document Upload → OCR Extraction → Classification → Check → Sign-off — ดูเคส AP Freight ที่ใช้ B/L + Invoice)

## 5 ขั้นตอนมาตรฐาน (เหมือน demo freight)

| ขั้น | งาน | ในเดโมนี้ (DGTL26041869) |
|---|---|---|
| 1. Import | รับไฟล์ทุกชนิด ชื่ออะไรก็ได้ | 11 ไฟล์ · 30 หน้า (getCorsFile, 逾期, rc-upload-* ฯลฯ) |
| 2. Extract (AI) | สกัดเป็นตารางตาม schema กลาง | ตาราง 01–06 (ดูด้านล่าง) |
| 3. Normalize | พ.ศ.→ค.ศ. · ตัวเลขเป็น number · แยกสำเนา/ใบซ้ำ · fuzzy key (TH- vs TI-) | ทำในสคริปต์ตรวจ |
| 4. Cross-Check | รันชุดตรวจ 18 ข้อ (คำนวณใหม่ ไม่เชื่อค่าที่พิมพ์) | PASS 11 · FLAG 6 · N/A 1 |
| 5. Report | ตารางผล + รายการขอเอกสารเพิ่ม | 05_checks_results.csv + guide section |

## Schema ตารางมาตรฐาน (6 ชุด)

**01_documents_master** — ทะเบียนเอกสารทุกไฟล์
`doc_id · file · doc_type · doc_date · issuer · recipient · seller_tax_id · buyer_tax_id · currency · net · discount · vat · total · refs · signers · notes`

**02_invoice_items** — รายการสินค้า/บริการต่อใบกำกับ
`invoice · code (SKU) · desc · qty · unit_price · amount`

**03_cn_adjustments** — ใบลดหนี้/ปรับราคา
`cn_no · ref_invoice · orig_after_disc · corrected · diff · vat · total · reason · receiver_signed`

**04_reimbursement_oa** — รายการขอเบิกจากระบบ (OA/Maycur)
`invoice · bill_date · amount_thb · limit_thb · amount_cny`

**05_checks_results** — ผลตรวจไขว้ (เครื่องสร้าง)
`check_id · category · check · result (PASS/FLAG/N-A) · evidence`

**06_reference_entities** — ข้อมูลนิติอ้างอิงสำหรับตรวจชื่อ (引用1)
`entity · name_th · name_en · address · tax_id`

## ชุดตรวจไขว้ 18 ข้อ (ชุดกลาง — ใช้ซ้ำได้ทุก flow)

| กลุ่ม | ตัวอย่างเช็ค | หมายเหตุ |
|---|---|---|
| Entity (โจทย์ 1) | ชื่อผู้ซื้อ vs ข้อมูลนิติอ้างอิง · tax ID | fuzzy matching |
| Math (โจทย์ 1) | ส่วนลด % · VAT · grand total · ผลรวมรายบรรทัด | คำนวณใหม่ทั้งหมด |
| Duplicate (โจทย์ 2.2) | เลขใบกำกับซ้ำภายใน/ข้าม flow · แยก "สำเนา" ออกจาก "เบิกซ้ำ" | ต้องรันทั้ง 9 เคส |
| Cross-system | ยอดใบกำกับ vs ยอดเบิก · เรท FX · เอกสารอ้างอิงข้ามไฟล์ | จับ TH- vs TI- |
| Quality/Compliance | ลายเซ็นครบ · วันที่สอดคล้อง · CN format · ผู้รับ CN | flag ให้ human review |
| Tax stats (โจทย์ 3) | VAT/WHT/ยอดสุทธิ | WHT = N/A สำหรับซื้อสินค้า |

## ใช้กับ flow อื่น (import เพิ่มได้เลย)

- **DGTL26071314** (นำเข้า — มี B/L + Freight Invoice + 报关单): เพิ่มฟิลด์ `bl_number`, `declaration_no`, `advanced_payment_ref` ในตาราง 01/02 — ชุดเช็คเดิม + เพิ่มเช็ค "垫付必须有ต้นฉบับ" ตามโจทย์ 2.2b
- **DGTL26081284** (เศษวัสดุ): เพิ่ม `weight_note_ref` เช็ค job order ↔ ใบชั่ง ↔ ใบกำกับ (โจทย์ 2.1b)
- ทุกเคสใช้ 5 ขั้น + ตาราง 6 ชุด + ชุดเช็คกลาง → ผลออกในรูปเดียวกันเสมอ

## ไฟล์ผลลัพธ์ (โฟลเดอร์นี้)

`sanhua_extract.xlsx` (6 ชีต) · `01_documents_master.csv` · `02_invoice_items.csv` · `03_cn_adjustments.csv` · `04_reimbursement_oa.csv` · `05_checks_results.csv` · `06_reference_entities.csv`

> หมายเหตุ: การสกัดในเดโมนี้ อ้างอิงผลอ่านเอกสารที่ตรวจสอบแล้ว 100% (30/30 หน้า + ภาพฝัง); ในระบบจริงใช้ AI vision + JSON schema เดียวกับแอป Expense Preview (`prompts/agent_instruction_with_items.txt`)
