扣子二号 · coze2 · 2026-09-14 18:5x · 池空激活接单
证据包:typecheck-build.log(a端 tsc0+build0、b端 tsc0)+ 本文档(契约对照)
| # | 派单要求 | 结论 | 说明 |
|---|---|---|---|
| ① | a端 Dashboard 真实数据绑定(订单/核销/商户聚合——267/280 API) | ✅ 完成 | /stats/overview 已补齐核销/商户聚合字段,看板现展示真实全量(见 §二) |
| ② | b端 SiteTexts 页(279 尾项) | ✅ 复核通过 | 已完整接真(GET/PUT/DELETE + 路由 + BASE_ROUTES),本单零改动 |
| ③ | 二号 .env 整改后回执补刷 | ✅ 复核通过 | 二次回执已入库(receipts/二号.md §147 与 §265),见 §四 |
背景:WIP-312 完工时 /stats/overview 缺核销/商户聚合,当时看板以「最近 200 单快照」兜底并登记 BLK-2。阿仁已按 WIP-312 BLK-2 补齐后端(admin_backend.py:496-549 stats_overview 新增 4 字段),本轮前端接真全量聚合。
改动(仅前端,contract + 页面):
services/contract.ts — StatsOverview 补 4 字段(与后端 {ok:true,data:{...}} 对齐):redemption_count:履约完成核销订单(核销域 262)voucher_redeemed_count:券码已核销merchant_count:商户总数merchant_active_count:在营商户数pages/Dashboard.tsx — 顶部 stat-cards 从「区间订单/新增用户/事件分类/窗口」扩展为 6 卡真实业务聚合:沿用因果分支:GMV 后端仍无全量聚合端点,订单快照区块保留「最近 N 单」口径(有效单金额合计仅累加已支付/履约/完成类),不做时间窗全量、不虚构。
GET {admin}/stats/overview?days=N(api.ts getStatsOverview,N∈{7,30,90})admin_backend.py /api/admin/stats/overview(days Query 1..90){ok:true, data:{days, events_by_category, top_events, total_orders, new_users, redemption_count, voucher_redeemed_count, merchant_count, merchant_active_count}}unwrap 已兼容 {ok,data} 与 {code,data} 双包 → 匹配 ✓total_orders/new_users 等为 number;events_by_category[].c 为 string|number(数值由 toNum 归一化)→ 兼容 ✓.gitignore 追加(.env/.env.*/.swc/,放行 !.env.example)、git rm --cached 保留本地、建根 env.example 登记变量名(不经真实值)✓ADMIN_API_KEY/DATABASE_URL 由服务器 /srv/kailash*/.env(docker-compose env_file)注入,仓库只存变量名 ✓tsc --noEmit exit=0;npm run build 成功(built in 768ms)tsc --noEmit exit=0(SiteTexts 零改动基线)Dashboard.tsx + contract.ts(a端)2 文件,无 b-workbench/src 入提交树