xPilot v0.2 原型数据实现路径分类(规则 vs LLM)
最后更新:2026-05-01
适用范围:Web (xpilot-prototype.html) + App (App/xpilot-app.html) + 3D 地图 (store.html)
一、目的
xPilot v0.2 Web/App 原型展示的数据当前均为内联 mock。进入工程化阶段前,本文按字段粒度标注每一条展示数据的:
- 类别(A/B/C):实现路径
- 数据源:上游接口
- 计算方式:A 给数学公式,B/C 指向 §七 详细实现逻辑
便于:
- 数据团队按"计算方式"列直接对接接口、写聚合 SQL
- AI 工程团队按 §七 LLM 调用点清单逐条对接 prompt + 上下文
- 产品/PM 评估每个 LLM 调用点的价值与成本
二、分类框架
| 类别 | 标记 | 含义 |
|---|---|---|
| 规则类 | A | 直接从结构化数据聚合 + 阈值/排序/着色规则。无需 LLM。 |
| LLM 类 | B | 必须调 Claude API,做语义理解、归因推理、自然语言生成、多源融合。 |
| 混合类 | C | 规则/CV 模型先触发并提取要素,LLM 负责生成解释/润色。 |
| 静态 UI | — | 标题、按钮文案、图例等纯 UI 元素,不分类。 |
2.1 B 类实现逻辑要素
每个 B 类调用点的实现包含 5 要素:
- 触发条件:何时调(每日预生成 / 实时事件触发 / 用户主动)
- 输入上下文:从哪些表/字段/时间窗拼装数据 JSON
- Prompt 模板:System prompt(角色 + 风格约束)+ User prompt(动态数据 + 输出格式要求)
- 输出格式:受约束的输出(字数/句数/结构),便于前端直接渲染
- 模型选择:根据上下文长度和质量要求选 Haiku / Sonnet / Opus
→ 详细见 §七 B 类清单(B#1 – B#12)
2.2 C 类实现逻辑要素
每个 C 类位置的实现包含 5 要素:
-
触发规则:明确阈值或事件(如
oos>8%/品质问题数>3/执行率<70%) -
要素提取:规则/CV 提取的结构化字段(如
risk_type、severity、details) - LLM 用途:将结构化要素转为自然语言(5-15 字短句 / 标题 / 详细解释)
- 降级方案:纯规则模板 fallback(LLM 失败时仍有内容显示)
- 缓存策略:结果建议缓存(输入要素相同则复用,节省 token)
→ 详细见 §七 C 类清单(C1 – C6)
三、数据源清单
来自 ANS_TRUST 元数据声明 + 业务推断:
| 数据源 | 用途 |
|---|---|
| POS 销售系统 | 销售额/客单价/客流/连带率/分时销售 |
| 库存中台 | SKU 库存/缺货 SKU/库存周转 |
| 补货系统 | 补货单/补货时效 |
| 货架 IoT 摄像头 | 货架空置率/陈列识别/实拍图 |
| POG 计划库 | 计划陈列方案/双图对比基准 |
| 陈列识别 AI | CV 模型识别商品位置/排面 |
| 客流计数器 | 入店/分时/转化率 |
| 会员系统 | 会员复购/新客占比/价值分层 |
| 促销活动配置 | 活动周期/价格/堆头位置 |
| 任务系统 | 任务全字段(status/owner/priority/area/evidence) |
| HR 系统 | 员工档案/在岗状态 |
| 排班系统 | 本周排班/班次 |
| 设备告警平台 | POS/ESL/AP/摄像头健康度 |
| 门店主数据 | 门店列表 + lat/lng + 综合评级 |
四、字段级分类(Web 端)
1. 顶部导航
| 元素 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| Tab 名称 / 视角按钮 / 副标题 | — | — | 静态 UI |
2. 实时仪表盘 — 总部·品类经理(page-battle-hq)
2.1 KPI Bar(5 张可点卡片)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 销售进度 | A | POS |
值 = SUM(POS.amount WHERE date=today AND store IN all_stores)vs 昨 = (today_累计 - yesterday_同时点累计) / yesterday_同时点累计vs 上周 = (today_累计 - last_week_同DOW同时点累计) / last_week_同DOW同时点累计
|
| 客流转化 | A | 客流计数器 + POS |
客流 = SUM(traffic.entries WHERE date=today)转化率 = COUNT(DISTINCT POS.txn_id WHERE date=today) / SUM(traffic.entries WHERE date=today)
|
| 客单价 | A | POS |
值 = SUM(POS.amount) / COUNT(DISTINCT POS.txn_id) WHERE date=todayvs 昨 / vs 上周 = 同销售进度的同期对比公式 |
| 库存监控 / 缺货率 | A | 库存中台 |
缺货率 = COUNT(SKU WHERE stock<=0 AND active=true) / COUNT(SKU WHERE active=true),按门店 SUM 后取均值 |
| 陈列合规 | A | 货架 IoT + POG |
异常组数 = COUNT(shelf WHERE compliance=false)合规率 = 1 - 异常组数 / COUNT(active_shelf)
|
2.2 Leaflet 世界地图
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 10 门店 marker(lat/lng) | A | 门店主数据 | 直接读取 store.lat, store.lng
|
| 综合评级 S/A/B/C/D | A | 多维加权 |
score = 0.30*sales + 0.20*traffic + 0.20*price + 0.15*inv + 0.15*display映射: ≥90→S, 75-90→A, 60-75→B, 40-60→C, <40→D
|
| 5 维评级(sales/traffic/price/inv/display) | A | 各维度 | 每维独立打分 0-100,按上述阈值映射 S/A/B/C/D |
| KPI 切换重绘 marker 颜色 | A | 规则映射 | marker.color = RATING_COLOR[store.ratings[currentKpi]] |
| 评级图例/筛选卡 | — | — | 静态 UI |
2.3 门店详情弹窗(5 KPI section)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 销售进度(今日/vs昨/vs上周) | A | POS | 同 2.1 销售进度公式,过滤条件加 store=X
|
| 客流/转化(今日/转化率/vs昨) | A | 客流 + POS | 同 2.1 客流转化,按门店过滤 |
| 客单价(今日/vs昨/vs上周) | A | POS | 同 2.1 客单价 |
| 库存监控(缺货率/补货时效/vs昨) | A | 库存 + 补货 |
缺货率 同上 补货时效 = AVG(replenish_task.complete_at - replenish_task.create_at) WHERE store=X AND date=today
|
| 陈列合规(异常数/异常率/处理时效/vs昨) | A | IoT + 任务 |
异常数 = COUNT(shelf_alert WHERE store=X AND date=today)处理时效 = AVG(display_task.complete_at - alert.detected_at)
|
2.4 AI 经营洞察面板(中间)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 摘要卡 — 昨日总结 | B | POS+库存+任务+品类聚合 | → 详见 §七 B#1 |
| 摘要卡 — 今日注意事项(带 ①②③) | B | 今日实时+预测+待办 | → 详见 §七 B#2 |
| 优先级筛选(紧急/警告/信息) | A | 规则映射 |
priority = colorToPriority(ins.c),c=#EF4444→high, #FB923C→med, #3B82F6→info |
| 洞察卡标题 | C | 规则模板(可选 LLM 改写) | 触发:result 字段已生成模板: <门店> <品类> <指标> <方向> <数值> → 详见 §七 C2
|
| 洞察卡 · 结论 result | A | 业务系统聚合 | 例:两店缺货 SKU 合计 530 个 = SUM(stock<=0 WHERE store IN [CQ,WH] AND date=yesterday)
|
| 洞察卡 · AI判断 cause | B | 触发指标 + 关联表 | → 详见 §七 B#3 |
| 洞察卡 · 建议 advice | B | cause + 资源/排班 | → 详见 §七 B#4 |
| storeIds 联动 | A | 规则触发 | flashStores(ins.storeIds) |
| "查看详情"按钮 | — | — | 静态 UI |
2.5 右侧 Tab — 品类健康度(8 项)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 品类名 | A | 商品主数据 | SELECT DISTINCT category |
| health 评分 | A | POS + 库存 | health = 0.40*达成率 + 0.30*(1-缺货率) + 0.20*合规率 + 0.10*库存周转分 |
| 销售额 | A | POS | SUM(POS.amount WHERE category=X AND week=current_week) |
| oos 缺货率 | A | 库存 | COUNT(oos_sku WHERE category=X) / COUNT(active_sku WHERE category=X) |
| risk 文本 | C | 规则触发 + LLM | 触发:health<60 OR oos>8% OR 供应链事件 → 详见 §七 C1
|
| storeIds 关联 | A | 规则筛选 |
WHERE category=X AND (health<阈值 OR risk_event) 过滤受影响门店 |
2.6 右侧 Tab — 促销实时追踪(4 项)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 活动名 | A | 促销配置 | 直接读 promo.name
|
| lift 销售提升 | A | POS + 促销配置 |
(SUM(amount WHERE in_promo) - baseline) / baseline,baseline = 活动前 14 天同 SKU 日均 |
| marginLoss 毛利损失 | A | POS + 促销配置 | -SUM(promo.discount × qty) |
| exec 执行率 | A | 任务系统 | COUNT(stores WHERE promo_setup_done=true) / COUNT(stores WHERE promo_planned) |
| stock 库存消化率 | A | 库存中台 | SUM(promo_sold) / SUM(promo_inventory_planned) |
| risk 文本 | C | 规则触发 + LLM | 触发:exec<70% OR stock<30%(积压)OR stock>90%(缺货风险) → 详见 §七 C1
|
2.7 右侧 Tab — 供应商(5 家)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 供应商名 | A | 供应链系统 | 直接读 |
| onTime 准时率 | A | 供应链 | COUNT(orders WHERE delivered_on_time=true) / COUNT(orders WHERE last_30d) |
| oosRate 缺货率 | A | 库存 | 由该供应商品引起的缺货率 = COUNT(oos_sku WHERE supplier=X) / COUNT(sku WHERE supplier=X)
|
| quality 品质问题 | A | 供应链 | COUNT(quality_issue WHERE supplier=X AND last_30d) |
| costTrend 成本趋势 | A | 供应链 | (current_unit_cost - 30d_ago_unit_cost) / 30d_ago_unit_cost |
| risk 文本 | C | 规则触发 + LLM | 触发:onTime<80% OR quality>3 OR costTrend>+3% → 详见 §七 C1
|
3. 实时仪表盘 — 店长(page-battle-manager)
3.1 KPI Bar(5 张可点卡片)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 销售进度 | A | POS | 同 2.1(按当前门店过滤) |
| 客流转化 | A | 客流 + POS | 同 2.1 |
| 客单价 | A | POS | 同 2.1 |
| 货架缺货 | A | 库存 + IoT | 缺货率 = COUNT(shelf WHERE oos=true) / COUNT(active_shelf) |
| 陈列合规 | A | IoT + POG | 同 2.1 |
3.2 3D 门店地图(store.html iframe)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 货架/区域几何 | A | 门店空间数据 | 静态门店 layout(坐标 + 货架 mesh) |
| 5 维热力图 | A | 各业务系统 | 每个货架/区域聚合对应维度数值,按阈值映射热力色(绿→黄→红) |
| 设施叠加(POS/摄像头/AP/购物车/店员/消费者) | A | IoT 实时位置 | 直接读各设施实时坐标,渲染图标到 3D 场景 |
| 默认 HUD 标签(缺货 4 处/陈列异常 3 处/设备异常 3 处) | A | 库存 / IoT / 设备告警 | 实时计数:COUNT(... WHERE store=X AND status='abnormal')
|
| 时间轴 0-24(HOURLY_HEAT 24×5) | A | 历史小时聚合 | 按小时 GROUP BY 5 维指标,预聚合存日表 |
3.3 AI 经营洞察(10 条品类×区域级)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 摘要 yest / today | B | 同 2.4 | 按店长视角缩窄上下文 → 详见 §七 B#1 / B#2 |
| 洞察 result | A | 业务系统 | 例:冷冻区 4 组货架缺货率超 15% = COUNT(shelf WHERE area='冷冻区' AND oos_rate>0.15)
|
| 洞察 cause | B | 触发要素 + 排班 + 任务 | → 详见 §七 B#3 |
| 洞察 advice | B | cause + 当前可用资源 | → 详见 §七 B#4 |
| area 联动 | A | 规则触发 |
flashArea(ins.area) 通过 postMessage 让 store.html 区域闪烁 |
3.4 右侧 Tab — 品类速览(7 项)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 品类名 + 5 维小指标 | A | 各业务系统 | 每品类按 5 维分别聚合:销售/客流/缺货/陈列/任务(公式见 2.1) |
3.5 右侧 Tab — 团队
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 在岗/离岗/休假/异常 计数 | A | HR + 排班 | COUNT(staff WHERE status=X AND date=today AND store=Y) |
| 课组人手紧张度 | A | 任务 + 排班 |
pressure = (total_tasks - done_tasks) / total_tasks × 100%,按课组分组 |
3.6 右侧 Tab — 任务中心
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 5 stat(未分配/进行中/已完成/核验完成/滞后) | A | 任务系统 | COUNT(task WHERE status=X AND store=Y AND date=today) |
| 课组进度条 6 个 | A | 任务系统聚合 |
done_count / total_count per group |
| 高优先级负责人 top 3 | A | 任务系统排序 | SELECT owner, COUNT(*) WHERE priority='high' AND status IN (todo,doing) GROUP BY owner ORDER BY 2 DESC LIMIT 3 |
4. 实时仪表盘 — 店员(page-battle-staff)
4.1 KPI Bar(蔬果区限定 2 张)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 蔬果区缺货率 | A | 库存 + IoT | COUNT(sku WHERE category='蔬果' AND stock<=0) / COUNT(sku WHERE category='蔬果') |
| 蔬果区陈列合规 | A | IoT + POG | COUNT(shelf WHERE area='蔬果区' AND compliance=true) / COUNT(shelf WHERE area='蔬果区') |
4.2 3D 地图
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 同 3.2,蔬果区视角 | A | 同 3.2 |
WHERE area='蔬果区' 过滤 |
| 叠加层(店员/消费者/购物车 3 项) | A | IoT 实时位置 | 同 3.2 |
4.3 AI 任务洞察(10 条,店员日常 12 类)
字段结构同 2.4 / 3.3,分类映射相同(result A,cause B → §七 B#3,advice B → §七 B#4)。
4.4 今日成绩(renderTodayScore)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 5 stat(未分配/进行中/已完成/核验完成/超时) | A | 任务系统按 owner 筛选 | COUNT(task WHERE owner=staff_id AND status=X AND date=today) |
| 任务平均耗时 | A | 任务系统 |
本人均时 = AVG(complete_at - start_at) WHERE owner=staff_id AND date=today同岗位均值 = AVG(complete_at - start_at) WHERE role=same_role AND date=today
|
| 比同岗位快 X% | A | 上面两值差值 | (同岗位均值 - 本人均时) / 同岗位均值 |
| AI 评估卡("你今天的工作让门店多卖了 ¥3,420 · 主要来自蔬果区缺货率从 4.8% 降到 2.8%...") | B | 个人任务 + 门店增量 | → 详见 §七 B#5 |
4.5 我的排班(本周 7 天)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 班次时间 / 区域 | A | 排班系统 | SELECT shift_start, shift_end, area FROM schedule WHERE staff=X AND week=current |
| 今日高亮 | A | 规则 |
is_today = (cell.date == today) 蓝色样式 |
5. 任务管理 — 总部(page-tasks-hq)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 8 列汇总表 | A | 任务系统按门店聚合 | 每店:COUNT(task) GROUP BY status WHERE store=X AND date=today完成率 = (done + verified) / total均响应时长 = AVG(start_at - create_at)
|
| 数字着色(红/绿) | A | 阈值规则 | 未分配>0 红 / 超时>0 红加粗 / 完成率<65% 红 / ≥85% 绿 |
| 全部门店 / 品类 / 状态筛选下拉 | A | 任务系统过滤 | WHERE store IN ? AND category IN ? AND status IN ? |
6. 任务管理 — 店长(page-tasks-manager)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 5 列看板(unassigned/doing/done/verified/overtime) | A | 任务系统 |
WHERE store=current_store AND status=col_status,overtime 列横切(任意状态 × overtime=true) |
| 任务卡(标题/品类/优先级/状态/负责人/超时) | A | 任务系统 | 直接读字段 |
| 员工状态侧栏 4 类 + 异常置顶 | A | HR + 排班 | 同 3.5;排序:ORDER BY status='abnormal' DESC, name
|
7. 任务管理 — 店员(page-tasks-staff)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 个人信息条 | A | HR + 任务 | 姓名/岗位 from HR;今日任务 = COUNT(task WHERE owner=me AND date=today) 含完成数 |
| 5 列看板 | A | 任务系统 | WHERE owner=me AND status=col_status |
| 可认领池(未分配列) | A | 任务系统 | WHERE category=my_category AND status='unassigned' |
8. 任务详情弹窗
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 状态/标题/品类/负责人/创建时间/area | A | 任务系统 | 直接读 task.X |
| 现场凭证 | A | IoT 摄像头 + 文件存储 | 按 evidenceType 拉取对应资源(实拍图/双图对比/PDF 单据) |
| 状态推进按钮 | — | — | 静态 UI(advanceTask 函数) |
| 系统核验通过/不通过判定 | C | CV 比对 | 触发:task.status='done' AND evidence_uploaded → 详见 §七 C4
|
9. 陈列管理(page-shelf)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 6 列表格 | A | 陈列识别 AI + 库存 |
缺货率 = oos_count / total_skus per shelf异常率 = compliance_diff / total_facing per shelf |
| 缺货实拍图查看 | A | 货架 IoT 摄像头 | 拉取最新一帧图像 + timestamp + 摄像头 ID |
| 计划 vs 实际双图对比 | A | POG + IoT | 左图=POG.plan_image,右图=IoT.latest_capture |
| 异常识别 | C | CV + 规则 | 触发:每小时 CV 扫描,比对 POG 计划,diff_score>阈值 → 标记异常 → 详见 §七 C4 |
| 异常详情解释 | B | CV 差异要素 | → 详见 §七 B#6 |
10. AI Agent(page-agent)
10.1 4 Tab × 4 题预设(共 16 题)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 题目文案 | — | — | 静态 UI(题库) |
| 可信度行(置信度/样本/时间窗/数据源/生成时间) | A | 元数据 |
ANS_TRUST[group] 静态映射 + 实时时间戳 |
10.2 AI 回复
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 表格化数据(商品名/缺货开始/持续时长/库存/优先级/损失) | A | 库存 + POS + 阈值 |
查询缺货 SKU + JOIN 库存 + 计算 持续时长(now-oos_start) + 损失(missed_qty × avg_price)优先级 = 损失>100→高,50-100→中,<50→低 |
| "缺货原因"列 | C | 规则枚举 + LLM 改写 | 触发:缺货事件,规则枚举 4 类(库存为 0/补货延迟/排面不足/数据异常)→ 详见 §七 C3 |
| 自然语言段落 | B | LLM 销量预测 + 建议 | → 详见 §七 B#7 |
| stat-row 三联卡(销售额/客单价/客流) | A | POS | 同 2.1 |
| 操作按钮 | — | — | 静态 UI(生产态由 LLM tool-use 触发) |
10.3 右侧 3D 地图联动
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 商品标记 7 槽位位置 | A | POG 计划库 |
SELECT shelf_x, shelf_y FROM POG WHERE sku IN answer.products映射到 iframe 的 7 个百分比槽位 |
10.4 商品弹窗(点击 marker)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| OOS · 相机实拍图 | A | IoT 摄像头 | 拉取该货架最新帧 |
| OOS · AI 识别空置率 | C | CV 模型 | 触发:图像送入 CV 模型,输出 empty_ratio(0-1) → 详见 §七 C5
|
| OOS · 后仓库存 / 关联任务 | A | 库存 + 任务 |
SELECT stock FROM 库存 WHERE sku=X AND location='后仓'SELECT task FROM 任务 WHERE related_sku=X AND status IN (todo,doing)
|
| POG · 实际 vs 计划双图 | A | IoT + POG | 同 9 |
| POG · AI 差异分析叙述 | B | VLM 描述差异 | → 详见 §七 B#10 |
10.5 自由输入
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 演示态 matchAnswerKey 关键词匹配 | A | 关键词词表 |
if (input.includes(keyword)) return ANSWERS[key] 仅原型用 |
| 生产态自由问答 | B | LLM + tool-use | → 详见 §七 B#7 |
| 洞察"查看详情"自动发送 | A | UI 联动 | 拼接 [洞察] {title} 结论:{result} AI判断:{cause} 建议:{advice} 作为 user message |
| 右键"问 xPilot"组件级带入 | A | UI 联动 |
closest(CTX_COMP_SEL).textContent 拼成上下文 |
五、字段级分类(App 端)
A1. 角色选择 / 顶部 / 底部导航
| 元素 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 静态文案 / 切换逻辑 | — | — | 静态 UI |
A2. 首页 — 店员
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 顶部用户信息(姓名/岗位/日期) | A | HR | 直接读 |
| AI 洞察摘要卡 · 昨日 | B | 个人任务 + 品类销售 | → 详见 §七 B#8 |
| AI 洞察摘要卡 · 今日 | B | 今日预测 + 待办 | → 详见 §七 B#8 |
| 行动清单(任务列表) | A | 任务系统 | WHERE owner=me AND date=today ORDER BY priority |
| 我的品类·蔬果区(缺货率/任务完成/品类排名) | A | 库存 + 任务 + POS |
缺货率:同 4.1 任务完成 = done/total per category品类排名 = RANK over (ORDER BY category_sales DESC) 中的本品类位次 |
| 我的今日绩效(环形 60% + 平均响应 12min + 品类评分 B+ #2) | A | 任务系统聚合 |
完成率 = done / total per me平均响应 = AVG(start_at - create_at)品类评分 = 综合分按字母分桶 |
| 近 7 日任务完成率折线 | A | 任务系统历史 |
每日 done/total per me 7 个数据点 |
A3. 首页 — 店长
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| AI 洞察摘要卡(双段) | B | 跨多源整合 | → 详见 §七 B#8 |
| KPI 横滑 5 张 | A | 各业务系统 | 同 3.1 |
| 品类速览 7 项(含 risk 标签) | A + C | 各系统 + LLM | 数据 A(同 3.4);risk 同 §七 C1 |
| 团队(含异常员工) | A | HR + 任务 | 同 3.5 |
| 课组人手紧张度 6 项 | A | 任务 + 排班 | 同 3.5 |
| 今日分时销售柱状图 | A | POS 分时 |
SUM(POS.amount) GROUP BY HOUR(timestamp) 24 个数据点 |
| 员工状态表 | A | HR | 同 3.5 |
A4. 任务列表
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 5 状态筛选 / 任务卡 | A | 任务系统 | 同 7(店员)/ 6(店长) |
A5. 任务详情(7 类型)
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 基本信息 | A | 任务系统 | 直接读 |
| 2D 门店地图(4×3+收银带) | A | 门店布局静态 + 任务 area |
任务 area 模糊匹配 STORE_LAYOUT 区域 (area.includes(zone.key)) → 高亮匹配区域 + pin |
| 补货任务 · 商品/库存/损失 | A | 库存 + POS | 同 10.2 |
| 补货 · AI 补货建议("建议补货 6 箱,预计销售约 4.2 箱") | B | 销量预测 + 库存 | → 详见 §七 B#9 |
| 陈列调整 · 陈列对比双图 | A | IoT + POG | 同 9 |
| 陈列 · AI 差异分析 | B | VLM | → 详见 §七 B#10 |
| 陈列 · 调整步骤 | C | 规则模板 + LLM 微调 | 触发:差异类型识别后查模板库 → 详见 §七 C6 |
| 设备告警 · 故障描述/告警码/处理建议 | A | 设备告警平台 + 知识库 | 直接拉告警事件 + JOIN 运维知识库 |
| 促销 · 活动信息/方案 PDF/核对清单 | A | 促销活动配置 | 直接读 |
| 收货 · 到货清单 / effect-card | A | 供应链 + 任务 | 直接读到货单 effect-card: if status IN (done,verified) display "已完成 · {complete_at} {owner} 验货完毕"
|
| 上架 · 商品清单 / effect-card | A | 任务 + POG | 同上 |
| AI 洞察任务 · AI 洞察依据 | B | 跨数据源归因 | → 详见 §七 B#11 |
| AI 洞察 · 执行步骤 | C | 规则模板 + LLM | 同陈列调整步骤 → 详见 §七 C6 |
| AI 洞察 · 预期效果("提升 8-15%") | B | 历史相似动作 lift | → 详见 §七 B#12 |
| 状态按钮(按 todo/doing/done/verified 动态) | — | — | 静态 UI(系统自动核验) |
A6. Agent 对话
| 字段 | 类别 | 数据源 | 计算方式 |
|---|---|---|---|
| 预设题 / 操作按钮 | — | — | 静态 UI |
| AI 回复 | B | LLM + tool-use | 同 §七 B#7(生产态) |
六、洞察规则引擎
本节定义 §三 数据源 与 §七 LLM 调用点 之间的"模式识别"中间层。规则引擎扫描数据、识别异常,输出标准化要素 JSON,作为 §七 B#3/B#4 等 LLM 调用点的输入契约。
6.1 职责定位
- 不调 LLM:纯规则 / 阈值 / CV 模型
- 输出契约:标准化要素 JSON(schema 见 §六.3),是 §七 B 类调用点的输入
- 触发模式:实时事件驱动 / 周期扫描 / 批量分析
6.2 八大规则类别
6.2.1 阈值规则(threshold)
| 规则 ID | 阈值 | 优先级 | 原型例子 |
|---|---|---|---|
| OOS_RATE | 警告 >5% / 紧急 >15% | med/high | "重庆/武汉冷冻区缺货率超 15%" |
| SALES_ACHIEVEMENT | 紧急 <70% / 警告 <85% / 信息 >105% | high/med/info | "休闲食品本周达成率 107%" |
| DISPLAY_COMPLIANCE | 警告 <90% / 紧急 <80% | med/high | "C 区 3 组货架陈列偏离" |
| TASK_COMPLETION | 警告 <70% | med | "本店今日任务完成率 75%" |
| TURNOVER_RATIO | 滞销 <1.5 次/月 | med | "A 区运动品类周转 1.2 次" |
| SAFETY_STOCK | 单 SKU < 安全库存 | high | "西兰花库存仅 8 把" |
6.2.2 趋势/对比规则(trend)
| 规则 ID | 触发 | 例子 |
|---|---|---|
| YOY_DELTA | 同比/环比波动 ±10% | "客单价 ¥156 较上周 ↑¥8" |
| CROSS_STORE_GAP | 最优/最差 > 3 倍 | "响应 19min vs 68min 差 3.6 倍" |
| PERSISTENT_DEVIATION | 连续 N 天偏差 | "苏州/深圳响应连续 7 天超 45min" |
6.2.3 预测性规则(forecast)
| 规则 ID | 公式 | 例子 |
|---|---|---|
| OOS_FORECAST | 库存 / 当前销售速度 < N 小时 | "2h 内断货风险" |
| AGING_FORECAST | 库存 / 日均销量 > 30 天 | "积压货值 ¥14.6 万" |
| TRAFFIC_FORECAST | 历史同 DOW 模式拟合 | "15:00–17:00 客流 +32%" |
6.2.4 事件型规则(event — 对应 R3.7 的 7 类 IoT 异常)
| 规则 ID | 数据源 | 标记色 |
|---|---|---|
| OOS_CV | 货架 IoT 摄像头 CV 实时识别空置 | 红 #EF4444
|
| OOS_FORECAST_LIVE | POS 销售速度 + 库存推算 | 橙 #F97316
|
| DISPLAY_DIFF | CV vs POG 计划比对 | 浅橙 #FB923C
|
| AP_ANOMALY | AP 信号弱 >2h / 离线 | 蓝 #3B82F6
|
| ESL_FAIL | 价签同步失败计数 | 紫 #8B5CF6
|
| CAMERA_ERROR | 摄像头模块报错 | 黄 #EAB308
|
| POS_TIMEOUT | POS 响应 >5s | 绿 #10B981
|
6.2.5 时间/周期规则(schedule)
| 规则 ID | 例子 |
|---|---|
| TASK_OVERTIME | 创建后 N 小时未完成 → "T003 已逾期 1h+" |
| DEVICE_CALIBRATION | "秤具距上次校准 28 天,按 SOP 须 30 天内校准" |
| EXPIRY_WARNING | 保质期 <2 天 → "12 箱红富士保质期 < 2 天" |
| PROMO_CHECKPOINT | "12:00 节日礼盒堆头核对" |
6.2.6 CV/图像规则(vision)
对应 §七 C4 任务核验、B#6 陈列异常解释、B#10 陈列差异分析。
| 规则 ID | 触发 |
|---|---|
| POG_DIFF_SCORE | 陈列 diff_score > 0.1(默认阈值) |
| FACING_OFFSET | 排面偏移距离 > N cm |
| PRODUCT_MISPLACEMENT | 商品错位 / 遮挡识别 |
| SHELF_EMPTY_RATIO | 货架空置率(CV 输出 0-1,对应 §七 C5) |
6.2.7 关联性规则(correlation)
| 规则 ID | 例子 |
|---|---|
| CROSS_STORE_PATTERN | "4 家门店运营管理维度评分连续下滑" |
| MULTI_DIM_COMBO | "华东 23 家门店酸奶销售环比下滑 15%" |
| MULTI_METRIC_COUPLED | "武汉店三项运营管理指标均低于均值 20%+" |
6.2.8 业务流程规则(workflow)
| 规则 ID | 例子 |
|---|---|
| LOW_CLAIM_RATE | "补货任务认领率仅 38%" |
| STAFF_ABNORMAL | "未签到 · 已迟到 1h12min" |
| EVIDENCE_MISSING | 任务标记完成但未上传拍照凭证 |
6.3 标准化输出 Schema(规则引擎 → LLM 的契约)
每条规则触发后,统一输出如下 JSON,供 §七 B 类调用点直接消费:
{
"rule_id": "OOS_RATE_HIGH",
"rule_category": "threshold",
"anomaly_type": "oos_spike",
"priority": "high",
"scope": {
"stores": ["CQ", "WH"],
"category": "冷冻",
"area": "冷冻区"
},
"current": {
"value": 530,
"unit": "SKU",
"label": "两店缺货 SKU 合计"
},
"baseline": {
"value": 80,
"unit": "SKU",
"label": "日均缺货数"
},
"delta": "+562%",
"related_data": {
"task_系统": {"补货任务认领率": "38%", "未认领任务数": 12},
"排班": {"该区域今日在岗": "3/5(缺 2)"},
"近7日趋势": [80, 85, 90, 120, 180, 320, 530],
"iot": {"AP-03 信号": "弱 2h"}
},
"triggered_at": "2026-05-06T09:23:00Z",
"downstream_llm_calls": ["B#3", "B#4"]
}
字段说明:
| 字段 | 用途 |
|---|---|
rule_id |
规则唯一 ID(见 §六.2 各表) |
rule_category |
8 大类之一:threshold / trend / forecast / event / schedule / vision / correlation / workflow
|
anomaly_type |
异常的业务类型(oos_spike / sales_drop / display_diff / ...),用于 LLM 分类 |
priority |
high / med / info,与 §四.2.4 colorToPriority(ins.c) 映射对齐 |
scope |
作用域:门店列表 / 品类 / 区域 |
current / baseline / delta
|
触发的数值证据 |
related_data |
相关支撑数据,作为 LLM 归因的上下文 |
triggered_at |
触发时间戳 |
downstream_llm_calls |
下游 LLM 调用点(让规则引擎和 LLM 工程团队明确契约) |
6.4 触发调度策略
| 类别 | 触发模式 | 频次 |
|---|---|---|
| 阈值规则 | 周期扫描 | 每 5-15 分钟 |
| 趋势/对比规则 | 周期扫描 | 每小时 |
| 预测性规则 | 周期扫描 | 每 15 分钟 |
| 事件型规则 | 事件驱动 | 实时(IoT 推送) |
| 时间/周期规则 | 调度器 | 按时间点触发 |
| CV/图像规则 | 周期扫描 + 事件 | 每小时 + 任务核验时 |
| 关联性规则 | 批量分析 | 每日凌晨 |
| 业务流程规则 | 周期扫描 | 每 30 分钟 |
6.5 与 §七 LLM 调用点的衔接
| 规则类别 | 触发的 LLM 调用 |
|---|---|
| 阈值 / 趋势 / 预测 / 关联 | B#3 cause + B#4 advice(核心智能价值) |
| 事件型(7 类 IoT 异常) | B#3 + B#4 + 直接渲染 ANOMALY_DATA 弹窗(混合模式) |
| CV/图像 | C4 任务核验解释 + B#6 陈列异常解释 + B#10 陈列差异分析 |
| 时间/周期 | 直接渲染(提示型,不调 LLM) |
| 业务流程 | B#3 + B#4(如认领率低 → 调度建议) |
优先级映射(与 §四.2.4 colorToPriority(ins.c) 对齐):
| priority | 颜色 | 标签 |
|---|---|---|
high |
#EF4444 |
紧急 |
med |
#FB923C |
警告 |
info |
#3B82F6 |
信息 |
降级策略:当 LLM 调用失败时,B#3/B#4 可降级为按 rule_id + current + baseline 走纯模板渲染(不带归因和具体建议),保证用户始终能看到结构化结论。
七、LLM 调用点详细清单
7.1 B 类调用点(必须 LLM)
B#1 · 实时仪表盘 摘要卡 yest(3 视角)
触发条件:每日凌晨 02:00 批量预生成(3 视角 × N 门店 = 一批调用);用户主动刷新可重新生成。
输入上下文(昨日 snapshot,按视角缩窄):
{
"date": "2026-04-30",
"view": "battle-hq | battle-manager | battle-staff",
"scope": "全网 | 门店ID | 个人ID",
"kpi": {
"sales_total": 4280000, "sales_target_rate": 0.92,
"traffic": 12480, "conversion": 0.21, "avg_basket": 156
},
"category_top_anomaly": [
{"name":"乳制品","achievement":0.92,"detail":"酸奶 -15%"},
{"name":"休闲食品","achievement":1.07}
],
"store_anomaly": [
{"scope":"华东 23 店","event":"酸奶供应链延迟","duration":"昨日"},
{"scope":"北京 5 店","event":"进口红酒滞销>14天"}
],
"task_summary": {"total":312,"done":268,"overtime":18}
}
Prompt 模板:
[System] 你是 xPilot 零售智能助手。为指定视角生成昨日要点摘要。
风格:客观、数据驱动、避免空话;优先突出异常事件;按视角侧重不同(HQ 看跨店趋势,店长看本店异常,店员看个人完成)。
[User] 视角:{view}
昨日数据:{json}
请输出 1-2 句摘要,控制在 80 字以内:
- 覆盖 1-2 个核心数据指标 + 2-3 个最重要的异常事件
- 不要带"昨日"等前缀(前端会加)
- 避免使用"很好/不错"等主观词
输出:纯文本段落,存入 daily_summary(date, view, scope, content) 表,前端读缓存。
模型:Claude Haiku 4.5(短输入短输出,每日 ~30-50 调用,成本最优)
B#2 · 实时仪表盘 摘要卡 today(3 视角)
触发条件:每日凌晨 06:00(开店前)首次生成;上午每 2h 刷新;触发大事件(缺货率突增/设备故障)即时重生成。
输入上下文:
{
"date":"today",
"view":"...","scope":"...",
"today_realtime": {"sales_累计":..., "traffic_累计":..., "vs_预测":+0.05},
"forecast": {"客流高峰":"15:00-17:00","预计客流":68},
"todo": [
{"task":"T001 冷冻区补货","priority":"urgent","unclaimed":true},
{"task":"T002 C 区陈列纠正","status":"doing"}
],
"in_progress_alerts":[{"type":"AP-03 信号弱","duration":"2h"}]
}
Prompt 模板:
[System] 同 B#1,但聚焦"今日要做什么"。
[User] 视角:{view},今日数据:{json}
输出格式:
- 1 句概览今日重点
- 紧接 ① ② ③ 优先级建议(具体到任务/动作/时间窗)
- 总长 100 字以内
输出:纯文本,含 ①②③ 序号;同样存 daily_summary 表,按 date+view+scope+slot(time bucket) 组合主键。
模型:Claude Haiku 4.5
B#3 · AI 洞察 cause(每条 8-10 条 × 3 视角)
触发条件:洞察规则引擎识别异常 → 触发生成(实时);缓存键 = (异常事件 ID + 触发时间);同事件 30 分钟内不重生成。
输入上下文:
{
"anomaly": {
"type":"oos_spike","scope":["CQ","WH"],"category":"冷冻",
"current":"两店缺货 SKU 530 个","baseline":"日均 80 个"
},
"related": {
"task_系统":{"补货任务认领率":"38%","未认领任务数":12},
"排班":{"该区域今日在岗":"3/5(缺 2)"},
"近7日趋势":[80,85,90,120,180,320,530],
"iot":{"AP-03 信号":"弱 2h"}
}
}
Prompt 模板:
[System] 你是零售归因分析助手。基于触发指标和相关数据,给出 1 句话归因(10-30 字)。
要求:
- 找出最可能的根因(不是症状的复述)
- 明确指向人/系统/流程问题
- 不要给建议(建议在 advice 阶段)
[User] 异常:{json.anomaly}
相关数据:{json.related}
归因:(1 句话)
输出:1 句话,10-30 字。
模型:Claude Sonnet 4.6(归因需要逻辑推理,Haiku 偶有偏差)
频次:估算 3 视角 × 10 条 × 大事件触发 ≈ 30-50 调用/日
B#4 · AI 洞察 advice(同 B#3)
触发条件:cause 生成后立即触发(可串联调用,复用上下文)。
输入上下文:B#3 全部输入 + cause 输出 + 资源池
{
...B#3..., "cause": "<B#3 输出>",
"resources": {
"可调拨人手":[{"from":"华南","count":2}],
"可触发流程":["紧急补货令","跨区调拨","直派督导"],
"历史相似案例":[{"action":"直派督导组","效果":"24h 内恢复"}]
}
}
Prompt 模板:
[System] 基于归因,给出 1-2 句可执行的具体行动建议。
要求:
- 必须包含数字/对象(如"4 人"/"今日 17:00 前")
- 优先选可立即触发的流程
- 不要"建议关注"等空话
[User] 归因:{cause}
可用资源:{json.resources}
建议:
输出:1-2 句,明确可执行。
模型:Claude Sonnet 4.6
B#5 · 店员今日成绩 AI 评估卡
触发条件:店员当日交班/打卡下班时触发;或店长查看时按需触发。
输入上下文:
{
"staff_id":"...","date":"today",
"tasks":{"done":3,"verified":2,"overtime":0,"avg_response":"22min","peer_avg":"28min"},
"category_impact":{
"蔬果区缺货率":{"yesterday":0.048,"today":0.028},
"蔬果区销售":{"vs_baseline":+8640,"orders_count_delta":+18}
},
"store_baseline":{"日均销售":312000}
}
Prompt 模板:
[System] 把店员当日工作贡献"翻译"成对门店的实际经营价值(金额 + 1 句解释)。
要求:
- 金额按 (该员工任务影响范围内的销售提升 / 同类基线) 估算(可用客单价 × 单数变化简化)
- 1-2 句叙述:金额 + 主因 + 数字证据
- 不要谄媚("你真棒"等),只用数据说话
[User] 数据:{json}
输出格式:
你今天的工作让门店多卖了 ¥XXX · {主因 + 数字证据}
输出:1-2 句,含金额 + 归因 + 数字。
模型:Claude Haiku 4.5
频次:每日每店员 1 次(小型门店 30-50/日)
B#6 · 陈列管理 异常详情解释
触发条件:CV 模型识别陈列异常(diff_score>阈值)→ 用户点击异常货架查看详情时按需生成。
输入上下文:CV 输出的差异要素 + 商品信息
{
"shelf_id":"SHELF-A4",
"diff_elements":[
{"sku":"可口可乐 500ml","plan_pos":"层2-槽3","actual_pos":"层2-槽5","type":"位置偏移"},
{"sku":"百事可乐 500ml","status":"遮挡促销标签","severity":"high"}
],
"category":"饮料","compliance_score":0.79
}
Prompt 模板:
[System] 把 CV 模型的差异要素转为店员能看懂的人话。
要求:
- 1-2 句,按"哪个商品 + 偏离了什么 + 影响"组织
- 30-60 字
- 不要用"diff_score"等技术词
[User] 差异要素:{json}
解释:
模型:Claude Haiku 4.5
B#7 · AI Agent 自由问答(生产态替换 ANSWERS)
触发条件:用户输入或点击预设问题。
输入上下文:
- 用户输入文本
- 当前页面 / 视角上下文(CTX_PAGE_NAME + 选中组件文本)
- 工具集(tool-use):
query_oos_skus / query_sales / query_promotion / create_task / query_inventory / get_pog
Prompt 模板:
[System] 你是 xPilot 零售智能助手。根据用户问题调用合适工具,整理表格 + 自然语言回答。
工具:{tool_definitions}
回答规范:
- 数据型问题:返回表格 + 1-2 句概述 + 建议操作按钮(tool-use 触发 create_task 等)
- 分析型问题:分点叙述 + 数据支撑
- 必须包含可信度行(数据源/时间窗/样本)
[User] 问题:{user_input}
当前页面:{page_context}
组件上下文:{component_text}(可选)
输出:HTML 表格 + 段落 + 操作按钮(按钮 onclick 调用 tool-use 返回的 action)。
模型:Claude Sonnet 4.6(需要 tool-use + 复杂推理)
频次:用户主动触发,无固定频次
B#8 · App 首页 AI 洞察摘要卡(店员/店长 各 2 段)
触发条件:每日凌晨预生成(同 B#1/B#2 共用上下文);App 启动时拉取。
输入上下文:B#1/B#2 缩短版(移动端字数限制更严)
Prompt 模板:在 B#1/B#2 基础上加约束:
[追加] 控制在 60 字以内(移动端单卡显示);不带 ①②③ 序号;用流畅段落叙述。
输出:纯文本 60 字内。
模型:Claude Haiku 4.5
B#9 · App 任务详情 · 补货建议
触发条件:补货任务(type=replenishment)创建时触发;任务详情页打开时拉缓存。
输入上下文:
{
"sku":"西兰花","shelf":"蔬果区A1",
"current_stock":8,"backstock":50,
"sales_history_7d":[12,15,14,18,22,20,16],
"today_so_far":4,"forecast_today":18
}
Prompt 模板:
[System] 基于销量历史和当前库存,给出补货建议。1 句话,含数字。
[User] 数据:{json}
格式:基于近 7 日销量预测,建议补货 X 箱,预计今日销售约 Y 箱。请在 ZZ:ZZ 前完成。
模型:Claude Haiku 4.5
B#10 · App 任务详情 · 陈列差异分析
触发条件:陈列调整任务(type=display-adj)创建时触发;详情页拉缓存。
输入上下文:CV 比对的双图差异要素(同 B#6)。
Prompt 模板:
[System] 1-2 句描述实际 vs 计划的差异。30-60 字。
[User] 差异要素:{json}
模型:Claude Haiku 4.5(也可考虑 VLM 直接对图)
B#11 · App 任务详情 · AI 洞察任务依据
触发条件:洞察类任务(type=insight)创建时触发;详情页拉缓存。
输入上下文:
{
"category":"乳制品",
"trend":{"近7日销售":-12%},
"shelf_finding":{
"高毛利产品":"安慕希希腊酸奶","当前位置":"底层",
"低毛利产品":"伊利纯牛奶","当前位置":"视平线层"
},
"data_sources":["销售数据","货架识别 AI"]
}
Prompt 模板:
[System] 把数据现象 + 分析结论组织成 2-3 句洞察依据。
要求:
- 第 1 句陈述数据现象(带数字)
- 第 2 句分析原因(视觉/陈列/位置等)
- 第 3 句给出方向(不要给详细步骤,步骤在 C6 模板)
[User] 数据:{json}
模型:Claude Sonnet 4.6
B#12 · App 任务详情 · 预期效果
触发条件:洞察类任务创建时与 B#11 串联调用。
输入上下文:
{
"category":"乳制品","action":"陈列调整高毛利至视平线",
"historical_similar":[
{"category":"饮料","action":"同类","lift":"+12%"},
{"category":"零食","action":"同类","lift":"+9%"}
]
}
Prompt 模板:
[System] 基于历史相似动作的 lift,给出本次预期效果区间。
要求:
- 输出格式:"提升 X 品类销售 A-B%"
- A-B 区间不超过 10 个百分点
[User] 数据:{json}
模型:Claude Haiku 4.5
7.2 C 类调用点(规则/CV 触发 + LLM 润色)
C1 · 品类/促销/供应商 risk 短文本(5 处)
触发规则:
- 品类:
health<60 OR oos>8% OR 供应链异常事件存在 - 促销:
exec<70% OR stock<30%(积压)OR stock>90%(缺货风险) - 供应商:
onTime<80% OR quality>3 OR costTrend>+3%
要素提取(规则识别后输出):
{"risk_type":"supply_chain_delay","severity":"high","details":{"category":"乳制品","scope":"华东"}}
LLM 输入 + 用途:
[System] 把风险要素转为 10-15 字简短描述。
[User] 要素:{json}
输出:(10-15 字)
降级方案:纯模板 fallback:{risk_type 中文} · {scope}(如"供应链延迟 · 华东")
缓存策略:(risk_type + severity + details_hash) 24h 缓存
模型:Claude Haiku 4.5
C2 · 洞察标题文案
触发规则:每条洞察 result 字段已生成时触发(可选 LLM 改写,未触发时纯模板)。
要素提取:从 result 解析关键 token(门店/品类/指标/方向/数值)。
模板(默认即可使用,不调 LLM 也可上线):
{门店} {品类} {指标} {方向} {数值}
例:重庆/武汉 冷冻区 缺货率 超 15%
LLM 用途(可选):把模板生成的标题润色更精炼(10-20 字),适合标题位字数限制场景。
降级方案:直接用模板。
模型:Claude Haiku 4.5(仅作为可选优化)
C3 · AI Agent 缺货原因列
触发规则:缺货事件,按规则枚举原因类型:
-
stock=0 AND last_replenish_at < 24h ago→ "未及时补货" -
stock=0 AND no_inbound_in_3d→ "商品没有库存" -
stock>0 AND facing_count<min_facing→ "排面不足" -
stock>0 AND POS_count_异常→ "数据异常"
要素:4 类枚举值之一。
LLM 用途(可选):基于 SKU + 上下文把"未及时补货"润色为"今早补货任务漏派"等更具体表述。
降级方案:直接用 4 类枚举文本。
缓存:(sku + reason_type + day) 缓存。
模型:Claude Haiku 4.5
C4 · 任务系统核验判定 + 异常解释
触发规则:task.status='done' AND evidence_uploaded → CV 模型对比拍照与 POG/计划:
-
diff_score < 0.1→ 自动通过(verified) -
diff_score >= 0.1→ 不通过,进入 LLM 解释流程
要素提取:CV 输出 {shelf_diff:[{sku,issue}], compliance_score, evidence_quality}
LLM 用途:
[System] CV 判定核验不通过,请给店员说明原因。
[User] 差异:{json}
输出:1-2 句不通过原因 + 1 句改进建议(30-60 字)
降级方案:直接列差异要素(无叙述)。
模型:Claude Haiku 4.5(VLM 也可考虑)
C5 · 商品弹窗 OOS 空置率
触发规则:用户点击 OOS 类商品 marker 时,从 IoT 摄像头拉最新帧,送入 CV 模型。
要素:CV 输出 empty_ratio(0-1)。
LLM 用途:无(此处仅显示数字 + 百分比,不需 LLM)。
说明:分类为 C 是因为 CV 模型本身是 ML,但本字段不调 LLM。如未来要加叙述("严重空置,建议立即补货"),则升级为 C 类含 LLM。
C6 · App 陈列调整步骤 / AI 洞察执行步骤
触发规则:陈列调整任务 / 洞察任务创建时,按"差异类型"或"行动类型"查模板库。
模板库示例:
- "位置偏移" → "1. 将商品 A 移至 X 位置 / 2. 拍照存档"
- "陈列层级调整" → "1. 高毛利产品移至视平线 / 2. ... / 3. ..."
LLM 用途(可选):基于具体 SKU/位置把模板槽位填充并润色(如"将可口可乐 500ml 移至 B2货架第1层正中")。
降级方案:直接用模板(步骤数固定,槽位规则填充)。
缓存:(action_type + sku + target_position) 缓存。
模型:Claude Haiku 4.5
八、统计与结论
8.1 占比估算
| 类别 | 字段/组件估算 | 占比 |
|---|---|---|
| A 规则类 | ~120 处 | ~75% |
| B LLM 类 | 12 个调用点 × 多视角 ≈ 30 处 | ~18% |
| C 混合类 | 6 类 × 多实例 ≈ 10 处 | ~7% |
8.2 核心结论
75% 数据是规则类,瓶颈在打通上游 14 类接口,LLM 不是主要工作量。
-
LLM 价值集中在两条主线:
- 叙述化总结(B#1/B#2/B#5/B#8):多源数据融合成 1-2 句话。预生成模式(每日凌晨批量),降低延迟和 token。
- 归因 + 建议(B#3/B#4/B#11/B#12):xPilot 智能性的核心,必须实时生成,每条独立调用便于并发。
-
C 类的关键决策:
- 风险短句 / 缺货原因 / 步骤模板(C1/C3/C6)可先用规则模板上线,LLM 作为后续优化。
- 任务核验(C4)依赖 CV 模型质量,独立工程项目。
-
生产态 vs 原型态的 gap:
- 原型 ANSWERS 16 条硬编码 → 生产态 LLM + tool-use(库存查询/任务创建/订货等工具)。
- 原型 cause/advice mock 文本 → 生产态每条洞察独立 prompt + 上下文打包。
8.3 模型选择建议
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 摘要类(B#1/B#2/B#5/B#8) | Haiku 4.5 | 短输入短输出,每日批量调用,成本敏感 |
| 归因 / 建议 / 洞察依据(B#3/B#4/B#11) | Sonnet 4.6 | 需要逻辑推理,Haiku 偶有偏差 |
| 自由问答 + tool-use(B#7) | Sonnet 4.6 | tool-use + 复杂推理 |
| 数字预测 / 描述类(B#9/B#10/B#12) | Haiku 4.5 | 模式固定,结构化输入输出 |
| 所有 C 类润色 | Haiku 4.5 | 短输出,模板兜底,成本优 |
8.4 工程优先级建议
| 优先级 | 工作内容 | 依赖 |
|---|---|---|
| P0(基础数据层) | 打通 14 类数据源接口;建立任务系统 + 评级规则引擎 | 数据/后端 |
| P0(核心 LLM) | B#3 / B#4 洞察 cause + advice 实时生成(智能性的核心) | AI 工程 + P0 数据 |
| P1(叙述化总结) | B#1 / B#2 / B#5 / B#8 摘要类(预生成 + 缓存) | AI 工程 + P0 数据 |
| P1(CV 模型) | C4 / C5 / B#10 陈列识别 + 差异分析(独立 CV 项目) | CV 团队 |
| P2(自由问答) | B#7 AI Agent + tool-use 工具实现 | AI 工程 |
| P2(任务详情 LLM) | B#9 / B#11 / B#12 App 任务详情类 | AI 工程 |
| P3(润色优化) | C1 / C2 / C3 / C6 短句润色 | AI 工程 |