# ติดตั้งระบบเอง · Clone & run the system

ระบบทั้งหมดเป็นโอเพนซอร์ส รันได้บนเครื่องเดียว และดีพลอยฟรีบน Cloudflare Workers
The whole system is a single repo, runs on one machine, deploys free on Cloudflare Workers.

## 1. โคลนและติดตั้ง · Clone & install

```bash
git clone https://github.com/Nonarkara/lopburi-dashboard
cd lopburi-dashboard
npm install          # Node 20+ (เว็บ), สคริปต์ดึงข้อมูลใช้ Node 18+ ได้
npm run dev          # http://localhost:3000/lopburi
```

ไม่ต้องมีกุญแจใด ๆ ระบบก็ทำงานครบ: ฟีดที่เข้าไม่ถึงจะถอยไปใช้แบบจำลองอ้างอิงพร้อมป้ายกำกับ
Zero keys required — unreachable feeds degrade to labeled reference models.

## 2. ดึงข้อมูล · Bake the data

```bash
npm run fetch:opendata:discover        # กวาด data.go.th ทั้งหมด (~2-4 นาที)
npm run fetch:floodmemory              # GISTDA น้ำท่วมซ้ำซาก 2554-2566
LONGDO_API_KEY=xxx npm run fetch:poi   # จุดสนใจ Longdo 8 หมวด
npm run ingest:all                     # หรือรันทุกตัวต่อกัน
git add public/data && git commit      # ข้อมูลอบแล้ว commit ลง repo
```

กุญแจ Longdo (ฟรี): สมัครที่ https://api.longdo.com/console
หมายเหตุ: data.go.th บล็อกเครือข่ายคลาวด์บางแห่ง — รันจากเครื่อง/เครือข่ายไทย

## 3. ตัวแปรแวดล้อม (ทั้งหมด "ไม่บังคับ") · Environment variables (all optional)

| ตัวแปร | ใช้ทำอะไร | ได้จากไหน |
|---|---|---|
| `LONGDO_API_KEY` | สคริปต์กวาดจุดสนใจ | api.longdo.com/console (ฟรี) |
| `SUPABASE_URL` + `SUPABASE_SERVICE_KEY` | บันทึกข้อมูลย้อนหลังลงฐานข้อมูล + กราฟแนวโน้ม | supabase.com (ฟรี) — ดูตาราง `lopburi_*` ใน db/lopburi-history.sql |
| `LLM_API_URL` + `LLM_API_KEY` + `LLM_MODEL` | แชตบอตถามข้อมูล (RAG) | คีย์ฟรี: Groq (console.groq.com), NVIDIA NIM (build.nvidia.com), OpenRouter — ทุกเจ้าใช้รูปแบบ OpenAI-compatible |
| `NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN` | แผนที่ฐาน Mapbox (มี OSM/Esri สำรอง) | mapbox.com |

ตั้งค่าบน Cloudflare: `npx wrangler secret put <NAME> -c wrangler.lopburi.jsonc`

## 4. โลโก้ · Logos

วางตราประจำจังหวัด `public/logos/lopburi-seal.png` (ไฟล์ทางการจากสำนักงานจังหวัด)
โลโก้ depa และ Smart City Thailand อยู่ในระบบแล้ว

## 5. ดีพลอย · Deploy

```bash
npm run deploy:lopburi   # OpenNext build + wrangler deploy (ต้อง login Cloudflare)
npm run verify           # ตรวจทุกเส้นทางบนโดเมนจริง
npm run ship             # commit + push + build + deploy + verify ในคำสั่งเดียว
```

## 6. ภาพกล้องสาธิต · Demo camera footage

`src/data/lopburi-cctv-demo.ts` — สตรีม YouTube สาธารณะที่ใช้แทนกล้องจริงระหว่างจัดหา
เติม `realLocation` (ตำแหน่งจริงจากหน้า YouTube) ให้ครบ กล้องจริงที่เชื่อมต่อได้จะแทนที่สาธิตอัตโนมัติ

## โครงสร้างสำคัญ · Key structure

```
src/lib/lopburi/       ตัวโหลดข้อมูลทุกตัว (flood, air, cctv, incidents, warnings, ...)
src/app/api/lopburi/   API ทุกเส้นทาง
src/components/Lopburi/ ทุกแผงบนหน้าจอ
src/data/              ทะเบียนที่แก้มือ (กล้อง, สาธิต)
public/data/lopburi/   ข้อมูลอบแล้ว (ขอบเขต, สายน้ำ, ศูนย์พักพิง, POI, น้ำท่วมซ้ำซาก)
public/data/gov-lopburi/ แค็ตตาล็อก data.go.th
scripts/               สคริปต์ดึงข้อมูลทั้งหมด (idempotent รันซ้ำได้เสมอ)
docs/                  คู่มือปฏิบัติการ (SSDIY.md คือเล่มหลัก)
```
