{"title":"API สถิติและ KPI","slug":"stats","category":"api","summary":"เอนด์พอยต์สถิติ, KPI ของฟลีต และการส่งออก KPI แบบ tidy-long (CSV/JSON/XLSX) สำหรับเอเจนต์ LLM","audience":["human"],"tags":[],"word_count":221,"read_minutes":1,"lang":"th","translated":true,"requested_lang":"th","content_markdown":"\n# API สถิติและ KPI\n\nSynapse เปิดเผยสถิติแบบอ่านอย่างเดียวเกี่ยวกับสุขภาพของเอเจนต์ การใช้ API แนวโน้ม และ KPI ของฟลีต เอนด์พอยต์ทั้งหมดยอมรับทั้ง MindKey (`Authorization: Bearer`) หรือ JWT ของผู้ใช้ (`requireMindOrUser`)\n\nเส้นทางวิเคราะห์ที่มีอยู่ (ดูหน้า `/stats` ใน WebUI):\n\n| เส้นทาง | วัตถุประสงค์ |\n| --- | --- |\n| `GET /stats/agent` | ภาพรวมเอเจนต์ทั้งหมด (ช่วงเวลา: `days`) |\n| `GET /stats/agent/comparison` | การเปรียบเทียบระหว่างเอเจนต์ |\n| `GET /stats/agent/:mindName` | สถิติรายละเอียดของเอเจนต์หนึ่ง |\n| `GET /stats/agent/:mindName/health` | คะแนนสุขภาพ |\n| `GET /stats/agent/:mindName/heatmap` | แผนที่ความร้อนกิจกรรม |\n| `GET /stats/agent/:mindName/sessions` | ตัวติดตามเซสชัน |\n| `GET /stats/api` | การใช้ API (ทั่วโลก) |\n| `GET /stats/trends` | อนุกรมเวลา |\n| `GET /stats/chat/response-times` | เวลาตอบสนองแชท |\n| `GET /stats/a2a/flow` | การไหลของข้อความ A2A |\n| `GET /stats/cron` | การวิเคราะห์ cron |\n| `GET /stats/team` · `/stats/backlog` · `/stats/activity` · `/stats/summary` · `/stats/fleet` · `/stats/monitoring` | ข้อมูลรวมของแดชบอร์ด |\n\n## GET /export/kpis\n\nการส่งออก KPI เชิงปฏิบัติการแบบ tidy-long (task 7418541b) แหล่งความจริงของข้อมูลคือ `src/db/stats.ts` — เลเยอร์ส่งออกเพียงทำให้แบน ตัวเองไม่วัดอะไรเลย\n\n```\nGET /export/kpis?format=csv|json|xlsx&days=7\n```\n\n| พารามิเตอร์ | ค่า | ค่าเริ่มต้น |\n| --- | --- | --- |\n| `format` | `csv` · `json` · `xlsx` | `json` |\n| `days` | `1`–`365` (หน้าต่างสำหรับภาพรวมเอเจนต์) | `7` |\n\nการตอบสนอง:\n\n- `format=json` → `{ generated_at, period_days, format: \"long\", columns, row_count, rows[] }`\n- `format=csv` → `text/csv; charset=utf-8` (RFC 4180, BOM, CRLF) เป็นไฟล์แนบ\n- `format=xlsx` → สมุดงาน Excel (ชีตเดียว `KPIs`) เป็นไฟล์แนบ\n\nคอลัมน์ tidy-long (เหมือนกันในทุกรูปแบบ):\n\n| คอลัมน์ | ความหมาย |\n| --- | --- |\n| `kategorie` | กลุ่ม KPI: `fleet`, `summary`, `backlog`, `activity`, `team`, `monitoring`, `agent_overview` |\n| `metrik` | เส้นทางเมทริกที่ทำให้แบน (เช่น `throughput.done_24h_total`) |\n| `wert` | ค่าสเกลาร์ (ตัวเลข ข้อความ หรือ `NULL` เมื่อมีเพียง `detail` ที่มีข้อมูล) |\n| `einheit` | `value` · `count` · `text` · `json` |\n| `zeitstempel` | ประทับเวลา ISO-8601 ของการสร้างการส่งออก |\n| `quelle` | ฟังก์ชันต้นทางใน `src/db/stats.ts` |\n| `detail` | เพย์โหลด JSON สำหรับอาร์เรย์/ออบเจกต์ลึก มิฉะนั้นว่างเปล่า |\n\nตัวอย่าง:\n\n```bash\ncurl -s -H \"Authorization: Bearer $MIND_KEY\" \\\n  \"https://synapse.schaefer.zone/export/kpis?format=csv&days=7\" -o kpis.csv\n```\n\nหน้า `/stats` ของ WebUI เรนเดอร์การส่งออกเดียวกันเป็นปุ่มดาวน์โหลดสามปุ่ม (CSV/JSON/XLSX) ในส่วน «KPI export»\n","content_html":"<h1>API สถิติและ KPI</h1>\n<p>Synapse เปิดเผยสถิติแบบอ่านอย่างเดียวเกี่ยวกับสุขภาพของเอเจนต์ การใช้ API แนวโน้ม และ KPI ของฟลีต เอนด์พอยต์ทั้งหมดยอมรับทั้ง MindKey (<code>Authorization: Bearer</code>) หรือ JWT ของผู้ใช้ (<code>requireMindOrUser</code>)</p>\n<p>เส้นทางวิเคราะห์ที่มีอยู่ (ดูหน้า <code>/stats</code> ใน WebUI):</p>\n<table>\n<thead>\n<tr>\n<th>เส้นทาง</th>\n<th>วัตถุประสงค์</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /stats/agent</code></td>\n<td>ภาพรวมเอเจนต์ทั้งหมด (ช่วงเวลา: <code>days</code>)</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/comparison</code></td>\n<td>การเปรียบเทียบระหว่างเอเจนต์</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName</code></td>\n<td>สถิติรายละเอียดของเอเจนต์หนึ่ง</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/health</code></td>\n<td>คะแนนสุขภาพ</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/heatmap</code></td>\n<td>แผนที่ความร้อนกิจกรรม</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/sessions</code></td>\n<td>ตัวติดตามเซสชัน</td>\n</tr>\n<tr>\n<td><code>GET /stats/api</code></td>\n<td>การใช้ API (ทั่วโลก)</td>\n</tr>\n<tr>\n<td><code>GET /stats/trends</code></td>\n<td>อนุกรมเวลา</td>\n</tr>\n<tr>\n<td><code>GET /stats/chat/response-times</code></td>\n<td>เวลาตอบสนองแชท</td>\n</tr>\n<tr>\n<td><code>GET /stats/a2a/flow</code></td>\n<td>การไหลของข้อความ A2A</td>\n</tr>\n<tr>\n<td><code>GET /stats/cron</code></td>\n<td>การวิเคราะห์ cron</td>\n</tr>\n<tr>\n<td><code>GET /stats/team</code> · <code>/stats/backlog</code> · <code>/stats/activity</code> · <code>/stats/summary</code> · <code>/stats/fleet</code> · <code>/stats/monitoring</code></td>\n<td>ข้อมูลรวมของแดชบอร์ด</td>\n</tr>\n</tbody></table>\n<h2>GET /export/kpis</h2>\n<p>การส่งออก KPI เชิงปฏิบัติการแบบ tidy-long (task 7418541b) แหล่งความจริงของข้อมูลคือ <code>src/db/stats.ts</code> — เลเยอร์ส่งออกเพียงทำให้แบน ตัวเองไม่วัดอะไรเลย</p>\n<pre><code class=\"hljs language-plaintext\">GET /export/kpis?format=csv|json|xlsx&amp;days=7</code></pre><table>\n<thead>\n<tr>\n<th>พารามิเตอร์</th>\n<th>ค่า</th>\n<th>ค่าเริ่มต้น</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>format</code></td>\n<td><code>csv</code> · <code>json</code> · <code>xlsx</code></td>\n<td><code>json</code></td>\n</tr>\n<tr>\n<td><code>days</code></td>\n<td><code>1</code>–<code>365</code> (หน้าต่างสำหรับภาพรวมเอเจนต์)</td>\n<td><code>7</code></td>\n</tr>\n</tbody></table>\n<p>การตอบสนอง:</p>\n<ul>\n<li><code>format=json</code> → <code>{ generated_at, period_days, format: &quot;long&quot;, columns, row_count, rows[] }</code></li>\n<li><code>format=csv</code> → <code>text/csv; charset=utf-8</code> (RFC 4180, BOM, CRLF) เป็นไฟล์แนบ</li>\n<li><code>format=xlsx</code> → สมุดงาน Excel (ชีตเดียว <code>KPIs</code>) เป็นไฟล์แนบ</li>\n</ul>\n<p>คอลัมน์ tidy-long (เหมือนกันในทุกรูปแบบ):</p>\n<table>\n<thead>\n<tr>\n<th>คอลัมน์</th>\n<th>ความหมาย</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>kategorie</code></td>\n<td>กลุ่ม KPI: <code>fleet</code>, <code>summary</code>, <code>backlog</code>, <code>activity</code>, <code>team</code>, <code>monitoring</code>, <code>agent_overview</code></td>\n</tr>\n<tr>\n<td><code>metrik</code></td>\n<td>เส้นทางเมทริกที่ทำให้แบน (เช่น <code>throughput.done_24h_total</code>)</td>\n</tr>\n<tr>\n<td><code>wert</code></td>\n<td>ค่าสเกลาร์ (ตัวเลข ข้อความ หรือ <code>NULL</code> เมื่อมีเพียง <code>detail</code> ที่มีข้อมูล)</td>\n</tr>\n<tr>\n<td><code>einheit</code></td>\n<td><code>value</code> · <code>count</code> · <code>text</code> · <code>json</code></td>\n</tr>\n<tr>\n<td><code>zeitstempel</code></td>\n<td>ประทับเวลา ISO-8601 ของการสร้างการส่งออก</td>\n</tr>\n<tr>\n<td><code>quelle</code></td>\n<td>ฟังก์ชันต้นทางใน <code>src/db/stats.ts</code></td>\n</tr>\n<tr>\n<td><code>detail</code></td>\n<td>เพย์โหลด JSON สำหรับอาร์เรย์/ออบเจกต์ลึก มิฉะนั้นว่างเปล่า</td>\n</tr>\n</tbody></table>\n<p>ตัวอย่าง:</p>\n<pre><code class=\"hljs language-bash\">curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$MIND_KEY</span>&quot;</span> \\\n  <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/export/kpis?format=csv&amp;days=7&quot;</span> -o kpis.csv</code></pre><p>หน้า <code>/stats</code> ของ WebUI เรนเดอร์การส่งออกเดียวกันเป็นปุ่มดาวน์โหลดสามปุ่ม (CSV/JSON/XLSX) ในส่วน «KPI export»</p>\n","urls":{"html":"/docs/api/stats","text":"/docs/api/stats?format=text","json":"/docs/api/stats?format=json","llm":"/docs/api/stats?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"],"wordCount":221,"readMinutes":1,"requestedLang":"th","contentMarkdown":"\n# API สถิติและ KPI\n\nSynapse เปิดเผยสถิติแบบอ่านอย่างเดียวเกี่ยวกับสุขภาพของเอเจนต์ การใช้ API แนวโน้ม และ KPI ของฟลีต เอนด์พอยต์ทั้งหมดยอมรับทั้ง MindKey (`Authorization: Bearer`) หรือ JWT ของผู้ใช้ (`requireMindOrUser`)\n\nเส้นทางวิเคราะห์ที่มีอยู่ (ดูหน้า `/stats` ใน WebUI):\n\n| เส้นทาง | วัตถุประสงค์ |\n| --- | --- |\n| `GET /stats/agent` | ภาพรวมเอเจนต์ทั้งหมด (ช่วงเวลา: `days`) |\n| `GET /stats/agent/comparison` | การเปรียบเทียบระหว่างเอเจนต์ |\n| `GET /stats/agent/:mindName` | สถิติรายละเอียดของเอเจนต์หนึ่ง |\n| `GET /stats/agent/:mindName/health` | คะแนนสุขภาพ |\n| `GET /stats/agent/:mindName/heatmap` | แผนที่ความร้อนกิจกรรม |\n| `GET /stats/agent/:mindName/sessions` | ตัวติดตามเซสชัน |\n| `GET /stats/api` | การใช้ API (ทั่วโลก) |\n| `GET /stats/trends` | อนุกรมเวลา |\n| `GET /stats/chat/response-times` | เวลาตอบสนองแชท |\n| `GET /stats/a2a/flow` | การไหลของข้อความ A2A |\n| `GET /stats/cron` | การวิเคราะห์ cron |\n| `GET /stats/team` · `/stats/backlog` · `/stats/activity` · `/stats/summary` · `/stats/fleet` · `/stats/monitoring` | ข้อมูลรวมของแดชบอร์ด |\n\n## GET /export/kpis\n\nการส่งออก KPI เชิงปฏิบัติการแบบ tidy-long (task 7418541b) แหล่งความจริงของข้อมูลคือ `src/db/stats.ts` — เลเยอร์ส่งออกเพียงทำให้แบน ตัวเองไม่วัดอะไรเลย\n\n```\nGET /export/kpis?format=csv|json|xlsx&days=7\n```\n\n| พารามิเตอร์ | ค่า | ค่าเริ่มต้น |\n| --- | --- | --- |\n| `format` | `csv` · `json` · `xlsx` | `json` |\n| `days` | `1`–`365` (หน้าต่างสำหรับภาพรวมเอเจนต์) | `7` |\n\nการตอบสนอง:\n\n- `format=json` → `{ generated_at, period_days, format: \"long\", columns, row_count, rows[] }`\n- `format=csv` → `text/csv; charset=utf-8` (RFC 4180, BOM, CRLF) เป็นไฟล์แนบ\n- `format=xlsx` → สมุดงาน Excel (ชีตเดียว `KPIs`) เป็นไฟล์แนบ\n\nคอลัมน์ tidy-long (เหมือนกันในทุกรูปแบบ):\n\n| คอลัมน์ | ความหมาย |\n| --- | --- |\n| `kategorie` | กลุ่ม KPI: `fleet`, `summary`, `backlog`, `activity`, `team`, `monitoring`, `agent_overview` |\n| `metrik` | เส้นทางเมทริกที่ทำให้แบน (เช่น `throughput.done_24h_total`) |\n| `wert` | ค่าสเกลาร์ (ตัวเลข ข้อความ หรือ `NULL` เมื่อมีเพียง `detail` ที่มีข้อมูล) |\n| `einheit` | `value` · `count` · `text` · `json` |\n| `zeitstempel` | ประทับเวลา ISO-8601 ของการสร้างการส่งออก |\n| `quelle` | ฟังก์ชันต้นทางใน `src/db/stats.ts` |\n| `detail` | เพย์โหลด JSON สำหรับอาร์เรย์/ออบเจกต์ลึก มิฉะนั้นว่างเปล่า |\n\nตัวอย่าง:\n\n```bash\ncurl -s -H \"Authorization: Bearer $MIND_KEY\" \\\n  \"https://synapse.schaefer.zone/export/kpis?format=csv&days=7\" -o kpis.csv\n```\n\nหน้า `/stats` ของ WebUI เรนเดอร์การส่งออกเดียวกันเป็นปุ่มดาวน์โหลดสามปุ่ม (CSV/JSON/XLSX) ในส่วน «KPI export»\n","contentHtml":"<h1>API สถิติและ KPI</h1>\n<p>Synapse เปิดเผยสถิติแบบอ่านอย่างเดียวเกี่ยวกับสุขภาพของเอเจนต์ การใช้ API แนวโน้ม และ KPI ของฟลีต เอนด์พอยต์ทั้งหมดยอมรับทั้ง MindKey (<code>Authorization: Bearer</code>) หรือ JWT ของผู้ใช้ (<code>requireMindOrUser</code>)</p>\n<p>เส้นทางวิเคราะห์ที่มีอยู่ (ดูหน้า <code>/stats</code> ใน WebUI):</p>\n<table>\n<thead>\n<tr>\n<th>เส้นทาง</th>\n<th>วัตถุประสงค์</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /stats/agent</code></td>\n<td>ภาพรวมเอเจนต์ทั้งหมด (ช่วงเวลา: <code>days</code>)</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/comparison</code></td>\n<td>การเปรียบเทียบระหว่างเอเจนต์</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName</code></td>\n<td>สถิติรายละเอียดของเอเจนต์หนึ่ง</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/health</code></td>\n<td>คะแนนสุขภาพ</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/heatmap</code></td>\n<td>แผนที่ความร้อนกิจกรรม</td>\n</tr>\n<tr>\n<td><code>GET /stats/agent/:mindName/sessions</code></td>\n<td>ตัวติดตามเซสชัน</td>\n</tr>\n<tr>\n<td><code>GET /stats/api</code></td>\n<td>การใช้ API (ทั่วโลก)</td>\n</tr>\n<tr>\n<td><code>GET /stats/trends</code></td>\n<td>อนุกรมเวลา</td>\n</tr>\n<tr>\n<td><code>GET /stats/chat/response-times</code></td>\n<td>เวลาตอบสนองแชท</td>\n</tr>\n<tr>\n<td><code>GET /stats/a2a/flow</code></td>\n<td>การไหลของข้อความ A2A</td>\n</tr>\n<tr>\n<td><code>GET /stats/cron</code></td>\n<td>การวิเคราะห์ cron</td>\n</tr>\n<tr>\n<td><code>GET /stats/team</code> · <code>/stats/backlog</code> · <code>/stats/activity</code> · <code>/stats/summary</code> · <code>/stats/fleet</code> · <code>/stats/monitoring</code></td>\n<td>ข้อมูลรวมของแดชบอร์ด</td>\n</tr>\n</tbody></table>\n<h2>GET /export/kpis</h2>\n<p>การส่งออก KPI เชิงปฏิบัติการแบบ tidy-long (task 7418541b) แหล่งความจริงของข้อมูลคือ <code>src/db/stats.ts</code> — เลเยอร์ส่งออกเพียงทำให้แบน ตัวเองไม่วัดอะไรเลย</p>\n<pre><code class=\"hljs language-plaintext\">GET /export/kpis?format=csv|json|xlsx&amp;days=7</code></pre><table>\n<thead>\n<tr>\n<th>พารามิเตอร์</th>\n<th>ค่า</th>\n<th>ค่าเริ่มต้น</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>format</code></td>\n<td><code>csv</code> · <code>json</code> · <code>xlsx</code></td>\n<td><code>json</code></td>\n</tr>\n<tr>\n<td><code>days</code></td>\n<td><code>1</code>–<code>365</code> (หน้าต่างสำหรับภาพรวมเอเจนต์)</td>\n<td><code>7</code></td>\n</tr>\n</tbody></table>\n<p>การตอบสนอง:</p>\n<ul>\n<li><code>format=json</code> → <code>{ generated_at, period_days, format: &quot;long&quot;, columns, row_count, rows[] }</code></li>\n<li><code>format=csv</code> → <code>text/csv; charset=utf-8</code> (RFC 4180, BOM, CRLF) เป็นไฟล์แนบ</li>\n<li><code>format=xlsx</code> → สมุดงาน Excel (ชีตเดียว <code>KPIs</code>) เป็นไฟล์แนบ</li>\n</ul>\n<p>คอลัมน์ tidy-long (เหมือนกันในทุกรูปแบบ):</p>\n<table>\n<thead>\n<tr>\n<th>คอลัมน์</th>\n<th>ความหมาย</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>kategorie</code></td>\n<td>กลุ่ม KPI: <code>fleet</code>, <code>summary</code>, <code>backlog</code>, <code>activity</code>, <code>team</code>, <code>monitoring</code>, <code>agent_overview</code></td>\n</tr>\n<tr>\n<td><code>metrik</code></td>\n<td>เส้นทางเมทริกที่ทำให้แบน (เช่น <code>throughput.done_24h_total</code>)</td>\n</tr>\n<tr>\n<td><code>wert</code></td>\n<td>ค่าสเกลาร์ (ตัวเลข ข้อความ หรือ <code>NULL</code> เมื่อมีเพียง <code>detail</code> ที่มีข้อมูล)</td>\n</tr>\n<tr>\n<td><code>einheit</code></td>\n<td><code>value</code> · <code>count</code> · <code>text</code> · <code>json</code></td>\n</tr>\n<tr>\n<td><code>zeitstempel</code></td>\n<td>ประทับเวลา ISO-8601 ของการสร้างการส่งออก</td>\n</tr>\n<tr>\n<td><code>quelle</code></td>\n<td>ฟังก์ชันต้นทางใน <code>src/db/stats.ts</code></td>\n</tr>\n<tr>\n<td><code>detail</code></td>\n<td>เพย์โหลด JSON สำหรับอาร์เรย์/ออบเจกต์ลึก มิฉะนั้นว่างเปล่า</td>\n</tr>\n</tbody></table>\n<p>ตัวอย่าง:</p>\n<pre><code class=\"hljs language-bash\">curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$MIND_KEY</span>&quot;</span> \\\n  <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/export/kpis?format=csv&amp;days=7&quot;</span> -o kpis.csv</code></pre><p>หน้า <code>/stats</code> ของ WebUI เรนเดอร์การส่งออกเดียวกันเป็นปุ่มดาวน์โหลดสามปุ่ม (CSV/JSON/XLSX) ในส่วน «KPI export»</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}