[
  {
    "name": "01_index",
    "url": "/index.html",
    "status": 404,
    "title": "",
    "load_time_ms": 13,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)"
    ],
    "api_calls_count": 0,
    "api_calls": [],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "{\"message\":\"Route GET:/index.html not found\",\"error\":\"Not Found\",\"statusCode\":404}",
    "screenshot": "screenshots/01_index.png",
    "auth_required": false,
    "auth_passed": true
  },
  {
    "name": "02_demo_login",
    "url": "/demo/login",
    "status": 200,
    "title": "เข้าสู่ระบบ - Live API Dashboard",
    "load_time_ms": 15,
    "js_errors": [],
    "api_calls_count": 0,
    "api_calls": [],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n  \n    ล็อกอินก่อนเข้าใช้งาน\n    พอร์ตนี้เปิดโหมดล็อกอินแบบง่าย เพื่อป้องกันคนทั่วไปเข้าหน้า Dashboard โดยตรง\n    \n      \n        ชื่อผู้ใช้\n        \n      \n      \n        รหัสผ่าน\n        \n      \n  ",
    "screenshot": "screenshots/02_demo_login.png",
    "auth_required": false,
    "auth_passed": true
  },
  {
    "name": "03_app_overview",
    "url": "/app.html#/overview",
    "status": 200,
    "title": "WepAppOpusApi · Workspace",
    "load_time_ms": 22,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)",
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)",
      "alerts is not defined"
    ],
    "api_calls_count": 5,
    "api_calls": [
      "/live/runtime-config",
      "/public/ads-chats/pages?days=7",
      "/live/campaigns",
      "/public/ads-chats/pages?days=7",
      "/public/dashboard-alerts"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 1,
    "body_preview": "\n\n\n  \n  \n    \n      ⚡ Opus\n      v1.0\n    \n    \n      \n        Workspace\n        \n          📊\n          Overview\n          g o\n        \n        \n          📈\n          Live\n          g l\n        \n     ",
    "screenshot": "screenshots/03_app_overview.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c4c376b0>",
    "api_evidence_file": "api/03_app_overview.json"
  },
  {
    "name": "04_app_live",
    "url": "/app.html#/live",
    "status": 0,
    "title": "WepAppOpusApi · Workspace",
    "load_time_ms": 4,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)"
    ],
    "api_calls_count": 1,
    "api_calls": [
      "/live/campaigns"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 1,
    "body_preview": "\n\n\n  \n  \n    \n      ⚡ Opus\n      v1.0\n    \n    \n      \n        Workspace\n        \n          📊\n          Overview\n          g o\n        \n        \n          📈\n          Live\n          g l\n        \n     ",
    "screenshot": "screenshots/04_app_live.png",
    "auth_required": true,
    "auth_passed": false
  },
  {
    "name": "05_app_chats",
    "url": "/app.html#/chats",
    "status": 0,
    "title": "WepAppOpusApi · Workspace",
    "load_time_ms": 4,
    "js_errors": [],
    "api_calls_count": 2,
    "api_calls": [
      "/public/chat-families",
      "/public/chat-inbox?"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n\n\n  \n  \n    \n      ⚡ Opus\n      v1.0\n    \n    \n      \n        Workspace\n        \n          📊\n          Overview\n          g o\n        \n        \n          📈\n          Live\n          g l\n        \n     ",
    "screenshot": "screenshots/05_app_chats.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c4c37920>",
    "api_evidence_file": "api/05_app_chats.json"
  },
  {
    "name": "06_app_settings",
    "url": "/app.html#/settings",
    "status": 0,
    "title": "WepAppOpusApi · Workspace",
    "load_time_ms": 4,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)"
    ],
    "api_calls_count": 1,
    "api_calls": [
      "/live/runtime-config"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 1,
    "body_preview": "\n\n\n  \n  \n    \n      ⚡ Opus\n      v1.0\n    \n    \n      \n        Workspace\n        \n          📊\n          Overview\n          g o\n        \n        \n          📈\n          Live\n          g l\n        \n     ",
    "screenshot": "screenshots/06_app_settings.png",
    "auth_required": true,
    "auth_passed": false
  },
  {
    "name": "07_live",
    "url": "/live.html",
    "status": 200,
    "title": "🌸 Live — WepAppOpusApi (Public)",
    "load_time_ms": 146,
    "js_errors": [
      "console.error: Refused to apply style from 'http://localhost:22222/assets/live.css' because its MIME type ('application/json') is not a supported stylesheet MIME type, and strict MIME checking is enabled.",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/live-render.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.",
      "console.error: Refused to apply style from 'http://localhost:22222/assets/live.css' because its MIME type ('application/json') is not a supported stylesheet MIME type, and strict MIME checking is enabled.",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/live-modals.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/live-products.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/live-chats.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/live-core.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled."
    ],
    "api_calls_count": 6,
    "api_calls": [
      "/live.html",
      "/assets/live-render.js",
      "/assets/live-modals.js",
      "/assets/live-products.js",
      "/assets/live-core.js",
      "/assets/live-chats.js"
    ],
    "has_loading_spinner": 1,
    "has_empty_state": 0,
    "body_preview": "\n\n  \n    \n      \n        🌸\n        Live\n        LIVE\n        🌐 Public\n        上限 ฿1,000/วัน\n      \n      \n        วันนี้\n        7 วัน\n        30 วัน\n        ไตรมาส\n        ปีนี้\n      \n      \n      \n",
    "screenshot": "screenshots/07_live.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c4162330>",
    "api_evidence_file": "api/07_live.json"
  },
  {
    "name": "08_scale",
    "url": "/scale.html",
    "status": 200,
    "title": "🚀 Scale Campaigns — WepAppOpusApi",
    "load_time_ms": 22,
    "js_errors": [
      "console.error: Refused to apply style from 'http://localhost:22222/assets/live.css' because its MIME type ('application/json') is not a supported stylesheet MIME type, and strict MIME checking is enabled.",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Refused to execute script from 'http://localhost:22222/assets/scale.js' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.",
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)"
    ],
    "api_calls_count": 1,
    "api_calls": [
      "/live/runtime-config"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n\n.auto-pause-banner {\n  margin: 12px auto 0;\n  max-width: 1280px;\n  padding: 14px 20px;\n  border-radius: 12px;\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  font-family: -apple-system, Blink",
    "screenshot": "screenshots/08_scale.png",
    "auth_required": true,
    "auth_passed": false
  },
  {
    "name": "09_analytics",
    "url": "/analytics.html",
    "status": 200,
    "title": "📈 Analytics & Charts — WepAppOpusApi",
    "load_time_ms": 72,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: stats Error: /live/scale-history?limit=1000: 404\n    at api (http://localhost:22222/analytics.html:311:20)\n    at async loadStats (http://localhost:22222/analytics.html:543:15)\n    at async Promise.all (index 0)\n    at async loadAll (http://localhost:22222/analytics.html:570:3)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: budget chart Error: /live/scale-history?limit=50: 404\n    at api (http://localhost:22222/analytics.html:311:20)\n    at async loadBudgetChart (http://localhost:22222/analytics.html:377:15)\n    at async Promise.all (index 2)\n    at async loadAll (http://localhost:22222/analytics.html:570:3)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: action chart Error: /live/scale-history?limit=200: 404\n    at api (http://localhost:22222/analytics.html:311:20)\n    at async loadActionChart (http://localhost:22222/analytics.html:424:15)\n    at async Promise.all (index 3)\n    at async loadAll (http://localhost:22222/analytics.html:570:3)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)",
      "console.error: forecast chart Error: /live/forecast/measurements?limit=30: 404\n    at api (http://localhost:22222/analytics.html:311:20)\n    at async loadForecastChart (http://localhost:22222/analytics.html:465:15)\n    at async Promise.all (index 4)\n    at async loadAll (http://localhost:22222/analytics.html:570:3)",
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)"
    ],
    "api_calls_count": 7,
    "api_calls": [
      "/live/runtime-config",
      "/live/scale-history?limit=1000",
      "/live/dashboard",
      "/live/scale-history?limit=50",
      "/live/scale-history?limit=200",
      "/live/forecast/measurements?limit=30",
      "/live/forecast/measurements?limit=20"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 1,
    "body_preview": "\n\n.auto-pause-banner {\n  margin: 12px auto 0;\n  max-width: 1280px;\n  padding: 14px 20px;\n  border-radius: 12px;\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  font-family: -apple-system, Blink",
    "screenshot": "screenshots/09_analytics.png",
    "auth_required": true,
    "auth_passed": false
  },
  {
    "name": "10_ads_chats",
    "url": "/ads-chats.html?pageId=408865435647368",
    "status": 200,
    "title": "Ads + Chats Workspace · WepAppOpusApi",
    "load_time_ms": 34,
    "js_errors": [],
    "api_calls_count": 2,
    "api_calls": [
      "/public/ads-chats/pages?days=30",
      "/public/ads-chats/conversations?pageId=110614614749128&days=30"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 1,
    "body_preview": "\n\n\n  💬 Ads + Chats Workspace\n  Pages with ads → conversations → reply\n  \n  Connected\n  📊 Live\n  ⚡ Scale\n  📈 Analytics\n  📜 Changelog\n  📖 Manual\n\n\n\n  \n  \n    \n      \n        📄 Ad Pages\n        5\n      \n",
    "screenshot": "screenshots/10_ads_chats.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c4161ff0>",
    "api_evidence_file": "api/10_ads_chats.json"
  },
  {
    "name": "11_campaign",
    "url": "/campaign.html?id=120230799572200590",
    "status": 200,
    "title": "Campaign Detail · Opus",
    "load_time_ms": 72,
    "js_errors": [],
    "api_calls_count": 3,
    "api_calls": [
      "/public/campaign-detail?campaignId=120230799572200590",
      "/public/chat-related?campaignId=120230799572200590&senderId=USER_11111&excludeConversationId=102601625742282-102601625742282-USER_11111",
      "/public/chat-related?campaignId=120230799572200590&senderId=USER_33333&excludeConversationId=102601625742282-102601625742282-USER_33333"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n\n\n  ← Workspace\n  Opus\n  ›\n  เฮียหนวด โซล่าเซลล์ ไฟตุ้มโซล่าเซลล์ โคมไฟโซล่าเซลล์ สว่างยันเช้า\n  (120230799572200590)\n\n\n\n\n  \n    \n      \n        เฮียหนวด โซล่าเซลล์ ไฟตุ้มโซล่าเซลล์ โคมไฟโซล่าเซลล์ ส",
    "screenshot": "screenshots/11_campaign.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c400acf0>",
    "api_evidence_file": "api/11_campaign.json"
  },
  {
    "name": "12_admin_control",
    "url": "/admin-control.html",
    "status": 200,
    "title": "🛡️ Admin Control · WepAppOpusApi",
    "load_time_ms": 15,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 401 (Unauthorized)"
    ],
    "api_calls_count": 2,
    "api_calls": [
      "/admin-control.html",
      "/live/runtime-config"
    ],
    "has_loading_spinner": 3,
    "has_empty_state": 0,
    "body_preview": "\n\n\n  🛡️ Admin Control\n  \n  📊 Live\n  ⚡ Scale\n  📈 Analytics\n  💬 Chats\n  📜 Changelog\n  📖 Manual\n\n\n\n\n  \n  \n    ⏳ กำลังโหลดสถานะ...\n  \n\n  \n  \n    🔗 Quick Links\n    \n      \n        ⚡\n        Scale Workspace",
    "screenshot": "screenshots/12_admin_control.png",
    "auth_required": true,
    "auth_passed": false,
    "sample_api_response": "<coroutine object APIResponse.json at 0x7b89c400b850>",
    "api_evidence_file": "api/12_admin_control.json"
  },
  {
    "name": "13_changelog",
    "url": "/changelog.html",
    "status": 200,
    "title": "📜 Changelog — WepAppOpusApi",
    "load_time_ms": 30,
    "js_errors": [
      "console.error: Failed to load resource: the server responded with a status of 404 (Not Found)"
    ],
    "api_calls_count": 1,
    "api_calls": [
      "/api/changelog/commits"
    ],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n\n  📜 WepAppOpusApi Changelog\n  \n    ← หน้าหลัก\n    📊 Live\n    📖 Manual\n    🚀 Scale\n  \n\n\n\n  📜 Changelog ทุก commit จาก GitHub repository แบบเรียลไทม์\n  ดึงจาก github.com/lnwsj/SJ88lnwadsApi- — แสดง 39",
    "screenshot": "screenshots/13_changelog.png",
    "auth_required": true,
    "auth_passed": false
  },
  {
    "name": "14_manual",
    "url": "/manual.html",
    "status": 200,
    "title": "📖 คู่มือการใช้งาน WepAppOpusApi — ฉบับสมบูรณ์",
    "load_time_ms": 53,
    "js_errors": [],
    "api_calls_count": 0,
    "api_calls": [],
    "has_loading_spinner": 0,
    "has_empty_state": 0,
    "body_preview": "\n\n  📖 WepAppOpusApi Manual\n  \n    ← หน้าหลัก\n    📊 Live Dashboard\n    🚀 Scale\n    📈 Analytics\n    📜 Changelog\n    📈 Analytics\n  \n\n\n\n  📖 คู่มือการใช้งาน WepAppOpusApi ฉบับสมบูรณ์ v1.0 · 2026-07-12 · ht",
    "screenshot": "screenshots/14_manual.png",
    "auth_required": true,
    "auth_passed": false
  }
]