电商业务AI数据处理SOP
离线文件 + 在线 API 双通道 × AI 全自动处理 × 零编程门槛
📂 离线 CSV / Excel
🔌 在线 MCP / BI 图卡
🤖 AI 自动清洗
📊 看板自动汇总
👥 零编程门槛
00痛点 · 方案 总览(先看这一张)
本次收集到的业务痛点分为三大类共 8 项,下表标出每一项在本 SOP 中的覆盖状态与对应章节,方便业务同学带着问题查阅。
🔥 三类痛点速览
P1-1
多个表相互映射,关联关系混乱
✅ 已闭环
业务现状:审核库、回扫库、策略库、商品库等多个表来回 join,业务同学看不懂主外键。
方案:第 04 节"统一主键 + 表关系总图" — 用 auditId 作为唯一通用主键,AI 按"翻译表"自动 join,业务同学只看汇总结果,不写 SQL。
P1-2
人机 diff 三环节多标签:机审/一审/二审,且每个环节多标签
🆕 新增专章
业务现状:进入二审的样本以二审为标准,需分别判定机审、一审"漏放"了哪些标签、"误伤"了哪些标签。多标签场景下手工对比极易出错。
方案:第 05 节"人机 diff 三环节判定矩阵" — 标签按集合差判定漏放/误伤,AI 自动出双向 diff 矩阵,业务直接看结论。
P1-3
回扫队列结果列混杂在一起,无法分别提取
🆕 新增专章
业务现状:一列里混着审核环节(机审/人审)、准入时间、结果标签,业务同学需要手工切分。
方案:第 06 节"回扫结果列三段拆分" — AI 按固定规则 / 正则把混合列拆为 review_type+access_time+result_label 三列。
P2-1
智能质检数据出数慢,需与人工质检分开导出/转换
🆕 新增专章
业务现状:智能质检和人工质检走同一管道,智能批量大、转换慢,拖累人工部分的及时性。
方案:第 07 节"智能 / 人工双通道分流" — 文件夹与命名前缀区分,AI 双通道并行,互不阻塞。
P2-2
导出台字段无法自调,冗余字段多,模型转换慢
🆕 新增专章
业务现状:源端导出全字段无法裁剪,业务实际只用 5–10 个核心字段,转换大量冗余字段拉慢速度。
方案:第 08 节"字段白名单裁剪" — 在翻译表新增必要列,AI 只读 / 只转白名单字段;冗余字段自动留底归档不转换。
P2-3
数据量大无法日维度全量留底单表,处理易出错;"虾"工具不稳定
🆕 新增专章
业务现状:日维度数据十万–百万行级别,单表存不下;目前用"虾"工具转换不稳定经常瘫痪。
方案:第 09 节"分片留底 + 稳定转换" — 按 ds + stage 分片归档(每片 5 万行内),改用 AI 脚本(Python / DuckDB)替代"虾"工具,离线稳定。
P3-1
数据源队列多,需从多个看板分别查看汇总
🟡 升级
业务现状:负责人手动从多个看板登记,重复查看 + 手抄,效率低易出错。
方案:第 10 节"多源看板一键登记" — 一份"看板登记表",AI 按表自动抓取或读取导出文件,直接生成统一汇总,告别手抄。
P3-2
数据多依赖人工填写汇总,准确度需复核,重复消耗人力
✅ 已闭环
业务现状:每天人工把多份表 copy paste 到一份大汇总,再手工抽查复核。
方案:第 10 节 + 第 12 节"自动汇总 + 抽样校验" — AI 一键合并 + 自动抽样比对源表与汇总表,输出"差异报告"代替人工复核。
✅ 闭环原则
所有痛点 → 都对应到一个具体章节 + 一份具体模板 / 文件夹位置 + 一句"业务同学怎么做"。本 SOP 不写"未来再做",只写"今天就能用"。
01场景与角色
业务背景:电商三环节质检 — 事前(商品上架)、事中(交易/审核)、事后(差评/申诉)。
使用对象:本 SOP 面向业务同学(无编程基础),操作动作只有「下文件 → 拖文件夹 → 看报告」。所有自动化由 AI / 数据侧承接。
🟦 事前(商品/内容)
对象:上架前商品、图文、价格
主要痛点:多源数据源汇总(P3-1 / P3-2)
商品池
价格水位线
🟧 事中(交易/审核)
对象:审核队列、回扫队列、人机 diff
主要痛点:多表映射 + 多标签 diff + 列混杂(P1-1/P1-2/P1-3)
机审
一审
二审
🟩 事后(质检/差评)
对象:智能质检、人工质检、差评样本
主要痛点:智能/人工分流 + 冗余字段 + 大数据量(P2-1/P2-2/P2-3)
智能质检
人工质检
02总体流程(双通道全景图)
数据处理分为离线和在线两大通道,最终汇入统一的「汇总结果」和「报告生成」环节:
📥 离线通道(CSV / Excel 文件)
① 导出从看板/系统下载 CSV/Excel
→
② 扔文件拖到「01_待处理」目录
→
③ AI 清洗字段映射 + 列拆分 + 裁剪
→
④ 比对校验人机 diff / 抽样
→
⑤ 汇总看板 + 报告
📡 在线通道(MCP / BI 图卡 API)
① Agent 触发定时 / 自然语言
→
② 选择 MCP Tool匹配图卡/SQL
→
③ 拼参调用构造 variables + 鉴权
→
④ 数据解析字段提取 + 格式化
→
⑤ 汇总报告渲染 + 分发
✅ 业务同学只看最终汇总结果。离线通道只做 ①②⑤;在线通道全程自动,0 人工介入。
📂 一、离线数据处理
离线数据来源于业务系统导出的 CSV / Excel 文件,由 AI 自动完成清洗、对比、汇总全链路。业务同学只需「下文件 → 扔文件 → 看报告」。
1.1文件夹与命名规范
📁 共享文件夹结构(建一次,长期用)
📁 电商质检数据中心/
├── 📄 00_字段翻译表.xlsx # 业务字段字典(含必要字段白名单)
├── 📄 00_看板登记表.xlsx # 多源看板清单(P3-1 用)
├── 📁 01_待处理/ # 业务同学扔文件入口
│ ├── 📁 事前_商品/
│ ├── 📁 事中_审核/
│ │ ├── 📁 机审/
│ │ ├── 📁 一审/
│ │ ├── 📁 二审/
│ │ └── 📁 回扫/
│ └── 📁 事后_质检/
│ ├── 📁 智能质检/ # P2-1 双通道
│ └── 📁 人工质检/ # P2-1 双通道
├── 📁 02_已清洗/ # AI 产出干净数据,按 ds 分片
│ └── 📁 ds=2026-05-11/ # P2-3 分片留底
├── 📁 03_汇总结果/ # 看板与人机 diff 报告
│ └── 📁 2026-05-11/
└── 📁 99_归档/ # 90 天前文件,含未裁剪的全字段留底
✍️ 文件命名规范
统一格式:环节_细分类_日期_负责人.xlsx。事中/事后必须用细分类区分通道。
| 场景 | 示例文件名 |
| 事中-机审导出 | 事中_机审_20260511_成员A.csv |
| 事中-一审导出 | 事中_一审_20260511_成员B.xlsx |
| 事中-二审导出 | 事中_二审_20260511_成员B.xlsx |
| 事中-回扫队列 | 事中_回扫_20260511_成员C.csv |
| 事后-智能质检 | 事后_智能_20260511_成员D.csv |
| 事后-人工质检 | 事后_人工_20260511_成员E.xlsx |
1.2数据结构类痛点
🔧 P1-1 多表映射:统一主键 + 关系总图
问题:审核库、回扫库、策略库、商品库各有自己的 ID,业务同学看不懂怎么 join。
解法:约定全链路通用主键,AI 按通用主键自动 join 出宽表,业务同学只看汇总不写 SQL。
| 表 | 用途 | 主键 / 关联键 | 业务同学需关注 |
| 审核库(机审/一审/二审) | 记录每次审核结论 | auditId | 看「环节 + 标签」 |
| 回扫队列 | 命中策略后回扫 | auditId + strategyId | 看「准入时间 + 结果」 |
| 策略库 | 命中规则 | strategyId + funcType | 看「策略名 + 阈值」 |
| 商品库 | 商品基础信息 | skuId | 看「类目 + 价格」 |
💡 业务同学只需做:导出文件时务必带上auditId(或 skuId),AI 就能把多张表自动拼起来。其他键 AI 自动识别。
1.3人机 diff 三环节判定矩阵 (P1-2)
问题:机审 / 一审 / 二审 三个环节每个都是多标签结果。进入二审的样本,要以二审为真相,分别判定机审、一审「漏放」了哪些标签、「误伤」了哪些标签。手工对比 + 多标签集合差,业务同学算不过来。
📐 业务定义(先对齐口径)
- 真相集合(GT):以二审标签集合为准,记为
L₂。
- 漏放(Miss):真相里有,但当前环节没有 →
L₂ − Lₓ(这些应该判出却没判出)。
- 误伤(Over):当前环节有,但真相里没有 →
Lₓ − L₂(这些不该判却判了)。
- 命中(Hit):交集 →
L₂ ∩ Lₓ(判得对的部分)。
其中 Lₓ 表示机审标签集合 L₀ 或一审标签集合 L₁。
📊 一行样本的 diff 示例(auditId = X001)
| 环节 | 标签集合 | vs 二审 命中 | 漏放(应判未判) | 误伤(不该判却判了) |
| 机审 L₀ |
标签A、标签B |
标签B |
标签C |
标签A |
| 一审 L₁ |
标签B、标签C、标签D |
标签B 标签C |
— |
标签D |
| 二审 L₂(真相) |
标签B、标签C |
— | — | — |
🤖 AI 自动产出(业务同学只看结论)
把事中_机审_* / 事中_一审_* / 事中_二审_*三类文件扔进对应文件夹,AI 自动按auditId对齐三环节标签,输出三份报告:
- 明细表:每个 auditId 一行,含三环节标签集合、漏放集合、误伤集合。
- 标签级汇总:按标签维度汇总,输出"机审漏放 Top 标签"、"一审误伤 Top 标签"。
- 环节对比看板:机审 漏放率 / 误伤率,一审 漏放率 / 误伤率,环比折线。
📋 输出表样式(02_已清洗/ 下生成)
| auditId | L₀ 机审 | L₁ 一审 | L₂ 二审 | 机审漏放 | 机审误伤 | 一审漏放 | 一审误伤 |
| X001 | 标签A;标签B | 标签B;标签C;标签D | 标签B;标签C |
标签C | 标签A | — | 标签D |
💡 业务同学只需做:把三个环节的导出表分别扔到对应子文件夹,不要自己合并。AI 会按auditId对齐 + 集合差自动算 diff。
⚠️ 标签字段的统一格式
多标签必须用;(半角分号)或|分隔;不要混用空格、中文逗号。否则集合差会算错。翻译表里已固定 label 列分隔符为 ;。
1.4回扫队列结果列拆分 (P1-3)
问题:回扫导出的"结果"一列把审核环节 / 准入时间 / 结果标签三种信息塞在一起,例如:
机审|2026-05-11 14:23:01|通过
人审|2026-05-11 16:08:42|打回-标签B,标签C
机审|2026-05-11 17:12:09|存疑
🛠️ AI 拆分规则(业务同学不用看懂)
- 按第一个分隔符(
| / / / 空格 / 全角竖线)切前两段:review_type + access_time;
- 剩余部分作为
result_label,多标签按,或;再次切分;
- 识别失败的行不丢弃,单独输出到「待人工核对」sheet,并标红行号。
📋 拆分前后对照
❌ 拆分前(混杂列)
| auditId | 结果 |
| X001 | 机审|2026-05-11 14:23:01|通过 |
| X002 | 人审|2026-05-11 16:08:42|打回-标签B,标签C |
✅ 拆分后(三列规整)
| auditId | review_type | access_time | result_label |
| X001 | 机审 | 2026-05-11 14:23:01 | 通过 |
| X002 | 人审 | 2026-05-11 16:08:42 | 标签B;标签C |
💡 业务同学只需做:把回扫导出的原始 CSV 直接扔到01_待处理/事中_审核/回扫/,不要自己手工切单元格。如果发现"待人工核对"sheet 有未识别行,按提示在源系统改格式或反馈数据侧补规则。
1.5智能 / 人工质检双通道分流 (P2-1)
问题:智能质检批量大、转换慢,和人工质检走同一管道时拖慢人工部分的及时性。
解法:物理上分两个文件夹 + 两个独立 AI 任务并行跑,互不阻塞。
| 通道 | 文件夹 | 规模典型值 | AI 任务 | SLA |
| 智能质检 |
01_待处理/事后_质检/智能质检/ |
10–100 万行/天 |
白名单裁剪 + 分片处理 + 大批量异步 |
T+1 8:00 前出结果 |
| 人工质检 |
01_待处理/事后_质检/人工质检/ |
1 千–1 万行/天 |
实时清洗 + 即时报告 |
当天 30 分钟内出结果 |
✅ 业务同学只需做:智能质检文件扔智能子目录,人工质检文件扔人工子目录。千万不要混放。两个通道各自有独立的"人话报告"。
⚠️ 量级建议
- 智能质检单文件 > 10 万行:源端按"小时分片"导出,避免一份文件几十万行;
- 人工质检文件不需要分片,按天一份即可;
- 两个通道共用同一份字段翻译表 + 同一份白名单(下章)。
1.6字段白名单裁剪 (P2-2)
问题:导出台不能选字段,全字段导出 → 大量冗余 → 模型转换慢 + 文件臃肿。
解法:在00_字段翻译表.xlsx新增「必要」列,AI 只对必要字段做清洗与汇总,冗余字段原样保留到归档目录、不进汇总管道。
📋 翻译表新版结构(增加最后两列)
| 标准字段 | 业务习惯叫法 | 类型 | 单位 |
必要 | 处理动作 |
ds | 日期 / dt / 统计日 | 日期 | yyyy-mm-dd | ✅必要 | 清洗 + 汇总 |
auditId | 审核ID / caseId | 文本 | - | ✅必要 | 清洗 + 汇总(主键) |
label | 结论 / 标签 | 枚举 | ;分隔多标签 | ✅必要 | 清洗 + 汇总 |
review_type | 审核环节 / 机审/人审 | 枚举 | - | ✅必要 | 清洗 + 汇总 |
access_time | 准入时间 | 时间 | yyyy-mm-dd hh:mm:ss | ✅必要 | 清洗 + 汇总 |
price | 价格 | 数字 | 分 | ✅必要 | 清洗 + 汇总 |
extraInfo | 扩展信息 | JSON | - | 🟡按需 | 仅展开白名单 key(如 reason、tags) |
| operatorIp | 操作员IP | 文本 | - | ❌冗余 | 不进汇总,原样归档 |
| deviceModel | 设备型号 | 文本 | - | ❌冗余 | 不进汇总,原样归档 |
💡 业务同学只需做:新业务出现新字段时,在翻译表加一行,第 5 列填「必要 / 按需 / 冗余」即可。AI 自动按这列决定要不要进汇总。
✅ 收益智能质检文件转换体积通常缩小 60–80%,速度提升 3–5 倍。
1.7大数据量分片留底 + 稳定转换 (P2-3)
问题:日维度全量塞进单表 → Excel 打不开 / 写入出错 / 设备卡顿;目前用"虾"工具不稳定,经常瘫痪不干活。
🗂️ 分片留底规则
清洗结果按ds + stage分片,每片不超过 5 万行,文件夹结构如下:
📁 02_已清洗/
└── 📁 ds=2026-05-11/
├── 📁 stage=事中_机审/
│ ├── part-00001.xlsx # 0–5 万行
│ ├── part-00002.xlsx # 5–10 万行
│ └── part-00003.xlsx
├── 📁 stage=事中_一审/
└── 📁 stage=事后_智能/
└── part-00001.parquet # 超大量自动转 Parquet
🛠️ 替代"虾"工具的稳定方案
| 对比项 | 原"虾"工具 | 新方案(AI 脚本) |
| 稳定性 | 容易瘫痪不干活 | 本地 Python + DuckDB,离线稳定,不依赖外部服务 |
| 处理速度 | 百万行级容易卡死 | 百万行 1–3 分钟内 |
| 失败重试 | 需要人工重启 | 自动重试 3 次,失败自动告警 |
| 错误回溯 | 不易定位 | 每片独立日志,可定位到某行某列 |
| 业务同学体感 | 等待 + 反复点 | 扔文件后等"人话报告" |
⚠️ 给业务同学的小提醒
- 不要再尝试把日维度的数据全塞进一个 Excel 文件 — Excel 行数上限 104 万,但实际打开 30 万行就会非常卡;
- 需要看明细:直接打开 02_已清洗 / ds=日期 / stage=环节 / 下对应的
part-*文件即可,每片行数受控;
- 需要看汇总:直接看 03_汇总结果 看板,不要打开原始大文件。
1.8多源看板一键登记 (P3-1 / P3-2)
问题:数据源 = 队列 + 看板 + 报表 等多个入口,目前由负责人手抄到一份大表,效率低、易错。
解法:一份「看板登记表」固化所有数据源;AI 按表自动抓取或读取导出文件;自动生成统一汇总。
📋 看板登记表结构(00_看板登记表.xlsx)
| 看板/数据源名称 | 所属环节 | 主键字段 | 导出方式 |
导出频次 | 负责人 | 对应清洗目录 |
| 商品池看板 | 事前 | skuId | 看板手动导出 CSV | 每日 | 成员B | 事前_商品/ |
| 机审命中队列 | 事中 | auditId | 看板手动导出 CSV | 每日 | 成员A | 事中_审核/机审/ |
| 一审任务台 | 事中 | auditId | API / 导出 Excel | 每日 | 成员B | 事中_审核/一审/ |
| 二审任务台 | 事中 | auditId | API / 导出 Excel | 每日 | 成员B | 事中_审核/二审/ |
| 回扫队列 | 事中 | auditId | 看板导出 CSV | 每小时/每日 | 成员C | 事中_审核/回扫/ |
| 智能质检结果 | 事后 | auditId | 看板导出 CSV | 每日 | 成员D | 事后_质检/智能质检/ |
| 人工质检结果 | 事后 | auditId | 看板手动导出 | 每日 | 成员E | 事后_质检/人工质检/ |
🤖 AI 一键汇总(每天 17:00 自动 / 手动触发)
- 读取看板登记表 → 知道今天应到的所有文件清单;
- 检查 01_待处理 下每条记录对应的目录是否到齐;
- 缺文件 → 自动 @ 对应负责人催单(IM 群提醒);
- 到齐则自动跑清洗 → 分片 → 汇总;
- 汇总落盘到 03_汇总结果 / 当日 / 下,并群内推送当日汇总链接 + 关键指标。
🧪 自动抽样校验(替代人工复核 P3-2)
汇总完成后 AI 自动做一次抽样校验:
- 每个数据源随机抽
min(50, 总行数*1%) 条;
- 对比汇总表 vs 源表的主键 + 关键字段是否一致;
- 不一致行输出到「差异核对」sheet,标红 + 给出可能原因;
- 没有差异时给"✅ 抽样 50 条全部一致,无需人工复核"。
✅ 业务同学体感
- 不再需要每天打开 N 个看板手抄;
- 不再需要逐行人工复核;
- 只需关注:是否被 AI @了"缺文件" + 是否有"差异核对"sheet 两件事。
1.9AI 人话报告样式
✅ 收到 7 份文件 / 应到 7 份(看板登记表对账完成)
📊 当日基本情况:
- 事前_商品:1.2 万行
- 事中_机审:38 万行(智能通道,已分 8 片)
- 事中_一审:1.4 万行
- 事中_二审:3,200 行
- 事中_回扫:26 万行(混杂列已自动拆为 3 列)
- 事后_智能质检:54 万行(白名单裁剪后体积 -72%)
- 事后_人工质检:4,800 行
🔁 人机 diff(以二审为真相):
- 机审 漏放率 12.3% (Top: 标签C、标签D)
- 机审 误伤率 4.1% (Top: 标签A)
- 一审 漏放率 3.8% (Top: 标签C)
- 一审 误伤率 6.7% (Top: 标签D)
⚠️ 待业务确认:
- 第 88 行:日期写成"5.11",已自动改成 2026-05-11
- 回扫文件第 456 行:结果列拆分失败,请人工核对
🧪 抽样校验:50 条 / 源表 = 50 条 / 汇总表,全部一致 ✅
📂 已保存:
- 02_已清洗/ds=2026-05-11/
- 03_汇总结果/2026-05-11/
- 03_汇总结果/2026-05-11/人机diff报告.xlsx
1.10团队公约:6 件事
🌟 全组只需记住这 6 条
- 文件命名:
环节_细分类_日期_你的名字.xlsx(事中分机审/一审/二审/回扫;事后分智能/人工)
- 扔对地方:严格按 01_待处理 的子目录扔,千万不要混放智能与人工质检
- 不要预处理:不要自己合并表、不要自己拆列、不要自己打人机 diff — 全部交给 AI
- 多标签用 ;:标签字段统一用半角分号
;分隔,禁用空格、中文逗号
- 新字段加翻译表:新业务出现新字段,去翻译表加一行(写"必要/按需/冗余"),下次自动认
- 看人话报告:每天 17:00 后看 AI 发的报告,关注「缺文件 @」+「差异核对」两件事
1.11离线数据 FAQ
| 业务同学问 | 标准答复 |
| "我的二审表里有些样本没进过一审,diff 怎么算?" | AI 会按"未触发"留空,不会算成漏放/误伤;可在 diff 报告里筛选「未触发环节」单独看 |
| "机审给的标签是英文,二审是中文,能对得上吗?" | 翻译表里加一行「英文别名 → 中文标准名」,AI 自动归一化后再做集合差 |
| "回扫文件有些行没拆出来怎么办?" | AI 已把这些行单独放「待人工核对」sheet,按提示在源系统改格式或反馈数据侧补规则 |
| "智能质检文件特别大,导出就花 1 小时怎么办?" | 建议源端按"小时分片"导出(每小时一份),AI 双通道并行处理 |
| "翻译表的「必要」列我不会判?" | 3 个原则:① 进汇总用 → 必要;② 偶尔展开看 → 按需;③ 完全不看 → 冗余。不确定先填「按需」 |
| "AI @我说缺文件,但我已经传了?" | 大概率是文件命名不对(环节/细分类/日期格式)或扔错子目录,按"五件事"对照检查 |
| "我能直接打开 02_已清洗 的分片文件改吗?" | 不要。改了 AI 下次重跑会被覆盖。要修请改源文件 + 重新扔 01_待处理 |
🔌 二、在线数据处理
在线数据通过 MCP 协议调用 BI 平台 API,实时获取图卡数据、执行 SQL 查询。Agent 全自动调度,业务同学只需自然语言提问即可获得结构化数据。
2.1在线数据源总览
除了离线 CSV/Excel 文件外,系统还通过 MCP(Model Context Protocol)协议对接在线数据源。Agent 可实时调用 BI 平台 API,获取图卡数据、执行 SQL 查询、拉取聚合指标。
📡 在线数据源类型
| 数据源类型 | 接口协议 | 覆盖数据 | 调用方式 | 时效性 |
| BI 图卡平台 | MCP · REST API | 仪表盘图卡数据(指标卡、表格、折线图等) | Agent 按 cardId 调用 | 准实时(T+5min) |
| 数据表查询 | MCP · SQL | 明细日志、订单数据、审核记录 | Agent 自动拼 SQL | 准实时(T+10min) |
| 业务画像 API | RESTful | 商品/用户维度聚合指标 | HTTP GET + Token | 每日刷新 |
| 策略引擎 API | RESTful | 规则命中、推送量、积压 | HTTP GET + 签名 | 实时 |
✅ 核心优势:Agent 通过 MCP 协议统一调度,业务同学只需自然语言提问,不需要关心具体 API 细节。
2.2BI 图卡数据输出(核心能力)
BI 图卡是在线数据的核心来源。Agent 通过 MCP 工具调用 BI 平台 API,按 cardId 获取图卡数据,支持指标卡、多列表格、折线图等多种图卡类型。
🧩 图卡调用基本结构
// MCP 工具调用格式
{
"tool": "query_bi_card_data",
"parameters": {
"bizId": "biz_space_001", // BI 空间 ID
"cardQuery": {
"cardId": "card_metric_001", // 图卡唯一标识
"pageId": 100001, // 仪表盘 ID
"paramsId": "param_hash_abc", // 可选:仪表盘筛选态快照
"limit": 50, // 返回行数上限
"variables": [ // 可选:自定义筛选条件
{"key": "time_range.start", "value": "20260501", "valueType": "num_YYYYMMDD"},
{"key": "time_range.end", "value": "20260514", "valueType": "num_YYYYMMDD"},
{"key": "category_filter", "value": "类目A", "valueType": "string"}
]
}
}
}
📋 图卡类型与返回格式
| 图卡类型 | cardId 示例 | 返回结构 | 典型用途 |
| 指标卡(IndexCard) | card_metric_001 | 单值 + 环比 + 趋势 | 核心 KPI 展示(如差评率、转化率) |
| 多列表格(MultiTable) | card_table_002 | 二维表格数据 | 类目明细、TOP 排行、标签分布 |
| 折线图(LineChart) | card_line_003 | 时序数据点 | 趋势分析、环比对比 |
📊 图卡数据字段规范(示例)
以一个典型的「核心指标卡」为例:
| 返回字段 | 含义 | 示例值 |
metric_value | 本期指标值 | 7.92% |
sub_metric_value | 上期指标值 | 8.16% |
diff | 环比变化 | -0.0299 |
以一个「多列表格」为例(类目级数据):
| 返回字段 | 含义 | 示例值 |
first_cate_name | 一级类目名称 | 类目A |
metric_rate | 类目维度指标率 | 15.01% |
metric_cnt | 量级 | 1,234 |
last_period_rate | 上期指标率 | 11.81% |
diff | 环比 | +3.2% |
💡 字段优先原则:所有指标(比率/占比/环比)直接使用 BI 图卡返回的字段值,禁止自行计算或推导。Agent 只做「消费数据 + 格式化呈现」。
2.3图卡查询三种模式
根据不同场景,图卡查询有三种使用方式:
📋 模式对比
| 模式 | 适用场景 | 参数传递 | 说明 |
| ① 快速查询 |
有 paramsId + 无需自定义筛选 |
只传 paramsId,不传 variables |
paramsId 自动还原仪表盘筛选态,拿到完整默认数据 |
| ② 默认查询 |
无 paramsId + 无需筛选 |
只传 cardId + pageId |
图卡使用默认变量值 |
| ③ 自定义筛选 |
需要按类目/时间等条件过滤 |
传 variables 数组 |
按需构造筛选参数,支持多维组合 |
⚠️ 关键约束(踩坑总结)
⚠️ 必须注意的规则:
- 空串陷阱:variables 中 value 传空串会被 SQL 当作
in ('') 筛选条件,返回 0 条数据。不需要筛选时不要传 variables;
- 多值筛选:多选值用逗号分隔传入单个 value 字段(如
"value": "子类A,子类B,子类C");
- LIMIT 截断:联合筛选多类目时图卡 SQL 的 LIMIT 会截断结果。需要按类目完整取数时,拆成每个类目单独发一次请求;
- 模型参数:调用时必须指定
_llmModel 参数为授权模型,否则请求被拒。
🔧 按类目取数的正确姿势(关键)
当图卡 SQL 固定形如 WHERE category_1 in (?) AND category_leaf in (?) 时:
- 先获取候选值列表:调用
get_card_variables 工具获取筛选项的候选 options(如所有叶子类目列表);
- 按目标一级类目过滤:从 options 中筛选出属于目标一级类目的所有叶子类目;
- 构造 variables:一级类目传单值,叶子类目传逗号分隔的完整列表;
- 不传 paramsId:避免被仪表盘预置的类目筛选干扰。
// 示例:按「类目A」获取 TOP case
{
"cardQuery": {
"cardId": "card_table_002",
"pageId": 100001,
"limit": 10,
"variables": [
{"key": "time_range.start", "value": "20260408", "valueType": "num_YYYYMMDD"},
{"key": "time_range.end", "value": "20260421", "valueType": "num_YYYYMMDD"},
{"key": "category_1_filter", "value": "类目A", "valueType": "string"},
{"key": "category_leaf_filter", "value": "子类A1,子类A2,子类A3,子类A4,...", "valueType": "string"}
]
}
}
2.4API 调用节流与容错
⏱ 节流控制(强约束)
| 配置项 | 值 | 说明 |
| 每批最大图卡数 | 5 个 | 单次请求包含的图卡上限 |
| 批次间隔 | 10 秒 | 串行执行,禁止并发请求 |
| 单次超时 | 30 秒 | 超时自动取消 + 重试 |
| 最大重试 | 3 次 | 间隔 2/5/10 秒指数退避 |
📋 推荐调取顺序(分批执行)
第一批核心 KPI 指标卡(≤5 个)
⏱10s
第二批类目/标签分析表格(≤5 个)
⏱10s
第三批明细/Case 数据(≤5 个)
🚨 异常处理
- 某图卡返回为空:跳过该图卡,在报告中标记「部分数据缺失」
- API 调用失败:自动重试 3 次;仍失败则降级到离线数据 + 告警
- 鉴权过期:401/403 → 自动刷新 Token 后重试 1 次 → 仍失败则告警@数据侧
- 禁止行为:❌ 一次性请求全部图卡 / ❌ 并发请求 / ❌ 忽略间隔限制
2.5在线 + 离线数据融合规则
大部分报告需要在线实时数据与离线清洗数据的融合:
| 场景 | 在线数据 | 离线数据 | 融合方式 |
| 周期性报告(双周报/周报) | BI 图卡实时指标 + 补充最近 2 天 | 02_已清洗 历史基线 | 在线为主,离线补全 |
| 实时监控(策略小时报) | 策略引擎 API 实时数据 | 无 | 纯在线 |
| 画像报告(商品/用户) | 画像 API 最新快照 | 02_已清洗 历史趋势 | 在线补最新状态 |
| 即查即出(单点 Case) | BI 图卡 + 画像 API | 无 | 纯在线 |
| 日维度大批量汇总 | 无(量太大、成本高) | 02_已清洗 全量 | 纯离线 |
✅ 融合原则
- 实时性优先(监控/告警/即查)→ 在线数据为主
- 准确性优先(周报/双周报)→ 离线基线 + 在线补窗口
- 全量场景(日维度汇总)→ 纯离线(API 量大限流严)
- 降级策略:在线不可用时自动切离线快照 + 报告标注「⚠️ 使用 T-1 离线数据」
2.6在线数据 FAQ
| 问题 | 答复 |
| "BI 图卡数据和离线文件不一致?" | 正常。在线数据比离线快几小时(准实时 vs T+1),以报告标注的截止时间为准 |
| "图卡返回 0 条数据?" | 大概率是 variables 传了空串或筛选条件错误。检查是否误传了空 value,或 paramsId 预置的筛选干扰了目标类目 |
| "能不能全部走在线 API 不用离线?" | 不建议。全量数据走 API 成本高、限流严。离线批处理效率更高,API 适合补充实时窗口和少量精确查询 |
| "Agent 调图卡报错怎么办?" | Agent 自动重试 3 次。仍失败则降级到离线数据 + IM 告警@数据侧。业务同学无需操心 |
| "按类目取数结果不全?" | 图卡 LIMIT 截断了。需要拆成每个类目单独请求,并传入该类目下所有叶子类目的完整列表 |
Skill 封装流程
把"数据处理流程"沉淀为可复用 Skill · 由 Agent 周期调用 · 保障结果稳定输出
📦 Skill 6 件套
⚙️ 5 步封装生命周期
🤖 Agent 周期调度
♻️ 重试 / 告警 / 降级
00为什么要封装 Skill(链路位置)
①
数据处理流程
业务同学扔文件 → AI 清洗 / diff / 拆分 / 汇总
Tab 1 已搭建
→
②
Skill 封装
把上面流程的每一步固化为 Skill:触发词 + 参数 + 步骤 + 校验 + 产出 + 告警
本页
→
③
报告生成流程
基于 Skill 的产物 → 渲染成业务可读报告 → 分发归档
Tab 3 已定义
🤖 Agent 自动化贯穿全链路:定时触发 ① → 自动调用 ② 中的 Skill → 产出送入 ③ → 全程异常重试与告警,业务同学只看最终结果。
🎯 封装 Skill 解决什么问题
❌ 不封装的痛
- 每次都要人记住"怎么跑",新人无法上手
- 逻辑散落在脚本 / 文档 / 个人脑子里,丢人即丢能力
- 跑出来的口径不一致,结果对不齐
- 报告依赖手动触发,请假就断更
- 失败靠人发现,发现时已经晚了
✅ 封装后的好处
- Skill = 可复用的"标准动作",触发词一致即结果一致
- Agent 周期调用,不依赖人工触发
- 统一的校验 + 重试 + 告警,失败自愈
- 新成员只需复用,不用重学逻辑
- 变更走版本,可回滚可审计
01Skill 6 件套结构(每个 Skill 都长这样)
每个 Skill 都是一个独立目录,固定包含 6 个文件,缺一不可:
📁 ~/.workbuddy/skills/<skill-name>/
├── 📄 SKILL.md # 必填:触发词 + 描述 + 入参 + 工作流
├── 📄 PARAMS.yaml # 入参 schema(默认值、必填、枚举)
├── 📁 scripts/ # 实际执行脚本(Python / SQL)
│ └── run.py
├── 📁 templates/ # 输出模板(HTML / Markdown / Excel)
├── 📁 tests/ # 自动化用例:小数据样本 + 期望输出
└── 📄 CHANGELOG.md # 版本变更记录
📋 SKILL.md 标准模板(最重要)
---
name: biz-analysis-biweekly-report
version: 1.2.0
description: 基于MCP数据自动生成差评分析报告
triggers:
- 业务分析双周报
- 风险 case 分析
- 商品风险治理报告
inputs:
start_ds: { type: date, required: true, desc: 起始日期 }
end_ds: { type: date, required: true, desc: 结束日期 }
threshold: { type: float, default: 0.03, desc: 差评率阈值 }
recipients: { type: list, default: ["leader@..."] }
outputs:
- path: 03_汇总结果/双周报/{yyyy-Wxx}/双周报.html
- channel: email + IM
quality_check:
- 抽样 50 条 vs 源表反推一致
- 差评率波动 ≤ 200%
on_failure:
- retry: 3 次(间隔 2/5/10 分钟)
- alert: P2 告警 @负责人
---
## 工作流(Agent 严格按此 5 步执行)
1. 调 MCP 取数(数据表A + 数据表B)
2. 计算 6 个核心指标
3. 渲染 HTML 报告(templates/biweek.html)
4. 跑 quality_check
5. 落盘 + 邮件 + IM 推送
💡 关键约定:SKILL.md 头部的 frontmatter 是机器读的(Agent 解析),下面的 Markdown 是人读的(开发 / 维护看)。两边不能互相替代。
02封装 5 步生命周期
把数据处理流程的某一步沉淀为 Skill,固定走这 5 步:
① 抽取从手工流程提炼"标准动作"
→
② 参数化识别变量 → PARAMS.yaml
→
③ 编码scripts/ 写脚本 + 用例
→
④ 联调本地跑通 + 单测全过
→
⑤ 注册放进 ~/.workbuddy/skills/ 即可被 Agent 发现
📋 每一步必须产出什么
| 步骤 | 产出物 | 验收标准 |
| ① 抽取 | 口语化的"标准动作"清单(最多 7 步) | 另一个人按清单能跑出同样结果 |
| ② 参数化 | PARAMS.yaml + SKILL.md frontmatter | 所有"魔法数字"都被替换成参数 |
| ③ 编码 | scripts/run.py + tests/ 覆盖正常 / 异常用例 | tests 全部 pass |
| ④ 联调 | 3 次连续跑通,输出可读、口径一致 | quality_check 全部通过 |
| ⑤ 注册 | 放入 skills/ 目录 + CHANGELOG 第一行 | 触发词在 Agent 里能被识别 |
⚠️ 反模式(容易翻车)
- 跳过 ②,把日期 / 阈值写死在 scripts 里 → 下次需要换参数就要改代码;
- 跳过 ③ 的 tests/ → 数据格式变化时悄悄出错;
- 跳过 ④ 直接上线 → 第一次跑就报警全员;
- 变更不写 CHANGELOG → 出问题无法追溯。
03🛠️ 模板 1 · 数据清洗 Skill
对应数据处理流程 Tab 中的 03–09 节(文件夹规范 / 字段翻译 / JSON 修复 / 列拆分 / 白名单裁剪 / 分片)。
| 项 | 取值 |
| Skill 名 | biz-data-clean |
| 触发词 | "清洗当日质检数据" / "data clean" |
| 入参 | ds(日期,默认昨日)/ stage(事前/事中/事后/all) |
| 步骤 | ① 扫 01_待处理/ ② 按翻译表归一字段 ③ 拆 JSON / 拆混合列 ④ 白名单裁剪 ⑤ 按 ds+stage 分片 ⑥ 落盘到 02_已清洗/ds={ds}/ |
| 校验 | 列数 ≥ 翻译表必要字段数;空值率 ≤ 5%;行数环比变动 ≤ 200% |
| 失败处理 | 重试 3 次(间隔 2/5/10min)→ 仍失败发 P2 告警 + 写差异核对 sheet |
| 产出 | 02_已清洗/ds={ds}/stage=*/part-*.{xlsx|parquet} |
04🛠️ 模板 2 · 人机 diff Skill
对应数据处理流程 Tab 中的 05 节(机审/一审/二审三环节集合差判定)。
| 项 | 取值 |
| Skill 名 | biz-human-machine-diff |
| 触发词 | "算人机 diff" / "三环节漏放误伤" |
| 入参 | ds / label_separator(默认 ;)/ min_audit_id(可选过滤) |
| 步骤 | ① 读 02_已清洗/事中_机审、一审、二审 ② 按 auditId 对齐三环节 ③ 算 L₂−Lₓ(漏放)/ Lₓ−L₂(误伤) ④ 输出明细表 + 标签级汇总 + 看板 |
| 校验 | 每个 auditId 三环节标签集合非空;漏放率波动 ≤ 200% |
| 产出 | 03_汇总结果/{ds}/人机diff报告.xlsx + 看板字段 |
05🛠️ 模板 3 · 看板汇总 Skill
对应数据处理流程 Tab 中的 10 节(多源看板一键登记 + 抽样校验)。
| 项 | 取值 |
| Skill 名 | biz-dashboard-rollup |
| 触发词 | "日维度一键汇总" / "多源看板对账" |
| 入参 | ds / registry_path(默认 00_看板登记表.xlsx)/ sample_n(默认 50) |
| 步骤 | ① 按登记表 check 文件齐全 ② 缺则 IM @负责人 ③ 全到则按主键 join 出宽表 ④ 抽样 N 条与源表对账 ⑤ 推送看板 |
| 校验 | 抽样不一致率 ≤ 1%;汇总行数 ≈ Σ源表行数(误差 ≤ 0.5%) |
| 产出 | 03_汇总结果/{ds}/汇总宽表.parquet + 差异核对.xlsx |
06🛠️ 模板 4 · 报告渲染 Skill
对应报告生成流程 Tab 中的 03–06 节(4 类报告模板)。每类报告是一个独立 Skill,模板共用底层结构。
| 报告 | Skill 名 | 入参 | 触发频率 |
| 差评双周报 | biz-analysis-biweekly-report | start_ds, end_ds, threshold | 双周一 10:00 |
| 策略小时报 | biz-strategy-monitor | strategy_id, hour | 每整点 |
| 商品画像周报 | biz-portrait-weekly | start_ds, end_ds | 每周一 10:00 |
| 单点 Case 查询 | biz-case-query | id(auditId/skuId) | 实时 |
💡 复用原则:4 类报告 Skill 共用底层数据 Skill(清洗 / diff / 汇总)的产出,不再重新取数。这样口径绝对一致。
07Agent 周期调度配置
Agent = 把多个 Skill 串起来按时跑的"调度员"。每个业务场景对应一个 Agent,统一调用 Skill。
📋 Agent 标准配置(YAML)
name: biz-daily-agent
description: 电商质检每日数据处理 + 报告生成
schedule:
cron: "0 17 * * *" # 每天 17:00
timezone: Asia/Shanghai
holiday_skip: false # 节假日是否跳过
# 串行依次执行(前一个失败,后续不跑)
pipeline:
- skill: biz-data-clean
params: { ds: "{{ yesterday }}" }
- skill: biz-human-machine-diff
params: { ds: "{{ yesterday }}" }
depends_on: [biz-data-clean]
- skill: biz-dashboard-rollup
params: { ds: "{{ yesterday }}" }
depends_on: [biz-data-clean]
- skill: biz-portrait-weekly
params: { start_ds: "{{ last_monday }}", end_ds: "{{ last_sunday }}" }
when: "weekday == 1" # 仅周一执行
# 全局错误处理
on_failure:
retry: { count: 3, backoff: [2m, 5m, 10m] }
alert: { channel: IM, mention: ["@负责人"] }
fallback: send_last_success_report
🕐 调度三种模式
| 模式 | cron 示例 | 典型场景 |
| 每日 | 0 17 * * * | 当日数据处理 + 当日小报告 |
| 每周 | 0 10 * * 1 | 周一上午商品画像周报 |
| 每小时 | 0 * * * * | 策略 100123 推审量监控 |
| 双周 | 0 10 * * 1 + week % 2 == 0 | 差评双周报 |
| 事件触发 | 无 cron,由 IM 自然语言触发 | 单点 Case 查询 |
✅ 业务同学不需要懂 cron:每个 Agent 都有"人话描述"(如"每天傍晚 17 点跑"),改时间只需告诉数据侧。
08稳定性保障(结果稳定输出的 4 道防线)
①
事前 · 输入校验
- 文件齐全度对账(看板登记表)
- 字段类型 / 空值率检查
- 行数环比合理性
在 Skill 入口卡住
②
事中 · 失败重试
- 3 次自动重试,间隔 2/5/10min
- 幂等设计:同 ds 重跑结果一致
- 每步独立日志,可定位某行某列
不需人工干预
③
事后 · 质量校验
- 抽样 vs 源表反推
- 同环比波动阈值
- 校验不过 → 不发报告,发告警
报告 ≠ 直接推送
④
兜底 · 降级与告警
- 失败超时 → IM 告警 @负责人
- 降级方案:发"上次成功结果"
- P1 / P2 分级,响应 SLA 明确
永不哑火
🚨 告警分级(与策略小时报一致)
| 等级 | 触发条件 | 响应 SLA |
| 🔴 P1 | 核心 Skill 连续 3 次失败 / 数据源完全断流 | 30 分钟内人工响应 |
| 🟠 P2 | 校验未通过 / 单次失败已重试成功 | 当日 17:00 前给结论 |
| 🟡 P3 | 非核心 Skill 失败 / 性能下降 | 下个工作日处理 |
09版本与变更管理
Skill 是"团队的能力资产",必须像代码一样管版本。
📋 版本号约定(语义化)
| 版本格式 | 升级时机 | 例子 |
x.0.0 主版本 | 不兼容变更(入参变 / 产出结构变) | 2.0.0:把单标签改为多标签 |
0.x.0 次版本 | 新增功能但向后兼容 | 1.2.0:新增 threshold 参数 |
0.0.x 修订版本 | 修 bug 不改逻辑 | 1.2.1:修复 NaN 处理 |
📝 CHANGELOG.md 标准格式
## v1.2.0 (2026-05-13)
- ✨ 新增 threshold 参数,支持自定义差评率阈值
- 🐛 修复跨月统计窗口边界 off-by-one
- ⚠️ 入参 start_ds 默认值由"本月 1 日"改为"过去 14 天"
## v1.1.0 (2026-04-20)
- ✨ 新增 IM 推送渠道
- 📝 完善 SKILL.md 注释
🔄 变更评审流程
- 提变更 → 在 CHANGELOG.md 草稿区写变更说明;
- 跑 tests/ 全部通过 + 手动跑 1 次完整流程;
- 数据侧 1 人评审 + 业务侧 1 人确认口径;
- 发布到
~/.workbuddy/skills/,CHANGELOG 升版本号;
- Agent 自动加载新版本,同时保留上一版本 7 天可一键回滚。
10Skill 封装 FAQ
| 问题 | 答复 |
| "我们流程刚跑通就要封装 Skill 吗?" | 是。手工跑通 = 验证逻辑正确;封装 Skill = 把"个人能力"变"团队资产"。等"以后再封装"通常意味着永远不封装 |
| "Skill 和 Agent 的边界?" | Skill = 一个标准动作;Agent = 把多个 Skill 串起来按时跑的调度员。一个 Agent 调用多个 Skill |
| "Skill 改了之后会影响在跑的 Agent 吗?" | 会但可控:版本升级后保留上一版本 7 天,Agent 可一键回滚到上一版 |
| "业务同学要会写 Skill 吗?" | 不需要。业务同学只负责表达需求(触发词 / 入参 / 期望产出),数据侧负责实现 |
| "周末 / 节假日 Agent 跑不跑?" | 看配置:调度配置里有 holiday_skip 字段,默认不跳过;周报类建议改 true,监控类必须 false |
| "Skill 失败了我怎么知道?" | 不用主动盯。重试不成功会 IM @ 你;P1 必须 30 分钟内响应 |
| "Skill 跑出来的口径和我手工跑不一样?" | 大概率是参数没对齐。看 SKILL.md frontmatter 的入参默认值,与手工跑的对一遍。如仍不一致 → 反馈数据侧 |
电商业务分析报告生成SOP
从清洗结果 → 业务可读报告的标准链路
📊 4 类标准报告
⏱ 周期 / 触发 / 即查
🤖 Skill + Agent + MCP
✅ 自动校验 + 自动分发
00报告矩阵总览(先看这一张)
团队当前需要对外输出 4 类报告,其周期、面向对象、触发方式、对应 Skill 各不同。本页约定统一生成链路与模板,避免每次都"从零开发"。
📋 双周报
每两周一次
业务分析双周报
面向:业务方 / Leader · 触发:定时(周一上午)
基于 MCP 数据自动生成差评分析报告,识别风险类目与商品,输出治理策略与优先级。
→ 第 03 节
⏰ 小时报
每小时
策略 100123 推审量 / 积压监控
面向:策略负责人 · 触发:定时(每整点)
监控核心策略小时级推审量、命中率、积压情况,超阈值自动告警。
→ 第 04 节
📦 周报
每周一次
商品画像周报
面向:商品 / 运营 · 触发:定时(周一)
含差评率、30d 订单、推荐池状态、观察期、出池标签、价格水位线等多维标签。
→ 第 05 节
🔍 即查即出
实时
单点 Case 智能查询
面向:全员 · 触发:自然语言提问
通过 MCP+Agent 接收业务同学自然语言提问,秒级返回单条 Case 的全链路明细。
→ 第 06 节
✅ 共同原则
所有报告 = 固定模板 + 固定数据源 + 固定触发方式 + 固定校验 + 固定分发。新增报告只需复制一份模板,改 5 个变量即可上线。
01报告生成三层架构
所有报告共用一套底层架构,自下而上分三层:
L3
📊 表现层 · 报告模板
HTML 报告 / 邮件 / IM 推送 / 看板。每类报告一份固化模板(结构、视觉、章节顺序都不可随意改),保证可读性与对比性。
L2
🤖 调度层 · Skill + Agent
每份报告对应一个 Skill(生成逻辑固化)。Agent 负责按时触发、调 MCP 取数、按模板渲染、调用校验、产出最终报告。
L1
🗄️ 数据层 · MCP + 已清洗数据
数据来源 = 数据处理流程产出的 02_已清洗 + 03_汇总结果,再加 MCP 链接(如审核日志 数据表A)。所有报告同源,避免不一致。
💡 业务同学只需关心 L3:每周打开报告链接 / 收邮件 / 看 IM 推送即可,L1/L2 由数据侧维护。
025 步生成流程(每个报告都走这 5 步)
① 取数Skill 按 SQL 调 MCP / 读已清洗目录
→
② 算指标按模板算字段(命中率、漏放率…)
→
③ 渲染注入到 HTML 报告模板
→
④ 校验抽样 + 阈值告警
→
⑤ 分发邮件 / IM / 看板 / 归档
✅ 业务同学只接收 ⑤ 的分发结果,①–④ 全部由 Skill + Agent 闭环。
03📋 模板 1 · 业务分析双周报
📐 报告结构(固化,不可变)
| 章节 | 内容 | 数据源 |
| ① 整体大盘 | 近 14 天业务分析数 / 差评率 / 环比 | MCP · 数据表A + 数据表B |
| ② Top 风险类目 | 差评率排序的 Top 10 类目,标红超阈值项 | 类目维度聚合 |
| ③ Top 风险商品 | 差评数 / 30d 订单 / 推荐池状态 联动 | 商品画像 |
| ④ 差评原因分布 | 差评 reason 标签的占比饼图 + Top 3 增长项 | 差评原因标签 |
| ⑤ 治理建议 | 风险商品 → 出池 / 观察 / 强制审核 优先级 | 规则引擎 |
| ⑥ 数据口径附录 | SQL / 阈值定义,便于追溯 | 固定文档 |
⚙️ 配置参数(变量化,每期可调)
| 参数 | 说明 | 默认值 |
start_ds / end_ds | 报告统计起止日期 | 过去 14 天 |
diff_rate_threshold | 差评率告警阈值 | 3% |
min_orders_30d | 纳入分析的最小 30d 订单数 | 50 |
top_n | Top 风险榜的展示数量 | 10 |
recipients | 分发收件人列表 | 业务负责人 + Leader |
💡 怎么生成:对接 Skill biz-analysis-biweekly-report,触发词:"业务分析双周报"。Skill 自动按上方模板出 HTML 版报告并归档到 03_汇总结果/双周报/yyyy-Wxx/。
04⏰ 模板 2 · 策略 100123 推审量 / 积压小时报
📐 报告结构
- ① 当前小时推审量:与昨日同小时、过去 7 天均值对比;
- ② 命中率波动:当前小时命中率 vs 7d 滑动均值,偏离 ±20% 触发告警;
- ③ 审核积压:未审核 case 数、最长等待时间、按队列拆分;
- ④ Top 命中规则:当小时命中最多的 5 条子规则;
- ⑤ 处置建议:超阈值时给出"扩容人力 / 调整阈值 / 临时关闭"建议。
🔔 告警规则(一旦触发立刻发 IM)
| 触发条件 | 告警等级 | 处置动作 |
| 积压 case > 5,000 | 🔴 P1 | 立即 @ 策略负责人 + Leader |
| 命中率突降 > 30% | 🟠 P2 | @ 策略负责人核查源头 |
| 命中率突增 > 50% | 🟠 P2 | @ 策略负责人核查规则 |
| 推审量为 0 持续 30min | 🔴 P1 | 立即 @ 数据 / 策略侧 |
⚠️ 业务同学需要做:收到 P1 告警 30 分钟内必须响应;P2 告警当日 17:00 前给结论。
05📦 模板 3 · 商品画像周报
📐 商品画像字段(每个商品一行)
| 字段 | 说明 | 更新频率 |
skuId | 商品主键 | — |
category | 类目 | 每周 |
diff_rate_30d | 30 天差评率 | 每天 |
orders_30d | 30 天订单数 | 每天 |
pool_status | 推荐池状态(在池/出池/观察) | 每天 |
observe_phase | 观察期标识(D1/D7/D14/D30) | 每天 |
out_pool_label | 出池标签(指标A/指标B/指标C) | 每天 |
price_watermark | 价格水位线(min/max/median) | 每天 |
📊 周报内容
- 新进观察期商品:本周新加入观察期的商品清单 + 触发原因;
- 本周出池商品:按出池标签分组,各 Top 10;
- 水位线异动:价格水位线变化超 20% 的商品(涨价 / 降价);
- 差评率 Top 飙升:本周差评率环比涨幅 Top 10;
- 建议处置:每条都标注「关注 / 强制审核 / 出池」建议。
💡 怎么用:商品画像周报每周一上午自动产出,业务同学按"建议处置"列直接执行即可,无需自己 join 多张表。
06🔍 模板 4 · 单点 Case 智能查询
场景:业务同学想看某个具体商品 / auditId / 订单的全链路情况,无需自己写 SQL,直接自然语言提问,秒级返回结果。
💬 提问示例(直接复制改参数)
「查 itemId=88001234 最近 30 天的差评率、订单量、推荐池状态」
→ 30d 差评率:4.8% (↑1.2pp)
→ 30d 订单数:2,340
→ 推荐池状态:已出池(标签:核心指标超阈值,出池时间 2026-05-09)
→ 观察期:D14
→ 价格水位线:min=89 元,max=129 元,median=99 元
「auditId=X001 在机审/一审/二审分别打了什么标签」
→ 机审 L₀:标签A;标签B
→ 一审 L₁:标签B;标签C;标签D
→ 二审 L₂:标签B;标签C
→ Diff:机审漏放=标签C,机审误伤=标签A;一审误伤=标签D
🛠️ 工作机制
- 业务同学在 IM / Web 端发自然语言问题;
- Agent 解析意图 → 选择对应 MCP 工具(数据表A / 商品画像 / 审核库);
- Agent 自动拼 SQL → 调 MCP 取数 → 按"问题模板"渲染;
- 秒级返回结构化答复 + 可点的明细链接。
✅ 业务同学只需做:用最自然的中文问,提问时务必带上主键(skuId / auditId / orderId 任一即可)。
07报告触发方式(4 种)
| 方式 | 适用 | 怎么配 | 典型场景 |
| 🕐 定时 | 周期性报告 | Skill + Cron / Wedata 调度 | 双周报、周报 |
| 📊 阈值触发 | 异常监控 | 指标 + 阈值规则 | 策略小时报告警 |
| 💬 自然语言 | 即查即出 | Agent + MCP | 单点 Case 查询 |
| 🖱️ 手动 | 临时分析 | Skill 触发词 | 临时拉数、复盘报告 |
💡 4 种触发方式可叠加:双周报既可定时跑,也可手动触发补跑(如假期顺延);策略小时报既定时跑也对阈值告警。
08报告质量校验(每份报告生成后自动跑)
报告产出 ≠ 报告可信。每份报告产出后必须先过 4 项自动校验,全部通过才推送:
| 校验项 | 规则 | 不通过的处理 |
| ① 数据完整性 | 关键指标非空、非 NaN、非 Inf | 报告暂不推送 + 报警 @ 数据侧 |
| ② 抽样核对 | 从源表抽 50 条 vs 报告聚合反推一致 | 差异 > 1% → 暂不推送 |
| ③ 同环比合理性 | 与上一期对比波动 ≤ 200% | 异常波动标黄高亮,由人工判定再推送 |
| ④ 阈值齐全 | 所有"标红"商品都有出池标签 | 缺标签 → 自动从规则引擎补,仍缺则报警 |
✅ 业务同学体感:收到报告 = 报告已通过校验。如看到顶部出现"⚠️ 本期数据异常"红条则说明 ③ 项触发,需结合"数据口径附录"复核后再用。
09报告分发与归档
📨 分发规则
| 报告 | 渠道 | 收件人 | 时机 |
| 双周报 | 邮件 + 内网链接 | 业务负责人 + Leader | 每隔周一 10:00 |
| 策略小时报 | IM 群 + 看板 | 策略负责人 | 每整点;告警立刻发 |
| 商品画像周报 | 邮件 + 看板 | 商品 / 运营组 | 每周一 10:00 |
| 单点 Case | IM 一对一 | 提问人 | 实时 |
🗂️ 归档目录(30 天热数据 + 全量留底)
📁 03_汇总结果/
├── 📁 双周报/
│ └── 📁 2026-W19/
│ ├── 双周报.html
│ ├── 双周报.pdf # 邮件附件
│ └── 数据口径附录.xlsx
├── 📁 策略小时报/
│ └── 📁 2026-05-12/
│ └── hour-10.html # 每整点一份
├── 📁 商品画像周报/
│ └── 📁 2026-W19/
│ ├── 周报.html
│ └── 商品画像快照.parquet # 全量留底
└── 📁 单点Case日志/
└── 📁 2026-05/
└── 提问与答复.jsonl # 用于持续优化 Agent
⚠️ 留底规范:报告 HTML 与原始数据快照同时归档,便于后续回溯审计。30 天前自动转入 99_归档/。
10报告生成 FAQ
| 业务同学问 | 标准答复 |
| "我想新增一份周报怎么做?" | 找数据侧复制现有 Skill 模板,改 5 个变量(数据源、指标、阈值、收件人、触发时间)即可上线,无需改代码 |
| "双周报数据看着不对,怎么追溯?" | 每份报告底部都有"数据口径附录"链接,直接看 SQL 与统计窗口;对不上则在群里 @ 数据侧 |
| "策略小时报告警太频繁,能调阈值吗?" | 能。在00_报告配置.xlsx修改对应阈值,下次整点生效。建议先看 7d 趋势再调,避免漏告警 |
| "单点 Case 我问 skuId=xxx,结果出错" | 大概率是 skuId 输入有空格或多了字符。重新复制纯数字串再问;仍失败则 @ 数据侧 |
| "商品画像里某个商品标签不对" | 反馈具体 skuId + 应有标签到 IM 群,数据侧会检查规则引擎是否漏更新 |
| "我能自己改报告 HTML 模板吗?" | 不建议直接改文件。改样式/章节请反馈数据侧统一更新模板,确保所有期次保持一致 |
| "假期周一报告会不会断?" | 不会。Skill 配置了节假日识别,遇假期自动顺延到下一个工作日 10:00 |