# 商品客服 Skill 覆盖与边界诊断器
## 诊断流程样例
### 入口
```bash
cd /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/2026-05-15-客服知识skill化
python tools/diagnose_kefu_skill_coverage.py \
--db analysis/商品wiki文档场景关系_2026-05-18_v2.db \
--sessions ../2026-05-09-商品领域意图体系迭代/clean/商品域最终体系_用户版层级_session复核_2026-05-13_v31.csv \
--core-docs config/core_product_kefu_docs_19.csv \
--exclude-doc-categories config/excluded_doc_categories.csv \
--out out/skill_coverage_diagnostic_2026-05-25.html
```
### 输入
| 输入 | 用途 |
| --- | --- |
| SQLite 场景库 | 统计每篇文档的 original_question_scene、sop_scene_extract、skill_md 数量 |
| 44 篇商品客服文档清单 | 固定覆盖率分母,支持审核/治理过滤 |
| 核心 19 篇清单 | 做高优先级缺口校验 |
| v31 session CSV | 固定线上商品域分母 9,335 |
| Skill 命中关系表 | 计算唯一 session、命中关系、命中 Skill、线上原文场景 |
### 检查顺序
1. 分母检查:44 篇、排除审核/治理后的篇数、核心 19 篇是否都在库中。
2. 抽取覆盖:列出 skill_md=0 的文档,并标注是未跑、抽取失败,还是确认无可抽 Skill。
3. 线上命中:用唯一 session 计算命中率,同时单列命中关系数,避免把 543 关系误读为 543 个 session。
4. 边界诊断:对 Top Skill 抽样回源,标出“标题过窄但承接入口更宽”的场景,例如团购套餐/代金券/次卡统一落到团购商品创建入口。
### 成功/失败信号
| 检查项 | 成功信号 | 失败信号 | 建议动作 |
| --- | --- | --- | --- |
| 核心文档覆盖 | 核心 19 篇 skill_md 均非 0 或有人工豁免原因 | 任一核心文档为 0 且无原因 | 重新跑该文档抽取并更新 SQLite |
| 过滤口径 | 审核/治理排除名单可追溯 | 每次回答重新手工排除 | 固化 config/excluded_doc_categories.csv |
| 线上命中 | 同时输出 531 session 与 543 关系 | 只报一个数导致重复计数误解 | HTML 中并排展示分子/分母 |
| Skill 边界 | Top Skill 有命名解释和代表 case | 高命中 Skill 被误解成窄问题激增 | 改名或增加 alias/boundary_note 字段 |
### 预期产物
- out/skill_coverage_diagnostic_2026-05-25.html:可浏览诊断页。
- out/skill_coverage_diagnostic_2026-05-25.xlsx:文档覆盖、核心缺口、Top Skill、边界说明四个 sheet。
- out/skill_coverage_diagnostic_2026-05-25.json:供 Night Gym 汇总读取的结构化结果。