Files
group_fqcd_jr/.gitignore
张胜宇 dd5e9f8435 fix(W21): 智能度体检 → 3 类真实缺陷修复(C-8/C-9/C-10)+ 1 类待裁登记(C-11)
甲方反馈「客服 agent 还是不太智能」。本轮不新增出口、不改需求,
把"不智能"拆成可复现的实测条目:81 条真实口语问法 + 8 组多轮追问链
(真 HTTP:API → 队列 → Worker → 治理层),逐条定位根因并修复。

已修复(每条都有真机 HTML 证据,见 开发文档/D4.8 §3)

- C-8 账户盈亏问法落"误导性澄清"
  「我的基金赚了多少钱」→ E1 澄清,三个候选(万份收益/起投金额/收益率差别)
  全是公开知识,而客户问的是自己账户的盈亏金额。
  修法:P1_PATTERNS 补「第一人称 + 盈亏动词 + 金额疑问词」骨架,
  金额疑问词是必要条件 —— 「我买的基金亏了怎么办」照旧走知识检索(库里有解)。

- C-9 多轮指代断链,把"已经说过的"又问一遍
  「我想买个债基」→「它适合我吗」落 E2d「请告诉我具体的基金名称或代码」,
  而客户刚刚才被告知是那只产品;「赎回费怎么算」→「持有 8 个月呢」同因。
  两个根因:① _topic_of 只在答复前 4 行的固定形状里取主语,FAQ 型答复
  (首行「问:…」)反解为空;② 意图分类把短追问标成 suitability_check,
  绕开了知识出口里已做好的追问继承逻辑。
  修法:_answer_suitability 建成四级降级链(严格主语 → 形状反解
  _product_name_in_history → 有上文交回检索 → 首轮才澄清)+ 纯参数追问前置闸门。
  安全边界三条不放宽:不给访客"能不能买"结论;推测出的名字查不到风险等级时
  回落检索而非回"给不出结论";首轮指代保留澄清(金标 E-01 口径)。

- C-10 「你们投诉电话是多少」被强制转人工
  根因:P2_WRITE_DISPUTE_KEYWORDS 里的裸词「投诉」子串命中,把"问投诉渠道"
  和"提交投诉"撞在同一判据上;而答案就在库里(POL-SPM-036-01 / FAQ-0054)。
  修法:新增 _is_p2_contact_inquiry() 作为第二类 P2 豁免(渠道词 + 疑问词,
  且不带明确投诉意图)。「我要投诉,让你们经理来找我」照旧建单。

定位但未修(需甲方裁定合规口径)

- C-11 E4 证据约束生成的答复被"收益数值"闸门整条拦回 E5b
  「南方现金添利怎么样」(top1 1.0000) / 「买基金要手续费吗」(0.7328) /
  「债基和货基哪个收益高」(0.5457) 三条同因:生成稿出现 YIELD_METRIC_TERMS
  → hits_zero_tolerance → _exit_partial → E5b 兜底。
  试过"先净化再判合规",实测更差(drop_yield_claims 整行丢弃 + 生成稿常是
  单行长段 ⇒ 整条被删空),已回退并把原因写进代码注释留痕。
  建议方案:改 E4 提示词禁止输出收益数值(源头消除,不动红线代码)。

待判物

- _chunks_report.txt 判定可删:无代码引用 / 内容可从 knowledge/_chunks.jsonl
  复算 / 从未入库 / 统计口径已写进 D2.4 §6 与 D2.8 §2。已删 + 加 .gitignore。

验收

- 金标 46 条:M-1 46/46、M-4 46/46、M-6 5/46(白名单 F-05/G-01/G-03/G-04/G-05,
  零越界)、M-7/M-8/M-9/M-10 = 0、M-2 28/31、M-2b 15/18、M-3 4/4
  —— 与 W20 基线逐项一致,零回归。
- 全量回归 1985 passed / 3 skipped(W20 基线 1969 passed / 3 skipped)。
- 新增守卫单测 16 条(含 C-8 两条 / C-9 四条 / C-10 两条)。
- ruff 仅剩 4 条既有告警,未顺手改,避免混入无关 diff。

文档

- 新增 开发文档/D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md
- 客服agent/D2.1 升 v6.37;开发文档/D1.1 升 v1.13;D1.6 增 §9 上下文提取
2026-09-21 10:55:16 +08:00

69 lines
1.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.env
# `.env` 的自动备份:编辑 `.env` 时工具会留下 `.env.bak-<时间戳>`,
# 它是**含真实密钥的完整副本**,而 `.env` 本身被忽略、它却不在忽略之列 ——
# 一旦有人 `git add -A` 就会把密钥带进版本库(2026-09-14 实测本机就出现了这样一个文件)。
.env.bak*
.env.*.bak
config/jwt/
__pycache__/
*.py[cod]
.pytest_cache/
.mypy_cache/
.ruff_cache/
*.egg-info/
.venv/
.worktrees/
.coverage
htmlcov/
coverage.xml
storage/
build/
dist/
*.log
data/milvus/
.idea/
.vscode/
data/promotion_materials/
.codex-step3/
data/offsite_mail/
logs/
# 浏览器拖拽文档的落点:只含 dsh-dropdoc 生成的目录清单,不是项目产物
.dsh-drop/
# 本地临时目录与工具工作区(不提交)
# - .superpowers/ 是 SDD 实施流程的台账与工作区(计划/评审记录)
# - 其余是 pytest / pip 在受限环境下落到仓库根的临时目录
.tmp/
.tmp-pip/
.ptmp/
.pytest-tmp/
.pytest-tmp3/
.pytest-work/
.pytestwork/
.pytest-tmp-*/
tests/.workdir/
pytest-cache-files-*/
.superpowers/
.dsh-tmp-*.py
# 运行期产出的知识库文档(`LocalDocumentStorage` 的落盘位置):
# 由 `KnowledgeIngestService` 在入库时写入、被 `fin_knowledge_meta.minio_path` 引用,
# 属**环境数据**而非源码(换环境重新导入即可),因此不入库。
# 同理:仓库根的 `.workdir/` 是测试脚本的工作目录。
data/
.workdir/
.migration-backups/
# AI 编码助手配置,与本项目无关(2026-09-13 清理误提交)
.agents/
skills-lock.json
# 本机实际功能测试数据,不提交远程仓库
测试/
# AI 编码助手的会话记忆目录(同上一类:工具产物,不是项目内容)
.workbuddy/
# tools/build_knowledge_chunks.py 的输出副产物(可由 knowledge/_chunks.jsonl 复算,不入库)
_chunks_report.txt