Files
xiaoqu_mcp_service/xiaoqu-ops-report-2026-09.html
T

409 lines
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>小趣运营报告预览</title>
<link rel="stylesheet" href="/api/worktable/template/dshell.css" />
<style>
.rpt { display: flex; flex-direction: column; gap: 12px; padding: 16px 18px; }
.rpt-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; flex-wrap: wrap; }
.rpt-meta { text-align: right; }
.rpt-cols { display: grid; grid-template-columns: 1.55fr 1fr; gap: 12px; align-items: start; }
@media (max-width: 900px) { .rpt-cols { grid-template-columns: 1fr; } }
.rpt-sec { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.rpt-kpi .dshell-statValue { font-size: 21px; line-height: 1.25; }
.rpt-kpi .dshell-statLabel { letter-spacing: .2px; }
.rpt-down { color: #f85149 !important; }
.rpt-num { font-variant-numeric: tabular-nums; }
.rpt-chart { display: block; width: 100%; height: auto; margin-top: 2px; }
.rpt-legend { display: flex; gap: 14px; flex-wrap: wrap; }
.rpt-legend span { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--dsw-alias-label-secondary, #9aa4b2); }
.rpt-legend i { width: 12px; height: 3px; border-radius: 2px; display: inline-block; }
.rpt-bar { height: 6px; border-radius: 3px; background: rgba(255,255,255,.07); overflow: hidden; min-width: 64px; }
.rpt-bar > i { display: block; height: 100%; border-radius: 3px; }
.rpt-rank { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; margin-right: 7px; border-radius: 4px; background: rgba(79,142,247,.16); color: #4f8ef7; font-size: 10.5px; font-weight: 600; }
.rpt-tool { display: block; font-size: 10.5px; color: var(--dsw-alias-label-tertiary, #6b7280); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.rpt-err { margin-bottom: 9px; }
.rpt-errHead { display: flex; justify-content: space-between; gap: 10px; font-size: 11.5px; color: var(--dsw-alias-label-secondary, #9aa4b2); margin-bottom: 4px; }
.rpt-errHead code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; color: var(--dsw-alias-label-primary, #e6e8eb); }
.rpt-note { font-size: 11px; color: var(--dsw-alias-label-tertiary, #6b7280); line-height: 1.75; }
.rpt-sum { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px 14px; }
</style>
</head>
<body>
<div class="dshell rpt">
<!-- 标题区 -->
<div class="rpt-head">
<div>
<h1 class="dshell-title" style="font-size:19px">小趣运营报告 · 2026 年 9 月</h1>
<p class="dshell-sub">统计周期 2026-09-01 ~ 2026-09-30 · 数据源:小趣MCP(m0/m1/m2 库 + ES paperuselog)</p>
<div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:8px">
<span class="dshell-badge dshell-badgeDone">跑批完成</span>
<span class="dshell-badge">只读工具 32 个</span>
<span class="dshell-badge dshell-badgeWait">演示数据</span>
</div>
</div>
<div class="rpt-meta dshell-muted">
生成时间 2026-10-10 16:12<br />
schema_version v1 · 行级权限:总部视角<br />
生成方式:district.paper.statistics.query 等
</div>
</div>
<!-- KPI -->
<div class="dshell-grid rpt-kpi">
<div class="dshell-stat">
<div class="dshell-statLabel">用纸长度</div>
<div class="dshell-statValue">22.57 万米</div>
<div class="dshell-statDelta">+8.3% 环比</div>
</div>
<div class="dshell-stat">
<div class="dshell-statLabel">使用人次</div>
<div class="dshell-statValue">68.42 万</div>
<div class="dshell-statDelta">+5.1% 环比</div>
</div>
<div class="dshell-stat">
<div class="dshell-statLabel">换纸卷数</div>
<div class="dshell-statValue">2,468 卷</div>
<div class="dshell-statDelta rpt-down">-2.4% 环比</div>
</div>
<div class="dshell-stat">
<div class="dshell-statLabel">台日合计</div>
<div class="dshell-statValue">15,208</div>
<div class="dshell-statDelta">+3.6% 环比</div>
</div>
<div class="dshell-stat">
<div class="dshell-statLabel">单次用纸</div>
<div class="dshell-statValue">0.330 米</div>
<div class="dshell-statDelta rpt-down">-1.2% 环比</div>
</div>
<div class="dshell-stat">
<div class="dshell-statLabel">在用站点 / 设备</div>
<div class="dshell-statValue">386 / 1,126</div>
<div class="dshell-statDelta">+4 个站点 环比</div>
</div>
</div>
<!-- 趋势 -->
<div class="dshell-card">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">每日用纸长度走势(单位:米)</h2>
<div class="rpt-legend">
<span><i style="background:#3fb950"></i>9 月日均 7,524</span>
<span><i style="background:#d29922"></i>周末峰值</span>
<span><i style="background:#6b7280"></i>8 月日均 6,947</span>
</div>
</div>
<svg class="rpt-chart" viewBox="0 0 780 224" role="img" aria-label="每日用纸长度走势">
<defs>
<linearGradient id="g1" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#3fb950" stop-opacity=".34" />
<stop offset="100%" stop-color="#3fb950" stop-opacity="0" />
</linearGradient>
</defs>
<line x1="54" y1="196.0" x2="766" y2="196.0" stroke="rgba(255,255,255,.07)" stroke-width="1"/>
<text x="46" y="199.5" fill="#6b7280" font-size="10" text-anchor="end">0</text>
<line x1="54" y1="136.0" x2="766" y2="136.0" stroke="rgba(255,255,255,.07)" stroke-width="1"/>
<text x="46" y="139.5" fill="#6b7280" font-size="10" text-anchor="end">4k</text>
<line x1="54" y1="76.0" x2="766" y2="76.0" stroke="rgba(255,255,255,.07)" stroke-width="1"/>
<text x="46" y="79.5" fill="#6b7280" font-size="10" text-anchor="end">8k</text>
<line x1="54" y1="16.0" x2="766" y2="16.0" stroke="rgba(255,255,255,.07)" stroke-width="1"/>
<text x="46" y="19.5" fill="#6b7280" font-size="10" text-anchor="end">12k</text>
<line x1="54" y1="91.8" x2="766" y2="91.8" stroke="#6b7280" stroke-width="1" stroke-dasharray="4 4" />
<path d="M54.0,99.4 L78.6,96.6 L103.1,93.5 L127.7,90.4 L152.2,75.6 L176.8,62.6 L201.3,98.3 L225.9,93.9 L250.4,89.2 L275.0,93.8 L299.5,89.8 L324.1,75.8 L348.6,63.7 L373.2,92.7 L397.7,89.0 L422.3,95.3 L446.8,89.2 L471.4,88.9 L495.9,63.8 L520.5,66.5 L545.0,92.4 L569.6,91.6 L594.1,85.1 L618.7,78.7 L643.2,81.1 L667.8,51.2 L692.3,57.3 L716.9,85.2 L741.4,87.7 L766.0,76.0 L766.0,196.0 L54.0,196.0 Z" fill="url(#g1)" />
<path d="M54.0,99.4 L78.6,96.6 L103.1,93.5 L127.7,90.4 L152.2,75.6 L176.8,62.6 L201.3,98.3 L225.9,93.9 L250.4,89.2 L275.0,93.8 L299.5,89.8 L324.1,75.8 L348.6,63.7 L373.2,92.7 L397.7,89.0 L422.3,95.3 L446.8,89.2 L471.4,88.9 L495.9,63.8 L520.5,66.5 L545.0,92.4 L569.6,91.6 L594.1,85.1 L618.7,78.7 L643.2,81.1 L667.8,51.2 L692.3,57.3 L716.9,85.2 L741.4,87.7 L766.0,76.0" fill="none" stroke="#3fb950" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" />
<circle cx="152.2" cy="75.6" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="176.8" cy="62.6" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="324.1" cy="75.8" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="348.6" cy="63.7" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="495.9" cy="63.8" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="520.5" cy="66.5" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="667.8" cy="51.2" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<circle cx="692.3" cy="57.3" r="2.6" fill="#0b0e14" stroke="#d29922" stroke-width="1.6"/>
<text x="54.0" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/1</text>
<text x="176.8" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/6</text>
<text x="348.6" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/13</text>
<text x="520.5" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/20</text>
<text x="692.3" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/27</text>
<text x="766.0" y="216" fill="#6b7280" font-size="10" text-anchor="middle">9/30</text>
<text x="54" y="12" fill="#6b7280" font-size="10">日均 7,524 · 峰值 9/26 9,655 · 谷值 9/1 6,440</text>
</svg>
</div>
<!-- 两栏 -->
<div class="rpt-cols">
<div>
<div class="dshell-card">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">性别维度用纸结构</h2>
<span class="dshell-muted">gender 为 null 的行按口径跳过</span>
</div>
<table class="dshell-table">
<thead>
<tr><th>性别</th><th>用纸长度(米)</th><th>使用人次</th><th>单次(米)</th><th>环比</th><th>占比</th></tr>
</thead>
<tbody>
<tr>
<td>男</td>
<td class="rpt-num">129,563</td>
<td class="rpt-num">364,063</td>
<td class="rpt-num">0.356</td>
<td class="rpt-num" style="color:#3fb950">+9.4%</td>
<td><div class="rpt-bar"><i style="width:57.4%;background:#3fb950"></i></div></td>
</tr>
<tr>
<td>女</td>
<td class="rpt-num">96,157</td>
<td class="rpt-num">320,137</td>
<td class="rpt-num">0.300</td>
<td class="rpt-num" style="color:#3fb950">+6.6%</td>
<td><div class="rpt-bar"><i style="width:42.6%;background:#3fb950"></i></div></td>
</tr>
</tbody>
</table>
</div>
<div class="dshell-card" style="margin-top:12px">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">站点用纸 TOP 5</h2>
<span class="dshell-muted">TOP5 合计 78,275 米 · 占全网 34.7%</span>
</div>
<table class="dshell-table">
<thead>
<tr><th>站点</th><th>城市</th><th>用纸长度</th><th>使用人次</th><th>台日</th><th>换纸卷</th><th>环比</th><th>相对量级</th></tr>
</thead>
<tbody>
<tr>
<td><span class="rpt-rank">1</span>环球港购物中心站</td>
<td class="dshell-muted">上海</td>
<td class="rpt-num">21,480</td>
<td class="rpt-num">61,240</td>
<td class="rpt-num">1,206</td>
<td class="rpt-num">214</td>
<td class="rpt-num" style="color:#3fb950">+12.4%</td>
<td><div class="rpt-bar"><i style="width:100.0%;background:#4f8ef7"></i></div></td>
</tr>
<tr>
<td><span class="rpt-rank">2</span>中央车站枢纽站</td>
<td class="dshell-muted">上海</td>
<td class="rpt-num">18,930</td>
<td class="rpt-num">57,860</td>
<td class="rpt-num">1,140</td>
<td class="rpt-num">241</td>
<td class="rpt-num" style="color:#3fb950">+6.1%</td>
<td><div class="rpt-bar"><i style="width:88.1%;background:#4f8ef7"></i></div></td>
</tr>
<tr>
<td><span class="rpt-rank">3</span>滨江公园站</td>
<td class="dshell-muted">杭州</td>
<td class="rpt-num">15,260</td>
<td class="rpt-num">48,930</td>
<td class="rpt-num">1,082</td>
<td class="rpt-num">132</td>
<td class="rpt-num" style="color:#3fb950">+21.7%</td>
<td><div class="rpt-bar"><i style="width:71.0%;background:#4f8ef7"></i></div></td>
</tr>
<tr>
<td><span class="rpt-rank">4</span>市民中心广场站</td>
<td class="dshell-muted">苏州</td>
<td class="rpt-num">12,845</td>
<td class="rpt-num">39,420</td>
<td class="rpt-num">1,015</td>
<td class="rpt-num">118</td>
<td class="rpt-num" style="color:#f85149">-3.2%</td>
<td><div class="rpt-bar"><i style="width:59.8%;background:#4f8ef7"></i></div></td>
</tr>
<tr>
<td><span class="rpt-rank">5</span>星河湾社区站</td>
<td class="dshell-muted">南京</td>
<td class="rpt-num">9,760</td>
<td class="rpt-num">28,150</td>
<td class="rpt-num">962</td>
<td class="rpt-num">96</td>
<td class="rpt-num" style="color:#3fb950">+1.8%</td>
<td><div class="rpt-bar"><i style="width:45.4%;background:#4f8ef7"></i></div></td>
</tr>
</tbody>
</table>
</div>
<div class="dshell-card" style="margin-top:12px">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">分周汇总</h2>
<span class="dshell-muted">环比口径:日均(消除各周天数差异)</span>
</div>
<table class="dshell-table">
<thead>
<tr><th>周次</th><th>用纸长度(米)</th><th>用纸日均</th><th>使用人次</th><th>台日</th><th>日均环比</th><th>量级</th></tr>
</thead>
<tbody>
<tr>
<td>第 1 周 · 9/1–9/6</td>
<td class="rpt-num">43,856</td>
<td class="rpt-num">7,309</td>
<td class="rpt-num">132,935</td>
<td class="rpt-num">2,961</td>
<td class="rpt-num" style="color:inherit">—</td>
<td><div class="rpt-bar"><i style="width:92.0%;background:#3fb950"></i></div></td>
</tr>
<tr>
<td>第 2 周 · 9/7–9/13</td>
<td class="rpt-num">51,174</td>
<td class="rpt-num">7,311</td>
<td class="rpt-num">155,116</td>
<td class="rpt-num">3,451</td>
<td class="rpt-num" style="color:#3fb950">+0.0%</td>
<td><div class="rpt-bar"><i style="width:92.0%;background:#3fb950"></i></div></td>
</tr>
<tr>
<td>第 3 周 · 9/14–9/20</td>
<td class="rpt-num">52,444</td>
<td class="rpt-num">7,492</td>
<td class="rpt-num">158,970</td>
<td class="rpt-num">3,535</td>
<td class="rpt-num" style="color:#3fb950">+2.5%</td>
<td><div class="rpt-bar"><i style="width:94.3%;background:#3fb950"></i></div></td>
</tr>
<tr>
<td>第 4 周 · 9/21–9/27</td>
<td class="rpt-num">55,640</td>
<td class="rpt-num">7,949</td>
<td class="rpt-num">168,655</td>
<td class="rpt-num">3,739</td>
<td class="rpt-num" style="color:#3fb950">+6.1%</td>
<td><div class="rpt-bar"><i style="width:100.0%;background:#3fb950"></i></div></td>
</tr>
<tr>
<td>第 5 周 · 9/28–9/30</td>
<td class="rpt-num">22,606</td>
<td class="rpt-num">7,535</td>
<td class="rpt-num">68,525</td>
<td class="rpt-num">1,522</td>
<td class="rpt-num" style="color:#f85149">-5.2%</td>
<td><div class="rpt-bar"><i style="width:94.8%;background:#3fb950"></i></div></td>
</tr>
</tbody>
</table>
</div>
</div>
<div>
<div class="dshell-card">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">工单与订单待办</h2>
<span class="dshell-muted">共 71 单</span>
</div>
<div class="dshell-list">
<div class="dshell-listItem">
<span class="dshell-listItemTitle">出库待办<span class="rpt-tool">warehouse.todo.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">12</b>
<span class="dshell-badge dshell-badgeWait">待处理</span>
</span>
</div>
<div class="dshell-listItem">
<span class="dshell-listItemTitle">安装单待派<span class="rpt-tool">install.order.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">7</b>
<span class="dshell-badge dshell-badgeWait">待派单</span>
</span>
</div>
<div class="dshell-listItem">
<span class="dshell-listItemTitle">取件单超时<span class="rpt-tool">pickup.order.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">3</b>
<span class="dshell-badge dshell-badgeWait">需跟进</span>
</span>
</div>
<div class="dshell-listItem">
<span class="dshell-listItemTitle">设备报障未闭环<span class="rpt-tool">battery.fault.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">5</b>
<span class="dshell-badge dshell-badgeWait">处理中</span>
</span>
</div>
<div class="dshell-listItem">
<span class="dshell-listItemTitle">入库单已完结<span class="rpt-tool">warehouse.in.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">26</b>
<span class="dshell-badge dshell-badgeDone">已完成</span>
</span>
</div>
<div class="dshell-listItem">
<span class="dshell-listItemTitle">撤机单已完结<span class="rpt-tool">withdraw.order.list.query</span></span>
<span style="display:flex;align-items:center;gap:10px">
<b class="rpt-num" style="font-size:13px">18</b>
<span class="dshell-badge dshell-badgeDone">已完成</span>
</span>
</div>
</div>
</div>
<div class="dshell-card" style="margin-top:12px">
<div class="rpt-sec">
<h2 class="dshell-sub" style="font-size:13px;color:var(--dsw-alias-label-primary,#e6e8eb)">MCP 服务运行时</h2>
<span class="dshell-badge dshell-badgeDone">健康</span>
</div>
<div class="rpt-sum">
<div><div class="dshell-statLabel">工具调用</div><div class="rpt-num" style="font-size:14px">18,642</div></div>
<div><div class="dshell-statLabel">错误率</div><div class="rpt-num" style="font-size:14px">0.42%</div></div>
<div><div class="dshell-statLabel">P95 耗时</div><div class="rpt-num" style="font-size:14px">320 ms</div></div>
<div><div class="dshell-statLabel">P99 耗时</div><div class="rpt-num" style="font-size:14px">780 ms</div></div>
</div>
<div class="dshell-divider"></div>
<div class="dshell-muted" style="margin-bottom:8px">错误码分布(共 74 次)</div>
<div class="rpt-err">
<div class="rpt-errHead"><code>PERMISSION_DENIED</code><span>34 次 · 46%</span></div>
<div class="rpt-bar"><i style="width:100.0%;background:#d29922"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><code>NOT_FOUND_OR_FORBIDDEN</code><span>21 次 · 28%</span></div>
<div class="rpt-bar"><i style="width:61.8%;background:#d29922"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><code>UPSTREAM_UNAVAILABLE</code><span>14 次 · 19%</span></div>
<div class="rpt-bar"><i style="width:41.2%;background:#d29922"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><code>DATA_INTEGRITY_ERROR</code><span>5 次 · 7%</span></div>
<div class="rpt-bar"><i style="width:14.7%;background:#d29922"></i></div>
</div>
<div class="dshell-divider"></div>
<div class="dshell-muted" style="margin-bottom:8px">客户端来源占比</div>
<div class="rpt-err">
<div class="rpt-errHead"><span>mcp-kimi</span><span>61%</span></div>
<div class="rpt-bar"><i style="width:100.0%;background:#4f8ef7"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><span>mcp-claude</span><span>27%</span></div>
<div class="rpt-bar"><i style="width:44.3%;background:#4f8ef7"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><span>cli</span><span>8%</span></div>
<div class="rpt-bar"><i style="width:13.1%;background:#4f8ef7"></i></div>
</div>
<div class="rpt-err">
<div class="rpt-errHead"><span>unknown</span><span>4%</span></div>
<div class="rpt-bar"><i style="width:6.6%;background:#4f8ef7"></i></div>
</div>
</div>
</div>
</div>
<!-- 口径 -->
<div class="dshell-card">
<div class="dshell-muted" style="margin-bottom:6px">口径与说明</div>
<div class="rpt-note">
1. 用纸长度 = Σpaper_length / 100(米,3 位小数);使用人次仅累计 position_id&gt;0 且 runl_mode=0 的厕位模式行;台日合计为按日去重厕位(p_)与厕墙(t_)数的累加;单次用纸 = 用纸长度 / 使用人次。<br />
2. 换纸卷数 rfidCount 取自 ES:统计区间距今 &lt;90 天走热索引 paperuselog,否则冷索引 paperuselog_all;站点 district_strategy.rfid_use_flag=1 时按 state∈{2 上纸, 4 撤纸} 的 rfid 去重计数(去重上限 10000),否则取 state=2 记录数。<br />
3. 上述指标由小趣MCP 只读工具产出(district.paper.statistics.query、warehouse.todo.list.query、install.order.list.query、pickup.order.list.query、battery.fault.list.query 等),调用审计落 audit_log,Token 与手机号均已脱敏。<br />
4. <b>本页为版式预览稿,数值为演示数据</b>;接入真实库后按同一模板替换即可,字段名与工具返回保持一致。
</div>
</div>
</div>
</body>
</html>