客服小薪会话记录 Skill
查询导出客服小薪会话记录,并处理为人工审查表或知识命中明细表。三条流程可独立或串联:查询导出(数据源)-> 人工审查表 / 知识命中明细表(基于导出的会话记录)。
触发场景
- "查询/导出 X 到 Y 的客服小薪会话记录"
- "生成 X 到 Y 的客服小薪人工审查表"(自动先查询导出会话记录)
- "生成 X 到 Y 的客服小薪知识命中明细"(自动先查询导出会话记录)
日期格式 YYYY-MM-DD。--end 含当天全天。
前置依赖
python3+pandas+openpyxl+pymysql。缺失时pip3 install pandas openpyxl pymysql(优先国内镜像)。- 环境变量
DMS_HOST/DMS_PORT(默认 3306)/DMS_DB/DMS_ACCESS_ID/DMS_ACCESS_SECRET(在~/.zshenv配置,新开终端生效)。 - DMS 为内网地址,需公司 VPN 在线。
执行流程
三个脚本默认输出到执行目录(cwd)。{SKILL_DIR} = ~/.codex/skills/customer-service-records/scripts。
1. 查询导出会话记录
python3 {SKILL_DIR}/dms_query.py --start 2026-07-03 --end 2026-07-04
# 单日等价:--date 2026-07-03
- 连接 DMS 执行固定 SQL,导出为 xlsx
- 输出:
客服小薪-会话记录_<起>~<止>.xlsx - SQL 为内置固定模板,只允许通过
--start/--end/--date修改时间范围,不得改动 SELECT/JOIN/CASE 等其他部分 - 自动分批:DMS 安全访问代理单次查询限制返回 3000 行。脚本会先 COUNT 总行数,若超过阈值(2900 行)则自动按天拆分多批次查询并合并,最后做行数完整性校验。调用方无需关心分批逻辑,输出始终为单个完整 xlsx
2. 生成人工审查表
先执行流程 1 得到会话记录 xlsx,再:
python3 {SKILL_DIR}/custom_service_data_transfer.py "<会话记录xlsx路径>" --start 2026-07-03 --end 2026-07-04
- 拆分"相关知识"为多行,新增列:是否需人工处理、知识点内容、知识点得分、知识点来源
- 仅保留需人工处理的行(点踩 / 无相关知识 / 知识不足以总结答案,或正常回答且知识相关度 > 0.25)
- 输出:
客服小薪-人工审查_<起>~<止>.xlsx
3. 生成知识命中明细表
先执行流程 1 得到会话记录 xlsx,再:
python3 {SKILL_DIR}/process_to_knowledge_detail.py "<会话记录xlsx路径>" --start 2026-07-03 --end 2026-07-04
- 拆分"相关知识"为多行,新增列:知识、知识点ID、知识点来源、知识点得分、知识点-问题、知识点-答案
- 保留全部行(不做筛选)
- 输出:
客服小薪-知识命中明细_<起>~<止>.xlsx
文件命名格式
客服小薪-{会话记录|人工审查|知识命中明细}_<起>~<止>.xlsx,日期 YYYY-MM-DD,起止用 ~ 连接。
半角
/是路径分隔符不能进文件名,故日期用-分隔、起止用~连接。
关于 SQL
dms_query.py 内置固定 SQL 模板,从 aim.custom_service_chat LEFT JOIN company.company 查询客服小薪问答明细。只允许修改时间范围(通过命令行参数),其余部分不可改动。SQL 详情见脚本内 SQL_TEMPLATE。
此外脚本内置 COUNT_SQL(与 SQL_TEMPLATE 使用相同的 WHERE 条件),用于导出前统计总行数以决定是否需要分批。该 COUNT 查询不涉及 JOIN,仅统计 custom_service_chat 表行数。
DMS 3000 行限制
DMS 安全访问代理对单次查询结果集有 3000 行上限。dms_query.py 通过以下策略确保数据完整:
- 先用 COUNT 查询统计目标时间范围内的总行数
- 若总行数 <= 2900(留 100 行余量),单次查询导出
- 若总行数 > 2900,按天拆分;若某天仍超限,按 6 小时 -> 1 小时逐级拆分
- 各批次查询结果合并后,与 COUNT 结果做行数一致性校验
完成后
报告生成的文件名与绝对路径。