# รายงานผลทดสอบ — Premium เฟส 2 (Warehouse & Load)

> รันจริงด้วย `python load_demo.py` (sqlite stdlib · ตรรกะเดียวกับ loader.py/Postgres)
> ผลรัน: **6 orders เข้า → 5 สะอาด · 1 ถูก reject (negative total) · idempotent = True**

| # | กรณีทดสอบ | ผลที่คาดหวัง | ผล |
|---|---|---|---|
| 1 | quality gate: ยอดติดลบ | reject + บันทึกเหตุผล "negative total_amount" | ✅ ผ่าน |
| 2 | **idempotency** (รันโหลดซ้ำ window เดิม) | จำนวนแถวเท่าเดิม (5 → 5) ไม่เบิ้ล | ✅ ผ่าน |
| 3 | UPSERT update (ค่าซ้ำคีย์เดิม) | อัปเดตค่า ไม่สร้างแถวใหม่ (ON CONFLICT DO UPDATE) | ✅ ผ่าน |
| 4 | duplicate natural key ใน batch | reject (กันซ้ำในชุดเดียว) | ✅ ผ่าน |
| 5 | missing sku | reject | ✅ ผ่าน |
| 6 | negative stock (inventory) | reject | ✅ ผ่าน |
| 7 | aggregation รายแพลตฟอร์ม | revenue/orders ต่อแพลตฟอร์มถูกต้อง | ✅ ผ่าน |
| 8 | โหลดข้อมูลสะอาด | 5/6 orders + 5 inventory เข้า warehouse | ✅ ผ่าน |
| 9 | import โดยไม่มี deps | lazy import (loader) + sqlite stdlib (demo) | ✅ ผ่าน |

**สรุป:** ผ่าน 9/9 — warehouse + load พร้อม · ข้อมูลพังถูกกันออก · รันซ้ำปลอดภัย
**ขอบเขตเฟสนี้:** สร้าง schema + quality gate + idempotent load เท่านั้น · *ยังไม่* deploy cloud (เฟส 3) · *ยังไม่* dashboard (เฟส 4)
