[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81614":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":10,"openIssues":12,"contributorsCount":12,"subscribersCount":12,"size":12,"stars1d":12,"stars7d":12,"stars30d":12,"stars90d":12,"forks30d":12,"starsTrendScore":12,"compositeScore":13,"rankGlobal":8,"rankLanguage":8,"license":14,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":15,"hasPages":15,"topics":17,"createdAt":8,"pushedAt":8,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":12,"starSnapshotCount":12,"syncStatus":21,"lastSyncTime":22,"discoverSource":23},81614,"GoldSignal","bblank09\u002FGoldSignal","bblank09",null,"TypeScript",22,7,0,39.71,"MIT License",false,"main",[],"2026-06-12 04:01:34","# ◈ GoldSignal — AI-Powered Gold Trading Dashboard\n\n> ระบบ Dashboard วิเคราะห์ทองคำ (XAU\u002FUSD) ระดับ Institutional-grade แบบ Real-time  \n> · Next.js 14 · Supabase · Upstash Redis\n\n---\n\n## ⚡ Quick Start — ดูหน้า UI ได้ทันที (ไม่ต้องมี API key)\n\n**Mac \u002F Linux:**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbblank09\u002FGoldSignal.git\ncd GoldSignal\nnpm install\ncp .env.local.example .env.local\nnpm run dev\n```\n\n**Windows (cmd.exe):**\n```cmd\ngit clone https:\u002F\u002Fgithub.com\u002Fbblank09\u002FGoldSignal.git\ncd GoldSignal\nnpm install\ncopy .env.local.example .env.local\nnpm run dev\n```\n\nเปิด **http:\u002F\u002Flocalhost:3000** — จะเห็น Dashboard พร้อมข้อมูลจำลองทันที  \nหากต้องการเปิดใช้ข้อมูลจริง → ดู [หัวข้อ 10 Live Mode](#10-วิธีใช้งาน--live-mode)\n\n---\n\n## 📋 สารบัญ\n\n1. [บทนำและที่มา](#1-บทนำและที่มา)\n2. [ความสำคัญและจุดประสงค์](#2-ความสำคัญและจุดประสงค์)\n3. [ภาพรวมระบบ](#3-ภาพรวมระบบ)\n4. [องค์ประกอบของระบบ](#4-องค์ประกอบของระบบ)\n   - 4.1 [Frontend — UI Layer](#41-frontend--ui-layer)\n   - 4.2 [Backend — API Layer](#42-backend--api-layer)\n   - 4.3 [Data Pipeline — Cron Jobs](#43-data-pipeline--cron-jobs)\n   - 4.4 [AI Analysis Engine](#44-ai-analysis-engine)\n   - 4.5 [Database — Supabase](#45-database--supabase)\n   - 4.6 [Cache — Upstash Redis](#46-cache--upstash-redis)\n5. [แหล่งข้อมูลและความถี่](#5-แหล่งข้อมูลและความถี่)\n6. [โครงสร้างไฟล์](#6-โครงสร้างไฟล์)\n7. [ข้อกำหนดและ API Keys](#7-ข้อกำหนดและ-api-keys)\n8. [วิธีติดตั้ง (Local Development)](#8-วิธีติดตั้ง-local-development)\n9. [วิธีใช้งาน — Mock Mode](#9-วิธีใช้งาน--mock-mode)\n10. [วิธีใช้งาน — Live Mode](#10-วิธีใช้งาน--live-mode)\n11. [การ Deploy บน Vercel](#11-การ-deploy-บน-vercel)\n12. [คู่มือการใช้งาน Dashboard](#12-คู่มือการใช้งาน-dashboard)\n13. [ความเสี่ยงและข้อจำกัด](#13-ความเสี่ยงและข้อจำกัด)\n14. [ข้อควรระวัง](#14-ข้อควรระวัง)\n15. [การแก้ไขปัญหาเบื้องต้น](#15-การแก้ไขปัญหาเบื้องต้น)\n16. [แนวทางพัฒนาต่อ](#16-แนวทางพัฒนาต่อ)\n\n---\n\n## 1. บทนำและที่มา\n\nนักเทรดทองคำมักต้องเปิดหน้าต่างหลายจอพร้อมกันเพื่อรวบรวมข้อมูลที่ต้องการตัดสินใจ ได้แก่ กราฟราคาจาก TradingView, ข่าวจาก Forexlive หรือ Reuters, ดัชนี DXY จาก Bloomberg, อัตราผลตอบแทนพันธบัตร (Yields), VIX, ราคาน้ำมัน และอื่นๆ อีกมาก กระบวนการนี้กินเวลาและเกิดข้อผิดพลาดจากการตีความข้อมูลที่ไม่ครบถ้วนได้ง่าย\n\n**GoldSignal** ถูกสร้างขึ้นเพื่อแก้ปัญหานี้ โดยเป็นระบบ Dashboard เพียงหน้าเดียวที่รวบรวม ประมวลผล และนำเสนอข้อมูลทุกอย่างที่ส่งผลต่อราคาทองคำ ผ่านการวิเคราะห์อัตโนมัติด้วย AI ตลอด 24 ชั่วโมง\n\n---\n\n## 2. ความสำคัญและจุดประสงค์\n\n### ปัญหาที่แก้ไข\n\n| ปัญหาเดิม | สิ่งที่ GoldSignal ทำ |\n|---|---|\n| ต้องเปิดหลายแท็บเพื่อรวบรวมข้อมูล | รวมทุกอย่างในหน้าเดียว |\n| อ่านข่าวเองใช้เวลานาน | AI วิเคราะห์ข่าวและสรุปผลกระทบต่อราคาทองอัตโนมัติ |\n| ต้องคอย refresh ด้วยตนเอง | ระบบอัปเดตข้อมูลทุก 5–30 นาที อัตโนมัติ |\n| ไม่มีจุดเข้าซื้อ\u002Fขายที่ชัดเจน | AI สร้าง Buy\u002FSell Zones พร้อม Stop Loss และ Target |\n| ข้อมูล Macro กระจายหลายแหล่ง | ดึง DXY, Yields, VIX, SPX, Oil พร้อมบอกผลต่อทอง |\n\n### จุดประสงค์หลัก\n\n1. **Single Source of Truth** — รวมข้อมูล Technical + Fundamental + Sentiment ในที่เดียว\n2. **AI-Driven Analysis** — ใช้ Claude AI อ่านข่าวและสรุปเป็นสัญญาณการเทรด\n3. **Fully Autonomous** — Cron jobs ทำงานเองตลอดเวลา ผู้ใช้แค่เปิดมาดู\n\n---\n\n## 3. ภาพรวมระบบ\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    GoldSignal Architecture                   │\n├─────────────────┬───────────────────────────────────────────┤\n│   Data Sources  │  goldapi.io · Yahoo Finance · RSS Feeds   │\n└────────┬────────┘                                           │\n         │ fetch every 5–30 min (Vercel Cron)                 │\n┌────────▼────────┐     ┌──────────────────┐                  │\n│  Next.js API    │────▶│ Anthropic Claude  │ AI analysis      │\n│  Route Handlers │     │ (claude-sonnet)   │                  │\n└────────┬────────┘     └──────────────────┘                  │\n         │                                                     │\n    ┌────▼────┐    ┌──────────────┐                           │\n    │ Supabase│    │ Upstash Redis│ ← price cache (10 min)    │\n    │ (DB)    │    │ (Cache)      │                           │\n    └────┬────┘    └──────┬───────┘                           │\n         │                │                                    │\n┌────────▼────────────────▼────────────────────────────────── │\n│              Next.js Frontend (App Router)                   │\n│  Feed Tab · Signals Tab · Chart Tab · Sidebar               │\n│  SSE Price Stream · Lightweight Charts · Framer Motion       │\n└─────────────────────────────────────────────────────────────┘\n```\n\n**Stack หลัก**\n\n| ชั้น | เทคโนโลยี |\n|---|---|\n| Framework | Next.js 14 App Router + TypeScript |\n| UI | Tailwind CSS + shadcn\u002Fui + Framer Motion |\n| Chart | Lightweight Charts v4 (self-hosted, no TradingView) |\n| AI | Anthropic Claude (`claude-sonnet-4-5`) |\n| Database | Supabase (PostgreSQL + RLS) |\n| Cache | Upstash Redis (REST API) |\n| Deploy | Vercel (Serverless + Cron) |\n\n---\n\n## 4. องค์ประกอบของระบบ\n\n### 4.1 Frontend — UI Layer\n\nระบบ UI แบ่งออกเป็น 3 แท็บหลักและ Sidebar ซ้ายมือ\n\n#### Sidebar (แสดงตลอดเวลา)\n- **GoldPriceTicker** — ราคา XAU\u002FUSD แบบ Real-time พร้อม Bid\u002FAsk, Range bar\n- **MacroBar** — ตาราง DXY · US10Y · US2Y · VIX · SPX · WTI พร้อมทิศทางผลต่อทอง\n- **DailyBiasCard** — สรุปทิศทางวันนี้ (Bullish \u002F Bearish \u002F Neutral) พร้อม Strength bar\n- **SentimentGauge** — สัดส่วน Bull\u002FBear\u002FNeutral จากการวิเคราะห์ข่าวทั้งหมด\n- **NewsCategoryList** — กรองข่าวตามหมวด (Fed, DXY, Inflation, Geopolitics ฯลฯ)\n\n#### แท็บ Today (News Feed)\n- แสดงข่าวที่ AI วิเคราะห์แล้ว เรียงตาม Impact Score\n- แต่ละข่าวมี: Impact Badge, Sentiment Badge, Bull%, Expected Move\n- กดขยายดู: AI Summary, Action Points, Bull\u002FBase\u002FBear Scenarios, Key Levels, Source URL ↗\n\n#### แท็บ Week (Economic Calendar)\n- ปฏิทินเศรษฐกิจ 30 วันข้างหน้า\n- แสดง Forecast, Previous, Actual (เมื่อประกาศแล้ว)\n- สีตาม Importance: HIGH (แดง) · MEDIUM (เหลือง) · LOW (เทา)\n\n#### แท็บ Taxonomy\n- อธิบายปัจจัย 6 ตัวที่ขับเคลื่อนราคาทอง (Fed, DXY, Yields, Inflation, Geopolitics, Central Bank)\n- แสดง Live reading จาก Macro snapshot\n- แต่ละปัจจัยมี: กลไก ▲▼, Historical moves, Current signal\n\n#### แท็บ Signals\n- **Prediction Strip** — Target price ทุก timeframe (4H, 1D, 1W, 1M, 3M, 6M, 12M)\n- **Buy\u002FSell Zone Panels** — แนวรับ-แนวต้าน พร้อม Stop Loss, Target, Confidence\n- **Weekly Outlook** — สรุปมุมมองสัปดาห์ พร้อม Key Events\n- **Risk Factors** — ปัจจัยสนับสนุน vs ปัจจัยเสี่ยง\n\n#### แท็บ Chart\n- Candlestick chart จากข้อมูล OHLCV จริง (Yahoo Finance `GC=F`)\n- **AI Support\u002FResistance lines** — เส้นแนวรับ\u002Fแนวต้านที่ดึงมาจาก `article_analysis.key_levels` ทุกบทความ\n- **Buy\u002FSell zone lines** — เส้นหนาจาก daily signal (ไม่ใช่ indicator)\n- **News markers** — ▲▼ บน candle วันที่มีข่าว High Impact\n- Volume histogram ด้านล่าง\n- Timeframe: 15m · 1H · 4H · 1D · 1W\n\n---\n\n### 4.2 Backend — API Layer\n\n| Endpoint | หน้าที่ | Cache |\n|---|---|---|\n| `GET \u002Fapi\u002Fprice` | ราคาทองล่าสุด (Redis → DB) | Redis 10 นาที |\n| `GET \u002Fapi\u002Fprice\u002Fstream` | SSE stream ราคา real-time ทุก 10 วินาที | — |\n| `GET \u002Fapi\u002Fmacro` | Macro snapshot (Redis → DB → Live fetch) | Redis 6 นาที |\n| `GET \u002Fapi\u002Fnews` | บทความพร้อม AI analysis | — |\n| `GET \u002Fapi\u002Fnews\u002F[id]\u002Fanalysis` | Analysis ของบทความเดี่ยว | — |\n| `GET \u002Fapi\u002Fsignal\u002Fdaily` | Daily signal ประจำวัน | — |\n| `GET \u002Fapi\u002Fcalendar` | Economic events (DB → Seed fallback) | — |\n| `GET \u002Fapi\u002Fchart\u002Fcandles` | OHLCV candles จาก Yahoo Finance | Redis 5 นาที |\n\n---\n\n### 4.3 Data Pipeline — Cron Jobs\n\n| Endpoint | หน้าที่ | ความถี่ |\n|---|---|---|\n| `\u002Fapi\u002Fcron\u002Fprice-tick` | ดึงราคาทอง → บันทึก DB + Redis | ทุก 5 นาที |\n| `\u002Fapi\u002Fcron\u002Fmacro-snapshot` | ดึง DXY\u002FYields\u002FVIX → บันทึก DB + Redis | ทุก 15 นาที |\n| `\u002Fapi\u002Fcron\u002Ffetch-news` | ดึงข่าว RSS 6 แหล่ง → บันทึก DB | ทุก 30 นาที |\n| `\u002Fapi\u002Fcron\u002Fanalyze-news` | ส่งข่าวให้ Claude วิเคราะห์ (batch 5) | ทุก 30 นาที |\n| `\u002Fapi\u002Fcron\u002Fdaily-signal` | Claude สังเคราะห์ signal ประจำวัน | 06:00 UTC ทุกวัน |\n| `\u002Fapi\u002Fcron\u002Fcalendar-sync` | อัปเดต economic calendar | ทุกวันจันทร์ |\n\nทุก cron ต้องใช้ Bearer token (`CRON_SECRET`) ในการเรียก\n\n---\n\n### 4.4 AI Analysis Engine\n\n**Article Analysis** (`\u002Flib\u002Fservices\u002Fnews-analyzer.ts`)\n\nClaude รับบทความแต่ละชิ้นและคืน JSON ที่มี:\n\n```\nsentiment        → Bullish \u002F Bearish \u002F Neutral\nimpact_score     → 0–10 (8–10 = HIGH, 5–7 = MEDIUM, 0–4 = LOW)\nimpact_level     → HIGH \u002F MEDIUM \u002F LOW\nkey_levels       → { support: [price1, price2], resistance: [price1, price2] }\nsummary          → อธิบาย WHY ข่าวนี้ส่งผลต่อทอง (2–4 ประโยค)\naction_points    → คำแนะนำการเทรดที่เฉพาะเจาะจง (1–3 ประโยค)\nbull_case        → { price, description } เป้าหมายถ้าเกิด Bullish scenario\nbase_case        → { price, description } เป้าหมายกรณีปกติ\nbear_case        → { price, description } เป้าหมายถ้าเกิด Bearish scenario\nprob_bull        → ความน่าจะเป็น Bullish (0.00–1.00)\nexpected_move    → ช่วงราคาที่คาดว่าจะเคลื่อนไหว เช่น \"+$15–$25\"\nconfidence       → ความมั่นใจในการวิเคราะห์ (0.00–1.00)\n```\n\n**Daily Signal Synthesis** (`\u002Flib\u002Fservices\u002Fdaily-signal.ts`)\n\nClaude รับบทความ 10 ชิ้นที่มี Impact สูงสุด + Macro snapshot แล้วสังเคราะห์:\n\n```\nbias             → Bullish \u002F Bearish \u002F Neutral\nstrength         → 1–5 (5 = high conviction)\nbuy_zones[]      → แนวรับ พร้อม stop_loss, target, confidence, reason\nsell_zones[]     → แนวต้าน พร้อม stop_loss, target, confidence, reason\nweekly_outlook   → สรุปมุมมองสัปดาห์ (2–3 ย่อหน้า)\nsupporting_factors[] → ปัจจัยสนับสนุนทิศทาง\nrisk_factors[]   → ปัจจัยเสี่ยงที่อาจพลิกทิศทาง\nexecutive_summary → สรุปใน 1 ประโยค\n```\n\n---\n\n### 4.5 Database — Supabase\n\n**ตารางหลัก 6 ตาราง**\n\n| ตาราง | เก็บอะไร |\n|---|---|\n| `articles` | บทความข่าวจาก RSS พร้อม URL ต้นฉบับ |\n| `article_analysis` | ผลการวิเคราะห์ AI ของแต่ละบทความ |\n| `price_ticks` | ราคาทองทุก 5 นาที (OHLC, Bid\u002FAsk, Source) |\n| `macro_snapshots` | Macro data snapshot ทุก 15 นาที |\n| `daily_signals` | AI Signal สรุปรายวัน (1 แถว\u002Fวัน) |\n| `economic_events` | ปฏิทินเศรษฐกิจ (upsert จาก seed + live API) |\n\nทุกตารางมี **Row Level Security (RLS)** — อ่านได้ผ่าน anon key, เขียนได้เฉพาะ service role (cron jobs)\n\n---\n\n### 4.6 Cache — Upstash Redis\n\n| Key | เก็บอะไร | TTL |\n|---|---|---|\n| `gs:price:current` | GoldPrice JSON ล่าสุด | 10 นาที |\n| `gs:macro:current` | MacroSnapshot JSON ล่าสุด | 6 นาที |\n| `gs:chart:candles:1d` | OHLCV candles รายวัน | 5 นาที |\n| `gs:chart:candles:60m` | OHLCV candles รายชั่วโมง | 5 นาที |\n| `gs:chart:candles:15m` | OHLCV candles 15 นาที | 5 นาที |\n\nRedis ทำหน้าที่ลด latency และลดจำนวนการเรียก Yahoo Finance \u002F Supabase\n\n---\n\n## 5. แหล่งข้อมูลและความถี่\n\n### แหล่งราคา\n\n| แหล่ง | API | ความถี่ | หมายเหตุ |\n|---|---|---|---|\n| goldapi.io | `goldapi.io\u002Fapi\u002FXAU\u002FUSD` | ทุก 5 นาที | Primary (จำกัด ~500 req\u002Fเดือน free) |\n| Yahoo Finance | `query1.finance.yahoo.com` `GC=F` | Fallback อัตโนมัติ | ใช้เมื่อ GoldAPI หมด quota |\n\n### แหล่ง Macro\n\n| ข้อมูล | Symbol Yahoo | ดึงทุก |\n|---|---|---|\n| US Dollar Index | `DX-Y.NYB` | 15 นาที |\n| US 10Y Treasury Yield | `^TNX` | 15 นาที |\n| US 2Y Treasury Yield | `^IRX` | 15 นาที |\n| VIX Fear Index | `^VIX` | 15 นาที |\n| S&P 500 | `^GSPC` | 15 นาที |\n| WTI Crude Oil | `CL=F` | 15 นาที |\n\n### แหล่งข่าว (RSS)\n\n| แหล่ง | URL | หมวดหลัก |\n|---|---|---|\n| Reuters | `feeds.reuters.com\u002Freuters\u002FbusinessNews` | Macro, Economy |\n| Kitco | `feeds.kitco.com\u002FMarketNuggets` | Gold Technical |\n| MarketWatch | `marketwatch.com\u002Frss\u002Ftopstories` | US Markets |\n| Yahoo Finance | `finance.yahoo.com\u002Frss\u002Ftopfinstories` | Finance |\n| Investing.com | `investing.com\u002Frss\u002Fnews_25.rss` | Fed, Central Bank |\n| ForexLive | `forexlive.com\u002Ffeed\u002Fnews` | USD, DXY, FX |\n\nระบบกรองเฉพาะข่าวที่มี keyword เกี่ยวกับทอง เช่น gold, xau, fed rate, cpi, dxy, treasury, safe haven, pboc, bullion ฯลฯ\n\n---\n\n## 6. โครงสร้างไฟล์\n\n```\ngoldsignal\u002F\n├── app\u002F\n│   ├── (dashboard)\u002F\n│   │   ├── layout.tsx          ← Server Component: ดึง price\u002Fmacro\u002Fsignal\n│   │   ├── page.tsx            ← Feed: Today\u002FWeek\u002FTaxonomy\u002FForecasts tabs\n│   │   ├── signals\u002Fpage.tsx    ← Signals: Buy\u002FSell zones + Calendar\n│   │   └── chart\u002Fpage.tsx      ← Chart: GoldChart + Controls\n│   └── api\u002F\n│       ├── price\u002F\n│       │   ├── route.ts        ← GET price (Redis → DB → Live)\n│       │   └── stream\u002Froute.ts ← SSE real-time stream ทุก 10s\n│       ├── macro\u002Froute.ts      ← GET macro (Redis → DB → Live fetch)\n│       ├── news\u002Froute.ts       ← GET articles with analysis\n│       ├── signal\u002Fdaily\u002Froute.ts\n│       ├── calendar\u002Froute.ts   ← GET events (DB → Seed fallback)\n│       ├── chart\u002Fcandles\u002Froute.ts ← GET OHLCV from Yahoo Finance\n│       └── cron\u002F               ← 6 cron routes (ต้องใช้ Bearer token)\n│\n├── components\u002F\n│   ├── layout\u002F                 ← Topbar, Sidebar\n│   ├── news\u002F                   ← NewsCard, NewsFeed, FilterBar, WeekTimeline,\n│   │                              TaxonomyList, ForecastsTable\n│   ├── signals\u002F                ← PredictionStrip, ZonePanel, StatCard,\n│   │                              WeeklyOutlook, RiskFactors, EconomicCalendar\n│   ├── chart\u002F                  ← GoldChart (Lightweight Charts v4),\n│   │                              ChartControls, NewsTimeline\n│   └── ui\u002F                     ← ImpactBadge, SentimentBadge, BiasBadge,\n│                                  StrengthBars, ConfidenceBar, FactorTag\n│\n├── lib\u002F\n│   ├── anthropic.ts            ← Claude client + retry helper\n│   ├── redis.ts                ← Upstash Redis lazy proxy\n│   ├── types.ts                ← TypeScript types ทั้งระบบ\n│   ├── format.ts               ← formatPrice, formatTimeAgo ฯลฯ\n│   ├── mock-data.ts            ← ข้อมูลจำลองสำหรับ dev\u002Ftesting\n│   ├── build-taxonomy.ts       ← สร้าง TaxonomyEntry[] จาก MacroSnapshot\n│   ├── build-predictions.ts    ← สร้าง Prediction[] จาก DailySignal\n│   ├── hooks\u002F\n│   │   ├── use-price-stream.ts ← SSE hook พร้อม exponential backoff retry\n│   │   └── use-news.ts         ← fetch news hook\n│   ├── services\u002F\n│   │   ├── price.ts            ← fetchGoldPrice (goldapi → yahoo fallback)\n│   │   ├── macro.ts            ← fetchMacroSnapshot (6 Yahoo symbols)\n│   │   ├── news-fetcher.ts     ← RSS aggregator + gold-relevance filter\n│   │   ├── news-analyzer.ts    ← Claude article analysis batch\n│   │   ├── daily-signal.ts     ← Claude daily synthesis\n│   │   └── calendar.ts         ← Economic calendar + seed events\n│   ├── prompts\u002F\n│   │   ├── analyze-article.ts  ← Claude prompt สำหรับวิเคราะห์บทความ\n│   │   └── daily-synthesis.ts  ← Claude prompt สำหรับ signal รายวัน\n│   ├── store\u002Fui-store.ts       ← Zustand store (filter, expanded card ฯลฯ)\n│   └── supabase\u002F\n│       ├── client.ts           ← Browser client\n│       ├── server.ts           ← Server Component client\n│       └── admin.ts            ← Service role client (cron only)\n│\n├── supabase\u002F\n│   └── schema.sql              ← DDL: ตาราง + index + RLS policies\n│\n├── vercel.json                 ← Cron schedules\n├── middleware.ts               ← Inject x-pathname header\n└── .env.local.example          ← Template env vars\n```\n\n---\n\n## 7. ข้อกำหนดและ API Keys\n\n### สิ่งที่ต้องมีก่อน\n\n| รายการ | ที่ไหน | ฟรีหรือไม่ |\n|---|---|---|\n| Node.js 18+ | [nodejs.org](https:\u002F\u002Fnodejs.org) | ✅ ฟรี |\n| Supabase Project | [supabase.com](https:\u002F\u002Fsupabase.com) | ✅ Free tier |\n| Upstash Redis | [console.upstash.com](https:\u002F\u002Fconsole.upstash.com) | ✅ Free tier |\n| Anthropic API Key | [console.anthropic.com](https:\u002F\u002Fconsole.anthropic.com) | 💰 Pay-per-use |\n| GoldAPI Key | [goldapi.io](https:\u002F\u002Fwww.goldapi.io) | ✅ Free (500 req\u002Fเดือน) |\n\n### Environment Variables\n\n```bash\n# Supabase — Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=https:\u002F\u002Fxxxx.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=eyJh...\nSUPABASE_SERVICE_ROLE_KEY=eyJh...\n\n# Upstash Redis — Database → REST API\nUPSTASH_REDIS_REST_URL=https:\u002F\u002Fxxxx.upstash.io\nUPSTASH_REDIS_REST_TOKEN=AX...\n\n# Anthropic Claude\nANTHROPIC_API_KEY=sk-ant-...\n\n# GoldAPI (optional — Yahoo Finance ใช้เป็น fallback ถ้าไม่มี)\nGOLDAPI_KEY=goldapi-...\n\n# Cron Security — ดูวิธีสร้างด้านล่าง\nCRON_SECRET=my-super-secret-cron-key\n\n# App URL (ใช้ตอน deploy จริง)\nNEXT_PUBLIC_APP_URL=http:\u002F\u002Flocalhost:3000\n```\n\n### วิธีสร้าง CRON_SECRET\n\n`CRON_SECRET` คือรหัสลับที่คุณตั้งเองเพื่อป้องกันคนอื่นเรียก Cron endpoints  \nเลือกวิธีสร้างตามระบบที่ใช้:\n\n**Mac \u002F Linux (Terminal):**\n```bash\nopenssl rand -hex 32\n# ตัวอย่างผลลัพธ์: a3f8c2e1b4d7901234567890abcdef1234567890abcdef1234567890abcdef12\n```\n\n**Windows (PowerShell):**\n```powershell\n-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) })\n# ตัวอย่างผลลัพธ์: a3f8c2e1b4d790123456789abcdef1234567890abcdef1234567890abcdef12\n```\n\n**วิธีง่ายที่สุด (ทุกระบบ):**  \nไปที่ https:\u002F\u002Fgenerate-secret.vercel.app\u002F32 → copy ค่าที่ได้มาใส่ใน `.env.local`\n\n> ค่านี้ตั้งอะไรก็ได้ ขอแค่จำได้และไม่ใช่คำง่ายๆ เช่น `password` หรือ `123456`  \n> ใช้ค่าเดียวกันนี้ตลอด — ทั้งใน `.env.local` และในคำสั่ง curl ด้านล่าง\n\n---\n\n## 8. วิธีติดตั้ง (Local Development)\n\n### ขั้นตอนที่ 1 — Clone และติดตั้ง\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbblank09\u002FGoldSignal.git\ncd GoldSignal\u002Fgoldsignal\nnpm install\n```\n\n### ขั้นตอนที่ 2 — ตั้งค่า Environment\n\n**Mac \u002F Linux:**\n```bash\ncp .env.local.example .env.local\n```\n\n**Windows (cmd.exe):**\n```cmd\ncopy .env.local.example .env.local\n```\n\n**Windows (PowerShell):**\n```powershell\nCopy-Item .env.local.example .env.local\n```\n\n> **ค่าเริ่มต้นคือ Mock Mode** — ไฟล์ `.env.local` ที่ copy มามีค่า `DATA_MODE=mock` อยู่แล้ว  \n> ไม่จำเป็นต้องกรอก API key ใดๆ เพื่อรันครั้งแรก\n\n### ขั้นตอนที่ 3 — รัน Dev Server\n\n```bash\nnpm run dev\n```\n\nเปิด [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) — จะเห็น Dashboard พร้อม **ข้อมูลจำลอง** ทันที  \nมี badge `◎ MOCK` แสดงที่ Topbar เพื่อบอกว่ากำลังใช้ Mock Mode\n\n> **ต้องการ Live Mode?** — ดูหัวข้อ 10 สำหรับการตั้งค่า Supabase, Redis, และ API keys ครบ\n\n### ขั้นตอนที่ 4 (เฉพาะ Live Mode) — ตั้งค่า Supabase Database\n\nหากต้องการใช้ข้อมูลจริง:\n1. เข้า [Supabase Dashboard](https:\u002F\u002Fsupabase.com\u002Fdashboard) → เลือก Project\n2. ไปที่ **SQL Editor**\n3. Copy ทั้งหมดจากไฟล์ `supabase\u002Fschema.sql` แล้ว Paste และ Run\n4. ตรวจสอบว่าสร้างตารางครบ 6 ตาราง: `articles`, `article_analysis`, `price_ticks`, `macro_snapshots`, `daily_signals`, `economic_events`\n\n---\n\n## 9. วิธีใช้งาน — Mock Mode\n\nMock Mode คือโหมดเริ่มต้น (**default**) — ใช้ **ข้อมูลจำลอง** จาก `lib\u002Fmock-data.ts`  \nไม่ต้องการ API key ใดๆ เหมาะสำหรับการดูหน้าตา UI, พัฒนา feature ใหม่, หรือแชร์ demo\n\n### วิธีรัน Mock Mode\n\n```bash\n# ตรวจสอบว่า .env.local มีค่านี้ (ค่าเริ่มต้นที่ copy มาจาก example แล้ว)\nDATA_MODE=mock\nNEXT_PUBLIC_DATA_SOURCE=mock\n```\n\n```bash\nnpm run dev\n# → เปิด http:\u002F\u002Flocalhost:3000\n# → จะเห็น badge \"◎ MOCK\" ที่ Topbar แสดงว่ากำลังใช้ Mock Mode\n```\n\n### ข้อมูลจำลองที่มีให้\n\n| ข้อมูล | ค่า |\n|---|---|\n| ราคาทอง | $2,341.50 (มี SSE simulation — ราคาขยับสุ่มทุก 10 วินาที) |\n| Macro | DXY 104.23, US10Y 4.28%, VIX 18.50, SPX 4,850 |\n| บทความข่าว | 5 บทความพร้อม AI analysis ครบทุก field |\n| Daily Signal | Bullish, strength 4\u002F5, Buy\u002FSell zones พร้อม Stop Loss |\n| Economic Calendar | 6 events (May 14–23) |\n| Forecasts | Mock institutional forecasts จาก 5 สถาบัน |\n\n> Mock Mode ดูสมจริง — SSE ราคา simulate การเคลื่อนไหว, Filter\u002FTab ทุกอย่างทำงานได้  \n> ข้อมูลเดียวกันทุกครั้งที่เปิด (ไม่ใช่ข้อมูลตลาดจริง)\n\n---\n\n## 10. วิธีใช้งาน — Live Mode\n\nLive Mode ดึงข้อมูลจริงจาก Yahoo Finance, Supabase, Redis และวิเคราะห์ด้วย Claude AI  \nต้องการ API keys และการตั้งค่าเพิ่มเติมก่อนใช้งาน\n\n### ขั้นตอนที่ 1 — เปิดใช้ Live Mode ใน .env.local\n\nแก้ไขไฟล์ `.env.local` — เปลี่ยนจาก `mock` เป็น `live` และกรอก API keys ทุกตัว:\n\n```bash\n# เปลี่ยน mock → live\nDATA_MODE=live\nNEXT_PUBLIC_DATA_SOURCE=live\n\n# กรอก keys ทุกตัวจากหัวข้อ 7\nNEXT_PUBLIC_SUPABASE_URL=https:\u002F\u002Fxxxx.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=eyJh...\nSUPABASE_SERVICE_ROLE_KEY=eyJh...\nUPSTASH_REDIS_REST_URL=https:\u002F\u002Fxxxx.upstash.io\nUPSTASH_REDIS_REST_TOKEN=AX...\nANTHROPIC_API_KEY=sk-ant-...\nCRON_SECRET=your-secret-key\nNEXT_PUBLIC_APP_URL=http:\u002F\u002Flocalhost:3000\n```\n\n### ขั้นตอนที่ 2 — รัน Dev Server\n\n```bash\nnpm run dev\n```\n\n### ขั้นตอนที่ 3 — Seed ข้อมูลเริ่มต้น (รัน Cron ด้วยมือ)\n\nแทนที่ `YOUR_SECRET` ด้วยค่า `CRON_SECRET` ที่ตั้งไว้ใน `.env.local`  \nเลือกรันตามระบบที่ใช้:\n\n---\n\n#### Mac \u002F Linux (Terminal)\n\n```bash\n# 1. ดึงราคาทองล่าสุด\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fprice-tick\n\n# 2. ดึงข้อมูล Macro (DXY, Yields, VIX ฯลฯ)\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fmacro-snapshot\n\n# 3. Seed ปฏิทินเศรษฐกิจ\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fcalendar-sync\n\n# 4. ดึงข่าว RSS จาก 6 แหล่ง\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Ffetch-news\n\n# 5. ให้ AI วิเคราะห์ข่าว (รอ 30–60 วินาที)\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fanalyze-news\n\n# 6. สร้าง Daily Signal (รอ 30–60 วินาที)\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fdaily-signal\n```\n\n---\n\n#### Windows — Command Prompt (cmd.exe)\n\n```cmd\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fprice-tick\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fmacro-snapshot\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fcalendar-sync\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Ffetch-news\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fanalyze-news\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fdaily-signal\n```\n\n> `curl` มาพร้อม Windows 10\u002F11 แล้ว ไม่ต้องติดตั้งเพิ่ม\n\n---\n\n#### Windows — PowerShell\n\n```powershell\n$secret = \"YOUR_SECRET\"\n$base   = \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\"\n$headers = @{ Authorization = \"Bearer $secret\" }\n\nInvoke-RestMethod \"$base\u002Fprice-tick\"     -Headers $headers\nInvoke-RestMethod \"$base\u002Fmacro-snapshot\" -Headers $headers\nInvoke-RestMethod \"$base\u002Fcalendar-sync\"  -Headers $headers\nInvoke-RestMethod \"$base\u002Ffetch-news\"     -Headers $headers\nInvoke-RestMethod \"$base\u002Fanalyze-news\"   -Headers $headers   # รอ 30–60 วินาที\nInvoke-RestMethod \"$base\u002Fdaily-signal\"   -Headers $headers   # รอ 30–60 วินาที\n```\n\n> แนะนำให้รันทีละบรรทัด อย่ารวดเดียวทั้งหมด — รอดูผลลัพธ์ก่อนไปบรรทัดถัดไป\n\n> **หมายเหตุ:** ขั้นตอน 5–6 ใช้ Anthropic API ซึ่งมีค่าใช้จ่ายตาม token  \n> ดูราคาได้ที่ [anthropic.com\u002Fpricing](https:\u002F\u002Fwww.anthropic.com\u002Fpricing)\n\n---\n\n### ขั้นตอนที่ 4 — ตรวจสอบว่าข้อมูลเข้า\n\n**Mac \u002F Linux:**\n```bash\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fprice\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fnews\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fsignal\u002Fdaily\n```\n\n**Windows (cmd หรือ PowerShell):**\n```cmd\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fprice\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fnews\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fsignal\u002Fdaily\n```\n\nเปิด [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) — ควรเห็นข้อมูลจริงแล้ว  \nTopbar จะไม่แสดง `◎ MOCK` อีกต่อไป\n\n---\n\n## 11. การ Deploy บน Vercel\n\n### ขั้นตอนที่ 1 — Push โค้ดขึ้น GitHub\n\n```bash\ngit add .\ngit commit -m \"deploy goldsignal\"\ngit push origin main\n```\n\n### ขั้นตอนที่ 2 — Connect Vercel\n\n1. ไปที่ [vercel.com](https:\u002F\u002Fvercel.com) → Import Project จาก GitHub\n2. เลือก repo และ root directory เป็น `goldsignal`\n\n### ขั้นตอนที่ 3 — ตั้งค่า Environment Variables\n\nไปที่ **Settings → Environment Variables** แล้วเพิ่มทุกตัวจาก `.env.local`:\n\n```\nDATA_MODE=live                                      ← ต้องตั้งเป็น live บน Vercel\nNEXT_PUBLIC_DATA_SOURCE=live\nNEXT_PUBLIC_APP_URL=https:\u002F\u002Fyour-app.vercel.app    ← เปลี่ยนเป็น URL จริง\nNEXT_PUBLIC_SUPABASE_URL=...\nNEXT_PUBLIC_SUPABASE_ANON_KEY=...\nSUPABASE_SERVICE_ROLE_KEY=...\nUPSTASH_REDIS_REST_URL=...\nUPSTASH_REDIS_REST_TOKEN=...\nANTHROPIC_API_KEY=...\nCRON_SECRET=...\n```\n\n> ⚠️ หากไม่ตั้ง `DATA_MODE=live` บน Vercel — production จะแสดงเฉพาะ mock data\n\n### ขั้นตอนที่ 4 — Deploy\n\n```bash\nnpx vercel --prod\n```\n\n### Cron Jobs บน Vercel\n\n`vercel.json` กำหนด schedule ไว้แล้ว:\n\n| Cron | Schedule | เวลาไทย (UTC+7) |\n|---|---|---|\n| price-tick | ทุก 5 นาที | ตลอดเวลา |\n| macro-snapshot | ทุก 15 นาที | ตลอดเวลา |\n| fetch-news | ทุก 30 นาที | ตลอดเวลา |\n| analyze-news | ทุก 30 นาที | ตลอดเวลา |\n| daily-signal | 06:00 UTC | 13:00 น. |\n| calendar-sync | ทุกวันจันทร์ 00:00 UTC | จ. 07:00 น. |\n\n> **หมายเหตุ Vercel:** Hobby plan รองรับ Cron ได้ 1 job เท่านั้น  \n> ต้องการ Cron ครบต้องอัปเกรดเป็น **Pro plan ($20\u002Fเดือน)**\n\n---\n\n## 12. คู่มือการใช้งาน Dashboard\n\n### Sidebar — อ่านข้อมูลสำคัญ\n\n```\n┌─────────────────────────────┐\n│ XAU\u002FUSD  $3,342.50          │ ← ราคาปัจจุบัน (real-time SSE)\n│ ▲ +12.30 (+0.37%)          │ ← เปลี่ยนแปลงวันนี้\n│ Bid 3342.10 · Ask 3342.90  │\n│ ████████████░░░░░│          │ ← Day range bar\n│                              │\n│ DXY      104.2  ↓ -0.3  🟢 │ ← ↓ DXY = bullish for gold\n│ US10Y    4.28%  ↑ +0.02 🔴 │ ← ↑ Yields = bearish for gold\n│ VIX      18.5   ↑ +1.2  🟡 │\n│                              │\n│ ◉ BULLISH ████░  str: 4\u002F5  │ ← AI Daily Bias\n│ 68% Bull · 20% Bear · 12%N │ ← Sentiment จากข่าว\n└─────────────────────────────┘\n```\n\n### แท็บ Today — อ่านข่าว\n\n1. กรองข่าวด้วย Filter Bar: `All` \u002F `High Impact` \u002F `Bullish` \u002F `Bearish`\n2. กรองตาม Category จาก Sidebar: Fed, DXY, Inflation ฯลฯ\n3. คลิกการ์ดข่าวเพื่อขยาย → ดู AI Summary, Action Points, Scenarios\n4. คลิก **↗** ข้างชื่อแหล่งข่าวเพื่อเปิดบทความต้นฉบับ\n\n### แท็บ Signals — ใช้วางแผนการเทรด\n\n1. ดู **Daily Bias** — ทิศทางโดยรวมวันนี้\n2. อ่าน **Buy Zones** — ราคาแนวรับ, Stop Loss, Target\n3. อ่าน **Sell Zones** — ราคาแนวต้าน, Stop Loss, Target  \n4. อ่าน **Weekly Outlook** — สรุปสัปดาห์และ Key Events\n5. ตรวจ **Economic Calendar** — วัน\u002Fเวลาประกาศข้อมูลสำคัญ\n\n### แท็บ Chart — ดูกราฟ\n\n1. เลือก Timeframe: 15m \u002F 1H \u002F 4H \u002F 1D \u002F 1W\n2. เส้น **AI Support** (เขียวจาง) — แนวรับจากบทความวิเคราะห์\n3. เส้น **AI Resistance** (แดงจาง) — แนวต้านจากบทความวิเคราะห์\n4. เส้นหนา **BUY ZONE** (เขียวเข้ม) — จาก Daily Signal\n5. เส้นหนา **SELL ZONE** (แดงเข้ม) — จาก Daily Signal\n6. ▲▼ markers บน candle — ข่าวที่มีผลกระทบในวันนั้น\n\n---\n\n## 13. ความเสี่ยงและข้อจำกัด\n\n### ด้านข้อมูล\n\n| ความเสี่ยง | รายละเอียด | ผลกระทบ |\n|---|---|---|\n| **GoldAPI Quota** | Free tier จำกัด ~500 req\u002Fเดือน ≈ 16 req\u002Fวัน | ราคาใช้ Yahoo fallback อัตโนมัติ |\n| **Yahoo Finance Blocking** | Yahoo อาจบล็อก request ที่ถี่เกินไป | ราคาอาจขาดหายช่วงสั้นๆ |\n| **RSS Feed Outage** | แหล่งข่าวบางแหล่งอาจหยุดให้บริการชั่วคราว | จำนวนข่าวลดลง |\n| **Macro Data Delay** | Yahoo Finance อาจ delay สูงสุด 15 นาที | Macro อาจไม่ตรง real-time 100% |\n\n### ด้าน AI\n\n| ความเสี่ยง | รายละเอียด |\n|---|---|\n| **AI Hallucination** | Claude อาจวิเคราะห์ราคาหรือสถานการณ์ผิดพลาดได้ |\n| **Prompt Engineering** | ผลลัพธ์ขึ้นกับ prompt — การเปลี่ยน prompt ส่งผลต่อคุณภาพ |\n| **Context Window** | บทความที่ยาวมากอาจถูกตัดออก |\n| **API Cost** | ราคาเปลี่ยนตาม token ที่ใช้ — ควรตั้ง budget limit |\n\n### ด้านการเงิน\n\n> ⚠️ **คำเตือนสำคัญ**  \n> GoldSignal เป็นเครื่องมือวิเคราะห์ข้อมูล **ไม่ใช่คำแนะนำทางการเงิน**  \n> ผลการวิเคราะห์ของ AI อาจผิดพลาดได้และไม่รับประกันผลกำไร  \n> การตัดสินใจเทรดทุกครั้งเป็นความรับผิดชอบของผู้ใช้แต่เพียงผู้เดียว\n\n---\n\n## 14. ข้อควรระวัง\n\n### 🔐 ด้านความปลอดภัย\n\n```\n✗ ห้าม commit ไฟล์ .env.local ขึ้น Git\n✗ ห้าม expose SUPABASE_SERVICE_ROLE_KEY ฝั่ง client\n✗ ห้าม share CRON_SECRET ในที่สาธารณะ\n✓ ตรวจสอบว่า .gitignore มี .env.local อยู่แล้ว\n✓ ใช้ Vercel Environment Variables สำหรับ production\n```\n\n### 💰 ด้านค่าใช้จ่าย API\n\n```\nAnthropic Claude:\n  - Article analysis: ~$0.001–0.003 ต่อบทความ\n  - Daily signal:     ~$0.01–0.03 ต่อครั้ง\n  - ต่อวัน (ข่าว 10 ชิ้น + 1 signal): ~$0.02–0.05\n  - ต่อเดือน: ~$0.60–1.50 USD (ไม่รวมค่า prompt caching)\n  → แนะนำตั้ง Usage Limit บน console.anthropic.com\n\nGoldAPI:\n  - Free: 500 req\u002Fเดือน (เพียงพอสำหรับ local dev)\n  - Paid: $9.99\u002Fเดือน สำหรับ production จริง\n\nVercel:\n  - Hobby: ฟรี (Cron 1 job)\n  - Pro: $20\u002Fเดือน (Cron ไม่จำกัด)\n```\n\n### ⚡ ด้านประสิทธิภาพ\n\n```\n✓ ไม่ควรรัน analyze-news บ่อยกว่า 30 นาที — Claude มีค่าใช้จ่าย\n✓ Redis TTL ตั้งไว้เหมาะสมแล้ว — ห้ามลด TTL โดยไม่จำเป็น\n✓ กราฟ OHLCV cache 5 นาที — ไม่ต้องดึง Yahoo Finance ทุก request\n✗ ห้ามเรียก Cron endpoints โดยตรงจาก client ที่ไม่มี auth\n```\n\n### 🔄 ด้านข้อมูล\n\n```\n✓ Daily Signal รัน 1 ครั้ง\u002Fวัน ที่ 13:00 น. (ไทย) — ข้อมูลตรงกับตลาดเปิด US\n✓ ข่าวที่วิเคราะห์แล้วจะไม่วิเคราะห์ซ้ำ (check article_analysis)\n✗ อย่ากรอกข้อมูลทดสอบลง Supabase production — ใช้ local dev แยก\n✓ Calendar Seed events มีให้ครบถึงสิ้นเดือน — ไม่ต้องรัน calendar-sync ก่อน\n```\n\n---\n\n## 15. การแก้ไขปัญหาเบื้องต้น\n\n### ปัญหา: หน้า Signals ขึ้น \"Loading signals...\"\n\n**สาเหตุ:** ยังไม่มี Daily Signal ในวันนี้\n\n**Mac\u002FLinux:**\n```bash\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fdaily-signal\n```\n**Windows (cmd):**\n```cmd\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fdaily-signal\n```\n**Windows (PowerShell):**\n```powershell\nInvoke-RestMethod \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fdaily-signal\" -Headers @{ Authorization = \"Bearer YOUR_SECRET\" }\n```\n\n---\n\n### ปัญหา: ข่าวในแท็บ Today ว่างเปล่า\n\n**สาเหตุ:** ยังไม่ได้รัน fetch-news และ analyze-news\n\n**Mac\u002FLinux:**\n```bash\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Ffetch-news\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fanalyze-news\n```\n**Windows (cmd):**\n```cmd\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Ffetch-news\ncurl -H \"Authorization: Bearer YOUR_SECRET\" http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fanalyze-news\n```\n\n---\n\n### ปัญหา: กราฟไม่แสดง candles\n\n**สาเหตุ:** Lightweight Charts ยังโหลดจาก CDN ไม่เสร็จ หรือ Yahoo Finance ถูก block  \n**แก้:**\n1. รอ 5–10 วินาที แล้ว refresh\n2. ตรวจสอบ Network tab ใน DevTools ว่า `\u002Fapi\u002Fchart\u002Fcandles` คืนข้อมูลหรือไม่\n\n---\n\n### ปัญหา: Taxonomy แสดง `--` ทุกช่อง\n\n**สาเหตุ:** Macro data ยังไม่โหลด  \n**แก้:** `\u002Fapi\u002Fmacro` จะ live-fetch อัตโนมัติ รอ 5–10 วินาที แล้วเปิดแท็บ Taxonomy ใหม่\n\n---\n\n### ปัญหา: `CRON_SECRET` ไม่ผ่าน (401 Unauthorized)\n\n**แก้:** ตรวจสอบว่า value ใน `.env.local` ตรงกับที่ใส่ใน curl\u002FPowerShell ทุกตัวอักษร  \nไม่มีช่องว่าง ไม่มีเครื่องหมาย quote รอบๆ ค่า\n\n---\n\n### ปัญหา: Windows — `'cp' is not recognized`\n\n**สาเหตุ:** cmd.exe ไม่มีคำสั่ง `cp`  \n**แก้:** ใช้ `copy` แทน\n```cmd\ncopy .env.local.example .env.local\n```\n\n---\n\n### ปัญหา: Windows — PowerShell แสดง error `Invoke-RestMethod ... SSL`\n\n**สาเหตุ:** localhost ไม่มี SSL certificate  \n**แก้:** เพิ่ม `-SkipCertificateCheck` (PowerShell 7+) หรือใช้ cmd + curl แทน\n```powershell\nInvoke-RestMethod \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fcron\u002Fprice-tick\" -Headers @{ Authorization = \"Bearer YOUR_SECRET\" } -SkipCertificateCheck\n```\n\n---\n\n### ปัญหา: Build fail ด้วย TypeScript error\n\n```bash\nnpm run build 2>&1 | grep \"Type error\"\n```\n\nส่วนใหญ่เกิดจากการแก้ไขไฟล์ type ไม่ตรง — ห้ามแก้ `lib\u002Ftypes.ts` โดยไม่อัปเดต component ที่ใช้งาน\n\n---\n\n## 16. แนวทางพัฒนาต่อ\n\n### ฟีเจอร์ที่อาจเพิ่มในอนาคต\n\n| ฟีเจอร์ | รายละเอียด | ความยาก |\n|---|---|---|\n| **Alert System** | แจ้งเตือนเมื่อราคาถึง Buy\u002FSell Zone | ⭐⭐ |\n| **Trade Journal** | บันทึกการเทรดและเปรียบเทียบกับ Signal | ⭐⭐ |\n| **Multi-Asset** | ขยายไปครอบ Silver (XAG), Bitcoin (BTC) | ⭐⭐⭐ |\n| **Docker Mode** | รัน PostgreSQL + Redis บน Docker แทน cloud | ⭐⭐ |\n| **Live Economic Data** | ดึง calendar จาก Investing.com API แทน seed | ⭐⭐⭐ |\n| **Backtesting** | ทดสอบ signal ย้อนหลัง 6–12 เดือน | ⭐⭐⭐⭐ |\n| **Mobile App** | React Native version | ⭐⭐⭐⭐⭐ |\n\n### การเปลี่ยนไปใช้ Docker (สำหรับผู้ไม่ต้องการ cloud services)\n\nหากไม่ต้องการใช้ Supabase + Upstash สามารถเปลี่ยนเป็น:\n- **PostgreSQL** container แทน Supabase\n- **Redis** container แทน Upstash Redis\n- **node-cron** ใน app แทน Vercel Cron\n- Deploy บน Railway \u002F Fly.io \u002F VPS แทน Vercel\n\nการเปลี่ยนต้องแก้ไข database client (`lib\u002Fsupabase\u002F*`) และ Redis client (`lib\u002Fredis.ts`) ใช้เวลาประมาณ 1–2 วัน\n\n---\n\n## License\n\nMIT License — ใช้งานได้อย่างอิสระ ทั้งส่วนตัวและเชิงพาณิชย์\n\n---\n\n\u003Cdiv align=\"center\">\n  \u003Csub>Built with ❤️ | Powered by Anthropic Claude · Next.js · Supabase\u003C\u002Fsub>\n\u003C\u002Fdiv>\n","GoldSignal 是一个基于 AI 的黄金交易实时分析仪表盘，专为机构级用户提供服务。项目使用 TypeScript 开发，结合了 Next.js 14、Supabase 和 Upstash Redis 等现代技术栈，以确保高性能和数据处理能力。其核心功能包括自动化的新闻分析与价格影响预测、实时更新的市场数据（如 DXY 指数、债券收益率等）以及智能生成的买卖区间建议。该平台适合需要高效整合多种信息来源以辅助决策的专业黄金交易者或团队使用。",2,"2026-06-11 04:05:41","CREATED_QUERY"]