# Frontend Bridge & Cutover (เฟส 9)
อัปเดต: 20 กุมภาพันธ์ 2026

## แนวทาง
- เนื่องจาก ingestion เขียนลง DB เดียวกับ WepAppOpus อยู่แล้ว จึงใช้ UI เดิมต่อได้ทันที
- สิ่งที่ต้องทำคือปิด/ซ่อน CSV upload และเปิด feature flag ว่า data มาจาก API
- เพิ่ม endpoint ตรวจสถานะ pipeline ที่ WepAppOpus จะ ping ได้: `GET /bridge/status`

## Feature flag ที่เสนอ (ฝั่ง WepAppOpus)
- เพิ่ม env `USE_API_PIPELINE=true` เพื่อ:
  - ซ่อนเมนู/หน้า Upload CSV
  - ปรับข้อความสถานะว่าใช้ API ingestion
  - ถ้า API มีปัญหา สามารถ fallback กลับ CSV ด้วยการตั้ง `USE_API_PIPELINE=false`

## Endpoint ใหม่ (ฝั่ง WepAppOpusApi)
- `GET /bridge/status` → `{ pipeline: "api", source: "WepAppOpusApi", db: "mysql|sqlite", port: 22222, ingest: { metrics... } }`
- ใช้เช็ค health/metric summary ก่อน toggle ที่ UI

## ขั้นตอน Cutover (ข้อเสนอ)
1) เปิด ingest job ให้ดึงข้อมูลครบย้อนหลังตามที่ตกลง (เฟส 7/10) จน checkpoint ทัน
2) รัน UI tests ที่ WepAppOpus: dashboard/imports/monitoring ยังอ่านได้จาก DB เดิม
3) ตั้ง `USE_API_PIPELINE=true` ใน WepAppOpus (จะต้องเพิ่มโค้ดซ่อน upload) และ deploy
4) Monitor `/metrics` และ `/bridge/status` อย่างน้อย 24 ชม.
5) ถ้าปกติ → ปิดเส้นทาง upload CSV ทั้ง backend/frontend

## งานโค้ดที่ต้องทำฝั่ง WepAppOpus (แนะนำ)
- อ่าน `USE_API_PIPELINE` ใน UI layout → ซ่อนปุ่ม/หน้า Upload
- Redirect `/upload` ไปหน้า Dashboard พร้อมแจ้งว่าใช้ API แล้ว
- เพิ่มแบนเนอร์เล็กใน Dashboard: “Data source: API (WepAppOpusApi)”
- Optional: เพิ่มหน้า internal `/ops/bridge` ดึง `/bridge/status` มาแสดง metric summary

## Smoke tests หลัง toggle
- Dashboard คำนวณ KPI ถูกต้อง (เทียบ sample API response)
- Import history แสดง record จาก ingestion (ไม่ต้องอัปโหลด)
- Ops monitoring page แสดง freshness (checkpoint_date >= T-1)
- Auth flow ยังทำงาน (ไม่ยุ่งกับ ingestion)
