# 宝锐销售工作台 · 诊断原料 AI 助手工作流 v1.0

> 适用：大客户部 / 销售拓展部（业务线 `da`）
> 编制：2026-09-10　维护：销售管理（刘新元）
> 落地位置：`脚本/ai_chat.py` → `_build_system_prompt()` 的 `line == 'da'` 分支
> 一句话：**问一次就给答案，答案都有出处，出处都在权限内。**

---

## 0. 设计原则（四条，先看这个）

| # | 原则 | 含义 |
|---|---|---|
| P1 | **权限先行** | 任何检索前先过权限闸；越权问题一律不回复，不做"是否存在"的确认 |
| P2 | **有据可依** | 每个数字都标出处（客户360 / ERP / 飞书活动 / 天眼查 / 官网），查不到就说查不到 |
| P3 | **先问后答** | 产品类问题信息不全时**先给结构化模板让销售填**，不猜着答 |
| P4 | **问完就沉淀** | 好答案自动进经验库（本地 + IMA 脱敏版），下次同类问题直接复用 |

---

## 1. 第一道闸：权限（永不跳过）

### 1.1 可见范围判定

| 角色 | 可见范围 |
|---|---|
| `admin` / `gm` | 全公司客户（1204 家）+ 全部课题组 |
| `sales` | **仅本人名下客户**（权威源：`数据/pricing/_auth_customers_20260831.json`）|

### 1.2 越权处理的五条防线（对应需求第 5 条）

销售问到权限外客户，**一律不回复**，且不得通过侧面信息泄露：

1. **不确认存在性** — 不说"这家不在你名下"，只说"不在您的权限范围内"。是否在系统里本身也是信息。
2. **不泄露归属人** — 不出现"这是某某的客户"。
3. **不泄露量级** — 不说"这家大概几百万的盘子"。
4. **不反向推断** — 不得用集团/行业/区域口径倒推单体客户数据（例："圣湘集团整体 1354 万"不能出现在非负责人会话里）。
5. **文件同权** — 销售上传的文件里若出现权限外客户，该客户段落一律不引用、不复述。

**统一话术**：
> 该客户不在您的权限范围内，无法提供信息。

**边界（可回答的）**：行业趋势、市场规模、竞品动态、产品技术参数、通用打法——不涉及具体客户的可照常回答。

---

## 2. 场景路由表

| 场景 | 典型问法 | 主数据源 | 输出形态 | 目标耗时 |
|---|---|---|---|---|
| **A 客户调研** | "XX客户怎么样 / 帮我调研XX" | 七源聚合（§3） | 客户调研卡（六段） | ≤ 20s |
| **B 产品选型** | "XX检测项目推什么体系" | 推荐清单四段式（§4） | 选型结论 + 货号 + 变种 | ≤ 15s |
| **C 产品竞争力** | "XX产品有优势吗" | `product_selling_points.json` + 竞品库 | FABE 四段式 | ≤ 10s |
| **D 数据查询** | "我这个月多少 / XX客户回款" | `kpi_progress` / `shipment_status` | 数字 + 口径说明 | ≤ 8s |
| **E 打法话术** | "客户说太贵怎么谈" | 话术库 + LTC + 竞品库 | 可落地话术 + 下一步 | ≤ 10s |
| **F 经验沉淀** | "把这个记下来 / 沉淀一下" | 本次会话 | 经验卡（脱敏） | ≤ 8s |
| **G 越权提问** | 任何权限外客户 | — | 统一话术（§1.2） | ≤ 3s |

**通用思考顺序**：`识别场景 → 提取实体 → 权限判定 → 检索 → 结构化输出 → 标出处`

---

## 3. 工作流 A：客户调研聚合检索（需求第 2 条）

### 3.1 检索分层（本地优先，外部按需）

```
L0 权限闸 ── 不在名下 → 直接拒答（不进入任何检索）
   ↓
L1 实体解析 ── 客户名归一（全称/简称/别名 → 核心名）
   ↓
L2 内部四源（本地 JSON，并行，秒级）
   ① 飞书活动  ② 销售订单/物流  ③ 客诉  ④ 商机 + 待办
   ↓
L3 货号画像 ── 该客户历史采购过哪些货号、什么品类结构
   ↓
L4 外部两源（按需触发，见 §3.3）
   ⑤ 天眼查  ⑥ 公司官网
   ↓
L5 聚合输出 ── 客户调研卡（固定六段，§3.4）
```

### 3.2 七源逐条明细

| # | 数据源 | 本地文件 | 取什么 | 回答什么 |
|---|---|---|---|---|
| ① | **飞书活动** | `数据/daily_activities_mcp.json`、`数据/customer_360.json` | 近 N 次跟进、拜访纪要、提及竞品 | 最近谁去过、聊到哪一步、客户在愁什么 |
| ② | **销售订单/物流** | `数据/shipment_status.json` | 订单笔数、价税合计、发货状态、测试/样品单 | 买了多少、是不是还在测试阶段 |
| ③ | **客诉** | `数据/mcp_complaints.json` | 客诉条数、紧急度、状态、类型 | 有没有隐患、处理到哪了 |
| ④ | **商机 + 待办** | `数据/opportunity_sandbox.json`、`数据/todos.json` | 商机阶段/目标/季度拆分；待办 | 到底能不能成、卡在哪、下一步谁做 |
| ⑤ | **用过货号** | ERP 订单大表 / `数据/shipment_status.json` | 历史采购货号清单、品类分布 | 只买原料还是买整套、有没有扩面空间 |
| ⑥ | **天眼查** | `数据/tianyancha_cache.json`（缓存） | 工商/人员/对外投资/知识产权/司法/融资 | 公司底子、规模、管线、风险 |
| ⑦ | **公司官网** | 实时检索 + 缓存 | 主营业务、产品线、技术平台、招聘、新闻 | 他们在做什么方向、缺什么原料 |

### 3.3 外部两源（⑥⑦）的触发与降级

**触发条件**：问题含"调研 / 什么来头 / 背景 / 实力 / 规模 / 是不是上市公司 / 有大项目吗"，或销售明确说"帮我做拜访前准备"。

**降级顺序（保证永远有输出）**：
1. 本地缓存命中（7 天内）→ 直接用，标注缓存日期
2. 天眼查 API 可用 → 实时取，写缓存
3. API 不可用 → 用公开检索（官网/新闻/招聘），标注"来源：公开网络，未核验工商数据"
4. 全部不可用 → 明确说"外部背景暂未获取，建议人工补充"，**不编造**

**输出时必标来源**：`【天眼查】` / `【官网】` / `【公开网络·未核验】`。

### 3.4 输出：客户调研卡（固定六段，不许缺段）

```
【客户调研卡】<客户全称>（归属：<销售>，2026 销售额：XX.X 万）

1. 一句话画像      —— 做什么的、什么体量、跟我们什么关系
2. 生意基本盘      —— 近 3 年采购额 / 订单数 / 是否测试转量产
3. 采购结构        —— 买过哪些货号（品类分布）、还缺什么
4. 正在发生的事    —— 最近活动 + 商机阶段 + 待办 + 客诉
5. 外部背景        —— 天眼查/官网要点（含风险提示）
6. 下一步建议      —— 3 条以内，每条落到具体动作
```

**校验规则**：第 5 段若无数据源命中，写"外部背景暂无（未获取天眼查/官网）"，**不得用推测填充**。

---

## 4. 工作流 B：产品四段式匹配（需求第 3 条·核心）

> 铁律：**信息不全先问、不猜。** 四段按顺序走，前一段命中就不必走后面。

### Stage 0：结构化提问（强制前置）

当销售问产品问题但信息不全时，**先输出这张模板让销售填**，不要当场给答案：

```
请按下面 5 项补一下信息，我马上给匹配结果（可直接复制填写）：

1. 检测项目/靶标：        （如：蓝耳、非瘟、结核、水产、丁肝…）
2. 样本类型：             （如：血清 / 组织 / 拭子 / 全血 / 粪便…）
3. 技术方法/平台：        （如：taqman / MMCA / 恒温 / 测序…；不确定就写"不确定"）
4. 客户现状：             （新客户测试 / 已用某货号在测 / 量产替换 / 降本）
5. 约束条件：             （价格敏感 / 要冻干 / 要快速程序 / 要全预混 / 无）
```

**策略**：
- 5 项中 ≥3 项已知 → 直接进 Stage 1（不全也能推，边推边标注假设）
- 已知 <3 项 → 必须走模板，且只在销售回填后再答
- 销售说"就这些，你先给个方向" → 按已知条件给 **方向性建议**，并明确标注"依据不足，属方向性判断"

### Stage 1：匹配产品推荐清单

- 数据源：`数据/product_recommendation_list.json`（源：`YYYYMM-产品推荐清单.xlsx`，当前 26 条 / 67 货号）
- 匹配维度：`项目类型` + `子类` + `技术方法` + `核酸类型` + `样本类型`
- 输出时**必须带**：推荐货号 + 优先级（①②③）+ 特征说明（客户反馈原文）+ 是否可全预混 + 快速程序
- 命中 → 直接输出，并附"该货号历史客户反馈"

### Stage 2：货号变种（推荐清单里没有直接命中时）

不能因为"没找到一模一样的货号"就放弃，按以下 4 类变种顺序找：

| 变种类型 | 规则 | 例子 |
|---|---|---|
| ① 规格后缀 | 母体相同、`-01/-02/-03` 包装规格差异 | `BR1D303` → `BR1D303-01` |
| ② 批次/版本后缀 | 母体相同、长数字后缀 | `MD2104` → `MD2104-000812` |
| ③ 冻干 ↔ 液体 | `F` 前缀对应关系 | `M2181-4-095203` ↔ `FM2181-4-095203` |
| ④ 搭配套装 | 体系 + 辅助试剂组合 | `FM0301-042903` + `AS212-00090` |

- 数据支撑：`product_recommendation_list.json` 的 `by_sku`（精确）与 `by_base`（母体）双层索引
- 输出格式：`推荐清单命中 <原货号>；同母体变种 <变种货号>（差异：<规格/冻干/批次>）`

### Stage 3：经验库检索（精准经验 → 同类经验）

- 数据源：本地知识库（`知识库-copilot/`、`竞争分析/`、`知识沉淀/`）+ IMA 知识库（诊断原料库）+ 结构化竞对库 `数据/competitor_intel.json`
- 两级：
  - **精准经验**：同项目 + 同方法 + 同客户类型 → 直接复用结论，附原始案例
  - **同类经验**：同方法不同项目 / 同项目不同方法 → 给"可迁移打法"，并说明差异点
- 输出必须标注：`【精准经验·可直接用】` 或 `【同类经验·需验证】`

### Stage 4：兜底建议（前三段全空时才走）

- 触发：清单没有、变种没有、经验库没有
- 输出格式（**必须明确标注无内部数据支撑**）：
  ```
  ⚠️ 无内部数据支撑（推荐清单/经验库均未命中），以下为基于产品技术逻辑的建议：
  - 建议方向：<技术路线判断 + 理由>
  - 可测试货号：<从产品总库按技术参数初筛>
  - 验证动作：建议先做 <测试方案>，由 <销售> 反馈结果后再定
  ```
- **禁止**：编造客户案例、编造价格、编造成交记录

### 促销联动（三个阶段都要查）

凡涉及价格/方案，**必须检查当季促销**（`数据/promo_campaigns.json`）：
- 促销在期 → 给"促销后价格"并说明政策
- 促销不在期 → 提示"促销期外，可用本人每月 700 元销售费用额度"（`数据/sales_policy.json`）

---

## 5. 工作流 C：数据查询

- 数据源：`kpi_progress.json` / `kpi_dashboard` / `shipment_status.json` / 回款分析
- **必须注明口径**（例："含税 / ERP 口径 / 截至 9-10"）
- 金额统一"万元"；预测单（`FO` 开头单据）不计销售——答题时显式说明是否已剔除
- 个人 vs 部门口径要分清（例：区域经理个人 KPI 不并入部门）

---

## 6. 工作流 D：销售打法

三段式输出：
1. **局面判断** —— 客户现在在什么阶段、卡点是什么（引用订单/活动/客诉事实）
2. **可落地话术** —— 直接能说的句子，不是形容词堆砌
3. **下一步动作** —— 谁、什么时候、做什么、验收标准

---

## 7. 工作流 E：沉淀闭环（需求第 5 段·让助手越用越聪明）

### 7.1 自动沉淀触发

| 触发词 | 动作 |
|---|---|
| "沉淀 / 记下来 / 存起来 / 这个经验不错" | 生成经验卡 |
| 助手给出 Stage 4 兜底建议且销售采纳 | 提示"要不要记下来，下次同类问题直接命中" |
| 竞品被提及（活动描述含竞对） | 自动写 `数据/competitor_intel.json` |

### 7.2 经验卡格式（脱敏后入库）

```
【经验卡】<标题>
- 场景：<什么类型的项目/客户阶段>
- 问题：<当时遇到什么>
- 做法：<实际做了什么>
- 结果：<量化结果，如"客户测试后转量产，首单 XX 万"（金额可保留）>
- 可复用点：<同类场景怎么用>
- 脱敏说明：客户名→"某诊断企业"；人名→"某研发负责人"；价格→区间化
```

### 7.3 双库同步

| 库 | 内容 | 脱敏 |
|---|---|---|
| **本地知识库** | 完整版（含客户名、姓名） | 否（仅工作台内，按权限可见） |
| **IMA 知识库** | 脱敏版 | **是**：客户名/人名/内部员工名一律替换，价格区间化 |

---

## 8. 天眼查接入（需求第 1 条）

详见 `手册与规范/天眼查接入方案.md`。要点：

- **主路径**：天眼查开放平台 API（`api.tianyancha.com`），按次计费，企业基本信息 ¥0.20/次
- **兜底**：本地缓存 → 公开检索 → 明说"暂未获取"
- **必做**：结果写 `数据/tianyancha_cache.json`（TTL 7 天），避免重复计费
- **权限**：天眼查数据进入会话前同样过权限闸（权限外客户不返回其工商画像）

---

## 9. 效果指标（用来判断"好不好用"）

| 指标 | 目标 |
|---|---|
| 客户调研卡一次成型率 | ≥ 80%（不需要追问第二次） |
| 产品问题首轮命中率（Stage 1+2） | ≥ 70% |
| 兜底建议占比（Stage 4） | ≤ 15%，且逐月下降 |
| 越权问答拦截率 | 100% |
| 经验卡月新增 | ≥ 10 张，复用率 ≥ 30% |
