# ADR-0001 — สถาปัตยกรรมบริการ WepAppOpusApi
วันที่: 20 กุมภาพันธ์ 2026

## สรุป
สร้างบริการใหม่ (Node/TS) ชื่อ **WepAppOpusApi** รันที่พอร์ต 22222 ทำหน้าที่ดึงข้อมูลโฆษณาผ่าน API ภายนอกแล้วเขียนลงฐานข้อมูลเดียวกับ WepAppOpus เพื่อให้ UI เดิมทำงานต่อได้โดยไม่แก้ฝั่ง frontend มาก

## ทางเลือกที่พิจารณา
1) **แชร์ฐานข้อมูลกับ WepAppOpus (เลือก)**  
   - Pros: UI/แดชบอร์ดเดิมใช้ต่อได้ทันที; ลดงานแปลง API/response ใหม่  
   - Cons: ต้องระวัง schema migration ให้สอดคล้อง; ingestion ผิดพลาดอาจกระทบ UI ตรง
2) สร้าง internal REST/gRPC แล้วให้ WepAppOpus ดึงผ่าน service นี้  
   - Pros: แยกความกังวลชัด; สามารถ version API  
   - Cons: ต้องแก้ frontend ทั้งชุด; latency เพิ่ม; งาน refactor มากกว่า

เลือกข้อ 1 สำหรับ cutover เร็วที่สุด แต่จะเว้นจุด hook ไว้ถ้าต้องทำ service bridge ในอนาคต

## คอนเทนเนอร์/โปรเซส
- รันด้วย PM2: `pm2 start pm2.config.cjs` (script ใช้ `node --loader tsx ./src/index.ts`)
- พอร์ต: 22222 (configurable ผ่าน env `PORT`)
- Health endpoints: `/health`, `/ready`

## การเชื่อมต่อ DB
- ใช้ DSN เดียวกับ WepAppOpus (`DATABASE_URL` MySQL) หรือ SQLite path เดียวกันใน dev
- การเพิ่ม field ใหม่จะทำผ่าน migration ร่วม (เฟส 5)

## Logging & Observability (เฟส 8)
- ใช้ pino logger; ใส่ trace-id ใน middleware เมื่อต่อกับ API client
- จะเพิ่ม metrics (success rate/latency) ผ่านเครื่องมือที่ตัดสินในเฟส 8

## ผลกระทบ
- Frontend แทบไม่ต้องแก้ในเฟส early; ingestion pipeline ต้องระวัง schema consistency

## สเตตัส
- Accepted (เพื่อเดินหน้าเฟส 3–5)
