医药销售业务本体数据库 v3.0(138张表)。
核心理念:用户问题 → NL2SQL → SQL 模板复用 → 归因分析
| 项目 | 值 |
|---|---|
| ------ | --- |
| Host | localhost |
| Port | 3306 |
| User | ontology |
| Database | salesclaw |
| 连接管理 | tools/db.py(get_conn() / query_all() / query_one()) |
from db import query_all, query_one
rows = query_all("SELECT * FROM dim_products LIMIT 5")
路径: ~/.openclaw/workspace/skills/salesclaw/knowledge/
knowledge/
├── index.md ← 总索引
├── entities/ ← 138张表的字段说明(doctors/hospitals/dim_products/...)
├── concepts/ ← 业务概念(three-layer-attribution / expense-red-green / ...)
└── sql_templates/ ← 沉淀的 SQL 模板(NL2SQL 复用)
| 模板 ID | 适用问题 | 优先级 |
|---|---|---|
| --------- | --------- | -------- |
prescription_trend | 品种趋势/处方量下滑/环比 | P0 |
expense_red_green | 费用异常/DeltaWeight/红黄灯 | P0 |
rep_performance | 代表绩效/红黄牌/达成率 | P0 |
target_attainment | 区域达成/缺口分析 | P1 |
hospital_access | 进院情况/VBP覆盖 | P1 |
prescription_penetration | 渗透率/覆盖率/上量空间 | P1 |
doctor_profile | 医生档案/KOL识别 | P1 |
data_overview | 数据概览/记录数检查 | P2 |
问题:失血发生在哪个结构单元?
分析方向:
-- 定位省区处方量贡献(结构归因第一步)
SELECT province,
SUM(prescription_volume) as vol,
SUM(prescription_volume) / SUM(SUM(prescription_volume)) OVER () * 100 as share_pct
FROM fct_prescription_flow
WHERE product_id = :product_id
GROUP BY province
ORDER BY vol DESC;
问题:结构单元的失血是因为什么行为变化?
分析方向:
问题:谁(哪个代表/哪条线)应对变化负责?
分析方向:
DeltaWeight = 某省区某费用类型占比 - 全国该费用类型占比
省区费用占比 = 该省该费用类型金额 / 该省费用总额
全国费用占比 = 该费用类型金额 / 全国费用总额
| 告警级别 | 阈值 | 响应时间 |
|---|---|---|
| --------- | ------ | --------- |
| 🔴 红灯 | DeltaWeight ≥ 30ppt | 24h |
| 🟡 黄灯 | DeltaWeight ≥ 15ppt | 1周 |
| 表 | 用途 |
|---|---|
| ------ | ------ |
fct_diagnosis_session | 每次告警触发一次诊断会话 |
fct_reasoning_step | 每层归因的每一步记录 |
dim_diagnosis_rules | 诊断规则模板(5条预置) |
conclusions | 归因结论输出 |
ontology_objects.id(中心节点)
↓
├── object_links(关系边:代表←→医生、代表←→医院、竞品关系)
├── object_events(事件边:拜访、学术活动、处方事件)
└── time_series_data(时序边:处方量趋势、费用趋势)
| 工具 | 文件 | 功能 |
|---|---|---|
| ------ | ------ | ------ |
| 业务路由器 | tools/ask.py | 意图识别 + 10大业务模块查询 |
| 推理引擎 | tools/inference.py | 三层归因诊断会话(structure→behavior→decision,含置信度传播+反例探测+Early Exit) |
| 知识 API | tools/knowledge.py | 统一知识消费:load_sql_template / load_entity_schema / load_concept / render_sql |
| 数据库连接 | tools/db.py | 连接池管理(超时重试+降级+错误透出) |
| 初始化 | tools/init_mysql.py | 从 init.sql 初始化 |
> 使用方式:用户问题 → NL2SQL → 常见问题沉淀为 SQL 模板;复杂推理链路(如三层归因)由工具封装。
共 4 个版本