Agent 数据处理 SOP
v2.0 · 全链路 · 数据处理 / Skill 封装 / 报告生成
① 离线&在线数据来源 ② Skill 封装 ③ 报告生成 🤖 Agent 自动化贯穿全链路

电商业务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对齐三环节标签,输出三份报告:

  1. 明细表:每个 auditId 一行,含三环节标签集合、漏放集合、误伤集合。
  2. 标签级汇总:按标签维度汇总,输出"机审漏放 Top 标签"、"一审误伤 Top 标签"。
  3. 环节对比看板:机审 漏放率 / 误伤率,一审 漏放率 / 误伤率,环比折线。

📋 输出表样式(02_已清洗/ 下生成)

auditIdL₀ 机审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 拆分规则(业务同学不用看懂)

  1. 第一个分隔符| / / / 空格 / 全角竖线)切前两段:review_type + access_time
  2. 剩余部分作为result_label,多标签按,;再次切分;
  3. 识别失败的行不丢弃,单独输出到「待人工核对」sheet,并标红行号。

📋 拆分前后对照

❌ 拆分前(混杂列)
auditId结果
X001机审|2026-05-11 14:23:01|通过
X002人审|2026-05-11 16:08:42|打回-标签B,标签C
✅ 拆分后(三列规整)
auditIdreview_typeaccess_timeresult_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事中_审核/机审/
一审任务台事中auditIdAPI / 导出 Excel每日成员B事中_审核/一审/
二审任务台事中auditIdAPI / 导出 Excel每日成员B事中_审核/二审/
回扫队列事中auditId看板导出 CSV每小时/每日成员C事中_审核/回扫/
智能质检结果事后auditId看板导出 CSV每日成员D事后_质检/智能质检/
人工质检结果事后auditId看板手动导出每日成员E事后_质检/人工质检/

🤖 AI 一键汇总(每天 17:00 自动 / 手动触发)

  1. 读取看板登记表 → 知道今天应到的所有文件清单;
  2. 检查 01_待处理 下每条记录对应的目录是否到齐;
  3. 缺文件 → 自动 @ 对应负责人催单(IM 群提醒);
  4. 到齐则自动跑清洗 → 分片 → 汇总;
  5. 汇总落盘到 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 条

  1. 文件命名环节_细分类_日期_你的名字.xlsx(事中分机审/一审/二审/回扫;事后分智能/人工)
  2. 扔对地方:严格按 01_待处理 的子目录扔,千万不要混放智能与人工质检
  3. 不要预处理:不要自己合并表、不要自己拆列、不要自己打人机 diff — 全部交给 AI
  4. 多标签用 ;:标签字段统一用半角分号;分隔,禁用空格、中文逗号
  5. 新字段加翻译表:新业务出现新字段,去翻译表加一行(写"必要/按需/冗余"),下次自动认
  6. 看人话报告:每天 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)
业务画像 APIRESTful商品/用户维度聚合指标HTTP GET + Token每日刷新
策略引擎 APIRESTful规则命中、推送量、积压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 (?) 时:

  1. 先获取候选值列表:调用 get_card_variables 工具获取筛选项的候选 options(如所有叶子类目列表);
  2. 按目标一级类目过滤:从 options 中筛选出属于目标一级类目的所有叶子类目;
  3. 构造 variables:一级类目传单值,叶子类目传逗号分隔的完整列表;
  4. 不传 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 截断了。需要拆成每个类目单独请求,并传入该类目下所有叶子类目的完整列表
本 SOP v2.0 · 离线&在线数据来源 · 2026-05-26