🔥 BOOM ORACLE · SCC TUTORIAL

SCC Scrapers Tutorial

คู่มือใช้งาน Scraper Command Center — ระบบดึงข้อมูลอสังหาริมทรัพย์อัตโนมัติ 16 scrapers, 11 NPA banks, 99,112+ listings พร้อม AI pipeline

16
Scrapers ทั้งหมด
11
NPA Banks
99K+
Listings ในระบบ
5
Services
AI
Pipeline อัตโนมัติ
01 · INTRODUCTION

Scraper คืออะไร? — ระบบดึงข้อมูลอัตโนมัติ

Scraper คือโปรแกรมที่ดึงข้อมูลจากเว็บไซต์อสังหาริมทรัพย์โดยอัตโนมัติ แต่ละตัวทำงานใน Docker container แยกกัน ควบคุมและจัดการทั้งหมดผ่าน SCC (Scraper Command Center)

🤖
อัตโนมัติ 100%
FULLY AUTOMATED
Scraper ทำงานตาม schedule โดยไม่ต้องสั่งเอง ดึงข้อมูลจากเว็บไซต์ธนาคาร NPA และแพลตฟอร์มอสังหาฯ ทุกวันอัตโนมัติ
🐳
Docker Container
ISOLATED ENVIRONMENT
แต่ละ scraper รันใน Docker container ของตัวเอง แยกจากกัน ถ้า scraper ตัวหนึ่งล้มเหลว ไม่กระทบตัวอื่น
🎛️
SCC Dashboard
COMMAND CENTER
จัดการ scraper ทั้งหมดผ่าน web dashboard ที่ localhost:3030/scrapers ดูสถานะ สั่งรัน และตรวจสอบผลลัพธ์ได้ในที่เดียว
🧠
AI Pipeline
CLAUDE POWERED
ข้อมูล raw ที่ดึงมาจะถูก Claude AI ประมวลผลอัตโนมัติ ทำความสะอาดข้อมูล สรุป และสร้าง SEO content ก่อน publish
PIPELINE FLOW
ขั้นตอนการทำงานตั้งแต่ต้นจนถึง homes.kanawut.com
🌐
เว็บไซต์ ต้นทาง
SOURCE
🤖
Scraper Docker
COLLECT
📦
Raw Data
POSTGRES
🧠
AI Clean
CLAUDE CLI
Structured
NORMALIZED
📝
AI Summary
SEO READY
👀
Review
APPROVE
🏠
homes.kanawut.com
LIVE
หลักการทำงาน: ระบบดึงข้อมูลจากเว็บไซต์ธนาคาร NPA และแพลตฟอร์มอสังหาฯ → เก็บเป็น raw data ใน PostgreSQL → ผ่าน AI pipeline ที่ใช้ Claude CLI ทำความสะอาดและสรุปข้อมูล → ทีมงาน review และ approve → publish ขึ้น homes.kanawut.com โดยอัตโนมัติ ทั้งหมดนี้จัดการผ่าน SCC dashboard
02 · FLEET OVERVIEW

Scraper Fleet — ภาพรวมทั้ง 16 ตัว

ระบบมี scraper ทั้งหมด 16 ตัว แบ่งเป็น 3 กลุ่ม: NPA Banks (ทรัพย์สินรอขายธนาคาร), Listing Sites (แพลตฟอร์มอสังหาฯ), และ Review & Content (รีวิวโครงการและข่าวสาร)

NPA
npa-bam
BAM
15,891 listings
บริษัทบริหารสินทรัพย์กรุงเทพพาณิชย์ — ทรัพย์ NPL จากธนาคารพาณิชย์ ครอบคลุมทั่วประเทศ
NPA
npa-ghb
GHB
25,163 listings
ธนาคารอาคารสงเคราะห์ — ฐานข้อมูลใหญ่ที่สุดในระบบ เน้นที่อยู่อาศัยราคาประหยัดถึงกลาง
NPA
npa-gsb
GSB
6,135 listings
ธนาคารออมสิน — ทรัพย์รอขายประเภทที่ดินและอาคารพาณิชย์เป็นหลัก
NPA
npa-kbank
KBank
14,303 listings
ธนาคารกสิกรไทย — ทรัพย์ NPA ครบทุกประเภท บ้าน คอนโด ที่ดิน อาคารพาณิชย์
NPA
npa-kkpfg
KKPFG
1,791 listings
เกียรตินาคินภัทร — ทรัพย์จากธนาคารและบริษัทในเครือ ส่วนใหญ่เป็นอสังหาฯ เชิงพาณิชย์
NPA
npa-krungsri
Krungsri
1,723 listings
ธนาคารกรุงศรีอยุธยา — ทรัพย์ NPA ในราคาตลาดที่น่าสนใจ กระจายทั่วภาคต่าง ๆ
NPA
npa-krungthai
Krungthai
2,957 listings
ธนาคารกรุงไทย — ทรัพย์ NPA ครบทุกจังหวัด เน้นที่อยู่อาศัยและที่ดินเกษตรกรรม
NPA
npa-sam
SAM
4,874 listings
บริษัทบริหารสินทรัพย์สุขุมวิท — เน้นสินทรัพย์คุณภาพดีจาก FIDF ราคาเริ่มต้นสูง
NPA
npa-scb
SCB
3,845 listings
ธนาคารไทยพาณิชย์ — ทรัพย์ NPA คุณภาพดี ราคาตลาด ทั้งที่อยู่อาศัยและเชิงพาณิชย์
NPA
npa-swpamc
SWPAMC
1,655 listings
บริษัทบริหารสินทรัพย์ศรีวิทย์ — สินทรัพย์ NPL เฉพาะทาง ราคาต่ำกว่าตลาด
LISTING
npa-livinginsider
LivingInsider
20,775 listings
แพลตฟอร์มซื้อ-ขาย-เช่าอสังหาริมทรัพย์ไทย ครอบคลุมทั้งโครงการใหม่และมือสอง ข้อมูลอัปเดตสม่ำเสมอ
LISTING
npa-ddproperty
DDProperty
protected
แพลตฟอร์มอสังหาฯ ขนาดใหญ่ — ปัจจุบันถูกป้องกันด้วย Cloudflare ระบบ scrape ยังอยู่ระหว่างพัฒนา bypass method
CONTENT
home-coth
home.co.th
6,760 โครงการ
ดึงรีวิวโครงการและข้อมูลโครงการอสังหาฯ จาก home.co.th ครบทั้งโครงการบ้านเดี่ยว ทาวน์เฮ้าส์ และคอนโด
CONTENT
home-coth-scanner
home.co.th Scanner
AUTO discovery
ค้นหา URL โครงการใหม่จาก home.co.th โดยอัตโนมัติ ส่งให้ home-coth scraper ดึงข้อมูลต่อ ทำงานเป็นรอบ
CONTENT
fb-page
Facebook
SOCIAL feed
ดึงโพสต์จาก Facebook Pages ของโครงการอสังหาฯ และตัวแทนขาย ใช้เป็นข้อมูลเสริมและติดตามข่าวสาร
CONTENT
rss-feed
RSS/Atom Feed
NEWS aggregator
ดึงข่าวจาก RSS feeds ของเว็บไซต์อสังหาฯ ชั้นนำ เช่น ThinkOfLiving, TerraBKK, PostToday Property ฯลฯ
รวมทั้งหมด: 16 scrapers — NPA Banks 10 ตัว + Listing Sites 2 ตัว + Review & Content 4 ตัว | ข้อมูลรวม 99,112+ listings ใน database | GHB มีข้อมูลมากที่สุด (25,163 listings) รองลงมา BAM (15,891) และ KBank (14,303)
03 · SCRAPERS PAGE UI

หน้า Scrapers — มีอะไรบ้าง?

หน้า /scrapers คือ command center หลักสำหรับจัดการ scraper ทั้งหมด เข้าถึงได้ที่ http://localhost:3030/scrapers ประกอบด้วย 3 ส่วนหลัก

ส่วนที่ 1 — HEADER KPIs (5 ตัวชี้วัด)
📋
847
Total Jobs (24h)
จำนวน jobs ที่รันใน 24 ชั่วโมงที่ผ่านมา
98.2%
Success Rate
เปอร์เซ็นต์ jobs ที่สำเร็จ — ถ้าต่ำกว่า 95% ให้ตรวจสอบ
⏱️
4.2m
Avg Duration
เวลาเฉลี่ยต่อ job — ถ้านานเกินปกติให้ตรวจ timeout
🟢
3
Active Now
จำนวน scraper ที่กำลังทำงานอยู่ตอนนี้
🔗
4,312
URLs Tracked
จำนวน URL ที่ระบบติดตามและดึงข้อมูลอยู่
ส่วนที่ 2 — SCRAPER CARDS

แต่ละ scraper แสดงเป็น card พร้อมข้อมูลสำคัญ ตัวอย่าง card ของ BAM scraper:

npa-bam · BAM-SCRAPER-V2
BAM — บริษัทบริหารสินทรัพย์กรุงเทพพาณิชย์
IDLE
12
Jobs Today
100%
Success Rate
3.8m
Avg Duration
2h ago
Last Run
สิ่งที่แสดงใน scraper card:

ชื่อ scraper + Docker image — ชื่อเต็มและ image ที่ใช้รัน
Status pill — สีเขียว IDLE (พร้อมใช้), สีน้ำเงิน RUN (กำลังทำงาน), สีแดง ERROR (ล้มเหลว), สีเทา PAUSED (ปิดชั่วคราว)
Jobs Today — จำนวน jobs ที่รันวันนี้
Success rate — อัตราสำเร็จ ถ้าต่ำกว่า 90% ให้ตรวจสอบ
Last Run — ครั้งสุดท้ายที่รัน นานเกินไปอาจหมายความว่า schedule ผิดปกติ
ปุ่ม Details — กดเพื่อดูรายละเอียด jobs, logs, และ settings
ส่วนที่ 3 — STATUS PILLS
IDLE
พร้อมใช้งาน
Scraper ว่างอยู่ พร้อมรับ job ใหม่ได้ทันที ไม่มีปัญหา
RUN
กำลังทำงาน
Scraper กำลังดึงข้อมูลอยู่ ห้ามหยุดกลางคัน รอให้เสร็จก่อน
ERROR
เกิดข้อผิดพลาด
Job ล่าสุดล้มเหลว กด Details เพื่อดู error log และวินิจฉัยปัญหา
PAUSED
ปิดชั่วคราว
Scraper ถูก disable ไว้ ไม่รับ job ใหม่ ต้องเปิดใช้งานเอง
04 · HOW TO USE

วิธีใช้งาน — Step-by-Step Guide

ขั้นตอนการใช้งาน SCC scrapers ตั้งแต่การดูสถานะ fleet สั่ง scrape ดูผลลัพธ์ ติดตาม pipeline จนถึงการ review และ publish ขึ้น homes.kanawut.com

1

ดูสถานะ Fleet

เปิด browser ไปที่ http://localhost:3030/scrapers

  • ดู KPIs ด้านบน — ถ้า Success Rate ต่ำกว่า 95% ให้ตรวจสอบทันที
  • สแกน scraper cards — สีเขียว (IDLE) = ปกติ, สีแดง (ERROR) = มีปัญหา
  • ดู Active Now — ถ้ามีตัวที่ RUN นานผิดปกติ อาจ timeout
  • ดู Last Run — scraper ไหนไม่ได้รันนานเกินกำหนดให้ตรวจสอบ schedule
ตรวจสอบสถานะผ่าน API
# ดูสถานะ scrapers ทั้งหมด
curl http://localhost:3011/scrapers

# ดูสถานะ health ของ API
curl http://localhost:3011/health
2

สั่ง Scrape (ดึงข้อมูล)

มี 2 วิธีในการสั่ง scrape:

  • วิธีที่ 1 — ผ่าน Dashboard: ไปที่หน้า URLs → เลือก URL ที่ต้องการ → กดปุ่ม "Scrape Now"
  • วิธีที่ 2 — ผ่าน API: ส่ง POST request ตามด้านล่าง
สั่ง scrape ผ่าน API
# สั่ง scrape BAM
curl -X POST http://localhost:3011/urls/scrape-now \
  -H "Content-Type: application/json" \
  -d '{"scraperId":"npa-bam","url":"https://bam-els-sync-api-prd.bam.co.th/api/v1/properties"}'

# สั่ง scrape GHB
curl -X POST http://localhost:3011/urls/scrape-now \
  -H "Content-Type: application/json" \
  -d '{"scraperId":"npa-ghb","url":"https://www.ghbank.co.th/npa"}'
3

ดูผลลัพธ์ Jobs

หลังสั่ง scrape ไปแล้ว ติดตามสถานะผ่านหน้า Jobs

  • ไปที่ http://localhost:3030/jobs
  • สถานะ job ไหลไปตามลำดับ: queuedrunningok หรือ failed
  • กดดู job detail เพื่อเห็น raw output, duration, errors และ stack trace
  • Job ที่ failed จะแสดง error message และสามารถ retry ได้
ดู jobs ผ่าน API
# ดู jobs ล่าสุด 10 รายการ
curl "http://localhost:3011/jobs?limit=10"

# ดู jobs ของ scraper เฉพาะตัว
curl "http://localhost:3011/jobs?scraperId=npa-bam&limit=5"

# ดูเฉพาะ jobs ที่ failed
curl "http://localhost:3011/jobs?status=failed&limit=10"
4

ดู Pipeline

หลัง scrape สำเร็จ ข้อมูลจะเข้า pipeline อัตโนมัติ ไม่ต้องสั่งเอง

  • Pipeline ทำงาน: raw data → AI Clean → AI Summary → ready for review
  • ดูสถานะ pipeline ที่ http://localhost:3030/pipeline
  • แต่ละ stage ใช้ Claude CLI ประมวลผล — อาจใช้เวลาขึ้นอยู่กับปริมาณข้อมูล
  • property ที่ AI ประมวลผลเสร็จแล้วจะเข้าสู่ Review queue
ดู pipeline status
# ดู pipelines ทั้งหมด
curl http://localhost:3011/pipelines

# ดู pipeline ที่กำลัง active
curl "http://localhost:3011/pipelines?status=active"
5

Review & Publish

ขั้นสุดท้ายก่อน property จะขึ้น homes.kanawut.com

  • ไปที่ http://localhost:3030/review เพื่อดู property ที่ AI ทำเสร็จแล้ว
  • Approve — property จะเข้าระบบ homes.kanawut.com ทันที
  • Reject — property จะถูกลบออกจาก queue ไม่ publish
  • ตรวจสอบข้อมูลที่ AI สรุปมา เช่น ราคา ที่ตั้ง ประเภท ก่อน approve
  • Publisher จัดการ sync ข้อมูลไปยัง homes DB (PostGIS port 5437)
เคล็ดลับ: AI จะสรุป property description เป็นภาษาไทยที่อ่านง่าย พร้อม SEO metadata ตรวจสอบว่าข้อมูลถูกต้องก่อน approve เสมอ โดยเฉพาะราคาและที่ตั้ง
05 · ARCHITECTURE

สถาปัตยกรรมระบบ — SCC System Design

SCC ออกแบบแบบ microservice โดยมี Next.js เป็น UI, Fastify เป็น REST API, PostgreSQL เป็น primary DB, Redis เป็น job queue, BullMQ เป็น worker processor และ Docker containers สำหรับ scrapers

┌──── SCC Command Center ──────────────────────────────────────────────┐
│                                                                        │
│  UI (Next.js :3030)  ←→  API (Fastify :3011)                          │
│         ↕                          ↕                                  │
│    Postgres (:5436)           Redis (:6380)                          │
│    (scc_boot DB — Drizzle ORM)   (BullMQ Job Queue)                 │
│         ↕                          ↕                                  │
│    Worker Agent            Docker Containers                          │
│    (BullMQ processor)      (npa-bam, npa-ghb, home-coth, ...)        │
│         ↕                                                              │
│    AI Pipeline (Claude CLI)                                           │
│    Clean → Normalize → Summary → SEO                                 │
│         ↕                                                              │
│    Publisher                                                          │
│    (Review → Approve → homes.kanawut.com)                           │
│         ↕                                                              │
│    Homes DB (PostGIS :5435)                                           │
│    (spatial queries, GIS data, property listings)└────────────────────────────────────────────────────────────────────┘
COMPONENTS
Next.js UI (:3030)
FRONTEND DASHBOARD
Dashboard หลักสำหรับ monitor scrapers, jobs, pipeline และ review property ก่อน publish รองรับ real-time updates
🚀
Fastify API (:3011)
REST API BACKEND
REST API สำหรับ scrapers, jobs, URLs, pipelines และ publisher TypeScript + Fastify เร็วและ lightweight
🗄️
PostgreSQL (:5436)
SCC DATABASE
Database หลักของ SCC เก็บ scrapers config, jobs history, URLs, raw data และ pipeline results ใช้ Drizzle ORM
Redis (:6380)
JOB QUEUE
BullMQ job queue — รับ scrape jobs จาก API ส่งให้ Worker ประมวลผล รองรับ retry, priority และ delayed jobs
🔧
Worker Agent
JOB PROCESSOR
BullMQ Worker ที่รัน scraper Docker containers รับ jobs จาก Redis queue ส่ง status กลับ เก็บ logs ใน Postgres
🧠
AI Pipeline
CLAUDE CLI
ใช้ Claude CLI ประมวลผล raw data ทำความสะอาด normalize และสร้าง SEO description ภาษาไทยอัตโนมัติ
🏠
PostGIS (:5435)
HOMES DATABASE
Database สำหรับ homes.kanawut.com รองรับ GIS/spatial queries ค้นหาอสังหาฯ ตาม location ได้แม่นยำ
DATA FLOW
ขั้นตอน Component Input Output สถานะ
01 · TRIGGER API / Scheduler scraper ID + URL Job ID ใน Redis queue อัตโนมัติ
02 · SCRAPE Worker + Docker URL target Raw JSON/HTML data Docker
03 · STORE PostgreSQL Raw data raw_properties table อัตโนมัติ
04 · AI CLEAN Claude CLI Raw property data Normalized JSON AI
05 · AI SUMMARY Claude CLI Normalized data SEO description (Thai) AI
06 · REVIEW SCC Dashboard AI-processed property Approved / Rejected Manual
07 · PUBLISH Publisher → PostGIS Approved property Live on homes.kanawut.com อัตโนมัติ
06 · SERVICE PORTS

Service Ports — ตารางพอร์ตทั้งหมด

SCC ใช้หลาย services พร้อมกัน แต่ละ service รันบน port ที่แตกต่างกัน รู้ port ถูกต้องช่วยให้ debug และ connect ได้เร็วขึ้น

Port Service Tech Stack คำอธิบาย สถานะ
3011
SCC API Fastify + TypeScript REST API หลักสำหรับ scrapers, jobs, URLs, pipelines ทุก endpoint ใช้ port นี้ Core
3030
SCC UI Next.js + React Dashboard หลัก เปิดใน browser เพื่อจัดการระบบ scraper, job monitoring, review Core
5436
scc-postgres-boot PostgreSQL + Drizzle Database หลักของ SCC เก็บ scraper configs, jobs, raw data, pipeline results ทั้งหมด Core
5435
scc-homes-pg PostgreSQL + PostGIS Database สำหรับ homes.kanawut.com รองรับ spatial/GIS queries เก็บ property listings ที่ approved Core
6380
scc-redis Redis + BullMQ Job queue ระหว่าง API กับ Worker รับ scrape jobs จาก API ส่งให้ Worker ดำเนินการ Core
วิธีตรวจสอบว่า services ทำงานหรือไม่:
เปิด terminal แล้วรัน docker ps เพื่อดู containers ทั้งหมดที่กำลังรัน หรือรัน curl http://localhost:3011/health เพื่อตรวจสอบ API ถ้า response เป็น {"status":"ok"} แสดงว่า API ทำงานปกติ
DOCKER COMMANDS
ตรวจสอบ Docker containers
# ดู containers ทั้งหมดที่รันอยู่
docker ps

# ดู containers ที่เกี่ยวกับ SCC
docker ps --filter name=scc

# Start container ที่หยุดทำงาน
docker start scc-postgres-boot
docker start scc-redis
docker start scc-homes-pg

# ดู logs ของ container
docker logs scc-postgres-boot --tail 50
docker logs scc-redis --tail 20
07 · QUICK REFERENCE

คำสั่งที่ใช้บ่อย — Quick Reference

รวมคำสั่ง curl และ bash ที่ใช้บ่อยในการจัดการ SCC แบ่งตาม category เพื่อหาได้ง่าย คัดลอกและใช้ได้เลย

🏥 ตรวจสอบสุขภาพระบบ
# ตรวจ API health
curl http://localhost:3011/health

# ตรวจ scrapers ทั้งหมด
curl http://localhost:3011/scrapers

# ตรวจ Redis connection
docker exec scc-redis redis-cli ping
📋 จัดการ Jobs
# ดู jobs ล่าสุด
curl "http://localhost:3011/jobs?limit=10"

# ดู jobs ที่ failed
curl "http://localhost:3011/jobs?status=failed"

# ดู jobs ของ scraper เฉพาะ
curl "http://localhost:3011/jobs?scraperId=npa-bam"
🚀 สั่ง Scrape ทันที
# สั่ง scrape BAM
curl -X POST http://localhost:3011/urls/scrape-now \
  -H "Content-Type: application/json" \
  -d '{"scraperId":"npa-bam","url":"https://..."}'

# สั่ง scrape GHB
curl -X POST http://localhost:3011/urls/scrape-now \
  -H "Content-Type: application/json" \
  -d '{"scraperId":"npa-ghb","url":"https://..."}'
🔄 Pipeline Status
# ดู pipelines ทั้งหมด
curl http://localhost:3011/pipelines

# ดู active pipelines
curl "http://localhost:3011/pipelines?status=active"

# ดู completed pipelines
curl "http://localhost:3011/pipelines?status=done"
🔗 จัดการ URLs
# ดู URLs ทั้งหมด
curl http://localhost:3011/urls

# ดู URLs ของ scraper
curl "http://localhost:3011/urls?scraperId=npa-bam"

# ดู URL stats
curl "http://localhost:3011/urls/stats"
▶️ Start Services
# Start ทุก service (recommended)
bash scripts/startup.sh

# Start worker เอง
cd worker && bun run dev

# Start API + UI
cd api && bun run dev
cd ui && bun run dev
🗄️ Database Quick Check
# Connect SCC database
psql -h localhost -p 5436 -U postgres scc_boot

# นับ properties ใน SCC DB
docker exec scc-postgres-boot psql -U postgres \
  -c "SELECT scraper_id, COUNT(*) FROM raw_properties GROUP BY scraper_id;"

# Connect Homes database
psql -h localhost -p 5435 -U postgres homes
📄 ดู Logs
# ดู logs API server
docker logs scc-api --tail 100 -f

# ดู logs worker
docker logs scc-worker --tail 50

# ดู logs postgres
docker logs scc-postgres-boot --tail 30
08 · TROUBLESHOOTING

แก้ปัญหา — Troubleshooting Guide

ปัญหาที่พบบ่อยในการใช้งาน SCC พร้อมสาเหตุและวิธีแก้ไข ถ้าไม่พบปัญหาของคุณในนี้ ให้ดู logs ของ service ที่เกี่ยวข้อง

🔴 API 500 — ECONNREFUSED
สาเหตุ: Postgres ไม่ทำงาน หรือ connection string ผิด
docker start scc-postgres-boot
curl http://localhost:3011/health
🔴 Jobs ไม่ process — queue ค้าง
สาเหตุ: Worker offline หรือ Redis ไม่ทำงาน
cd worker && bun run dev
docker start scc-redis
🔴 Redis connection refused
สาเหตุ: Redis container หยุดทำงาน หรือ port 6380 ถูก block
docker start scc-redis
docker exec scc-redis redis-cli ping
🟡 Scraper failed — Docker error
สาเหตุ: Docker image ไม่มี หรือ build ไม่สำเร็จ
bun run build:scraper:npa-bam
docker images | grep scraper
🟡 Login ไม่ได้ — auth.js block
สาเหตุ: ใส่ password ผิด หรือ auth.js ไม่โหลด
ใช้ password: boom2026
ตรวจสอบ auth.js โหลดใน browser console
🟡 AI Pipeline ไม่ทำงาน
สาเหตุ: Claude CLI ไม่ได้ login หรือ API key หมด
claude --version
claude auth login
🟡 UI แสดง "Cannot connect to API"
สาเหตุ: SCC API (:3011) ไม่รัน หรือ CORS error
cd api && bun run dev
curl http://localhost:3011/health
🟡 Homes DB ไม่ sync
สาเหตุ: scc-homes-pg container ไม่รัน หรือ port 5435 ปิด
docker start scc-homes-pg
psql -h localhost -p 5435 -U postgres homes
🔵 Scraper ช้าผิดปกติ
สาเหตุ: เว็บต้นทาง rate limit หรือ Docker resource ไม่พอ
ดู job duration ใน dashboard
docker stats | grep scraper
🔵 DDProperty ไม่มีข้อมูล
สาเหตุ: Cloudflare protection บล็อก scraper
ปัญหานี้ทราบอยู่แล้ว
อยู่ระหว่างพัฒนา bypass method
🔵 Drizzle migration error
สาเหตุ: Schema ไม่ sync กับ database ต้องรัน migration
cd api && bun run db:migrate
bun run db:push
🔵 บันทึก Error ไม่ได้
สาเหตุ: Disk เต็ม หรือ volume mount ผิด
df -h
docker system df
docker system prune
EMERGENCY RESTART
รีสตาร์ท services ทั้งหมด (เมื่อทุกอย่างพัง)
# 1. หยุด services ทั้งหมด
docker stop scc-postgres-boot scc-redis scc-homes-pg

# 2. Start Docker containers ใหม่
docker start scc-postgres-boot scc-redis scc-homes-pg

# 3. รอ 5 วินาทีให้ DB พร้อม
sleep 5

# 4. ตรวจสอบ
curl http://localhost:3011/health

# 5. หรือใช้ startup script ทั้งหมด
bash scripts/startup.sh
Tips สำหรับ Debug: เมื่อพบปัญหา ให้เริ่มจากการดู logs ก่อน — docker logs <container> --tail 50 แล้วดู error message จริง อย่า guess สาเหตุ ให้ root cause ก่อนแก้ และอย่าแก้หลาย service พร้อมกัน ให้แก้ทีละอย่างและทดสอบก่อน
UI LAYOUT DESCRIPTION
คำอธิบาย UI Layout ของหน้า /scrapers
Header Bar: ด้านบนสุดแสดง navigation tabs สำหรับ Scrapers, Jobs, URLs, Pipeline และ Publisher แต่ละ tab มีสัญลักษณ์และตัวเลข count แสดงสถานะ

KPI Dashboard: แถวตัวเลขสำคัญ 5 ตัว — Total Jobs, Success Rate, Avg Duration, Active Now, URLs Tracked แสดงด้วยตัวเลขใหญ่สีส้ม-ทอง บน dark background

Filter Bar: ด้านบนของ scraper list มี filter สำหรับแยกตาม category (All, NPA, Listing, Content) และ status (All, Idle, Running, Error, Paused)

Scraper Grid: แสดง scraper cards เรียงเป็น grid 3 คอลัมน์ (desktop) แต่ละ card มี scraper name, status pill, KPIs ย่อย และปุ่ม Details

Color Coding: สีเขียว = IDLE/success, สีส้ม = กำลังรัน, สีแดง = error, สีเทา = paused — ดูสถานะ fleet ได้ทันทีด้วย visual scan