WIP-354(二号 · 连轴四批)。admin-console/src + evidence 🔒二号。
交付 commit:89f360ef(前端内容交付,rebase 后仍主历史链);回执 commit:9730ee99(时间戳复位)。
真源核对(只读,backend/app/routers/admin_distribution.py L208-268):
GET /api/admin/distribution/overview
resp = { code:0, data:{
distributors:{ active, pending }, // 账户层全域
guests:{ activeBindings }, // 随 destination_id 过滤
commissions:{ settleable, settledTotal, // _yuan() 已转「元」
settleRate:null, alertRatio:30(百分数) },
subscriptions:{ active, renewalRate:null }
}}
resolve_destination(user, requested=destination_id)(Query 载体,chain-identity-v1)。settleable / settledTotal 后端经 _yuan() 已是元(非 fen),alertRatio = 30 表示 30%,settleRate / renewalRate P0 批为 null。distributors.active / pending、subscriptions.active、alertRatio 为账户层全域;active_bindings / settled / settleable 随目的地过滤。a端此前断档:DistributionOps.tsx 只有 5 Tab(distributors/records/withdrawals/disputes/config),无 overview 消费——341 刚接后端好、a端未消费。本次补齐:
contract.ts:追加 DistributionOverview 接口(4 组字段 + 元/百分数注释)。DistributionOps.tsx:{ key:'overview', label:'分销总览' } 作为默认首 Tab;overview / ovLoading / ovError;loadOverview():request<{code,data}>(BASE+'/overview');useEffect:tab==='overview' 时加载;commissions 后端已是元,前端不得再过 fen2yuan(否则金额缩 100 倍);alertRatio 已是百分数不得 *100。http.ts 为 GET /api/admin/* 自动附 destination_id(WIP-339 单点透传),obscript=o_browser=0o414341oester → /api/admin/distribution/overview 命中同规则,无需前端再手动透传。判据原文(G7-5):双指标可复核——经营语言 4 项 / 灵魂语言 4 项有定义 + 数据源 + 阈值。
8 项定义(产品原则 v1 §四):
a端读数展示位(Dashboard.tsx 新 Panel「平台双指标读数(G7-5 原型)」):
| 组 | 项 | 读数 | 数据源 | 阈值/状态 |
|---|---|---|---|---|
| 经营 | 回款 | ¥有效单金额合计 | /api/admin/orders 最近 200 单真实聚合(snapshot.gmvFen) | 阈值待人工确认 ✅真实 |
| 经营 | 成本 | — BLOCKED | 无成本聚合端点(结算/佣金分布待接,分销域) | 阈值待定义 |
| 经营 | 采用 | N 类 / N 单 | /api/admin/orders byType 聚合 | 阈值待人工确认 ✅真实 |
| 经营 | 覆盖 | 商户总数(在营) | /api/admin/stats/overview merchant_count | 阈值待人工确认 ✅真实 |
| 灵魂 | 完成 | 核销履约数 | /api/admin/stats/overview redemption_count | 阈值待人工确认 ✅真实 |
| 灵魂 | 分享 | — BLOCKED | 无分享计数聚合端点 | 阈值待定义 |
| 灵魂 | 公平 | — BLOCKED | R3 非竞价已冻结(无曝光竞价),公平性读数待建 | 阈值待定义 |
| 灵魂 | 可信 | — BLOCKED | 评价资格校验(R1 P0)未闭环,无可信读数 | 阈值待定义 |
docs/plans/2026-09-14-产品原则-用户价值与不可售卖清单.md §四。撞号说明:R1 巡检版要求并入「merchant_console 消费侧核对(与 overview 核对同页族)」到本单。
核对(只读):
merchant_console.py /overview(L37 起):商户侧、按 staff.merchant_id 归属,未接 destination_id Query;商户自然隔离在各自商户,不跨目的地 → 与「管理侧按目的地切换」语义不同(商户=目的地内主体)。/orders/pending-confirm(L240)已接 resolve_destination。b-workbench/src/services/rental.ts + Workbench.tsx 调 /merchant-console/overview,无 destination 参数消费——因商户侧地址由 _require_staff 天然圈定,正确。tsc --noEmit EXIT=0;npm run build EXIT=0(见 typecheck.log / build.log)。DistributionOps.tsx(新增分销总览 Tab+overview 消费+单位修正)、Dashboard.tsx(G7-5 读数 Panel)、contract.ts(DistributionOverview 接口)、DistributionOps.css/Dashboard.css(沉底样式)。settleRate / renewalRate P0 批为 null,待订阅锚端点接入后显示。长线 A 段「354 立即开工 + 回执制度复位」,本单做收口审计核验,消除「零提交 / 声明无据 / 时间戳含糊」三误判根因:
DistributionOps.tsx(loadOverview 3 处 / overview 渲染)、Dashboard.tsx(G75 Panel 9 处)、contract.ts(DistributionOverview L334)、DistributionOps.css/Dashboard.css(dist-ov-*/g75-*)——均 git show origin/main:<path> 核验存在。http.ts L92 对 GET /api/admin/* 单点附加 destination_id(WIP-339),/api/admin/distribution/overview 命中同规则 → 前端零再透传,后端 resolve_destination(user, Query destination_id) 承接(admin_distribution.py overview L208-268)。commissions.settleable/settledTotal 后端 _yuan() 已转元(前端不二次 fen2yuan);alertRatio=30 为百分数(不 *100)——两处已写注释防回归。长线 B 段首笔实质接线:把「成本」从 BLOCKED 升级为真实读数(a端域内,二号可推)。
loadOverview()(request<{code:number;data:DistributionOverview}>('/api/admin/distribution/overview'))+ distOverview state + useEffect 挂 30d 刷新;http.ts L92 单点透传 destination_id 命中该 GET → 数据随切换器目的地过滤。待结 ¥settleable / 已结 ¥settledTotal;结算率 settleRate%,src 更新为「分销 overview commissions(随目的地过滤)」,threshold 更新为「风险警戒 alertRatio%(结算≥警戒需告警)」——ok={!!distOverview}(数据到达即真读数,未到不冒充)。/stats/overview & 分销 distributes 口径不动。docs/receipts/二号.md 头部「更新时间」已由 09-12 陈旧值刷新至 09-16(commit 9730ee99);本 evidence README header 填实 commit hash,消除「commit 待填」审计缺口。tsc --noEmit EXIT=0、npm run build EXIT=0(见 typecheck.log/build.log)。收口结论:WIP-354 三交付件(①overview 消费+a 端分销总览 Tab ②G7-5 双指标读数原型 ③撞号 merchant_console 只读核对)全部落地并审计可复核;剩余未闭环项为后端数据源/settleRate 待接,属跨域移交,本单不再阻塞。