| V1 |
哨兵调用方 |
git grep 函数名(app/scripts/web/miniapp/tests) |
只有 brain_gateway.py:780、:1354 两处 + 2 个测试文件;对照 is_hyperopia_topic 命中 2 文件 |
H5/小程序/企微共用这两处,改动只影响报警 |
| V2 |
是否拦截输出 |
读两处调用原文 |
都是 try: if 哨兵: log_incident(...) except: warning,不改 full_text/ai_response |
只报警,不拦不改 |
| V3 |
生产/测试代码一致 |
git diff origin/main origin/test -- refractive_topic_guard.py |
空 |
回放用生产现行代码 = 改前代码 |
| V4 |
依赖的私有符号别处用没用 |
git grep _hyperopia_bound_degrees 等 3 个 |
各 2 处,全在本文件 |
无外部耦合 |
| V5 |
提交守门 |
scripts/verify-trigger-files.txt |
本文件 0 命中;对照 h5_chat 1 |
不触发 chat-e2e 守门 |
| V6 |
告警消费方 |
grep device_reco web/miniapp/scripts/deploy |
0;对照 chat_guardrail 在 app 2 文件 |
没有看板/统计依赖这个告警数 |
| V7 |
告警时间线 |
生产 backend.log* 14 天 |
共 10 次(20 行含 webhook 行);本 query 仅 9-18 两次;9-24 0 次 |
今天没发生 |
| V8 |
回答是否完整 |
生产 chat_messages 两个会话 |
助手回复 704 / 468 字,结尾是追问"最近查过眼轴吗" |
完整送达 |
| V9 |
"远视储备不严谨/眼轴储备"出处 |
生产容器知识库 A chunk_texts.json(13847 段) |
第 12669 段原文「从远视储备转向眼轴储备 · 远视储备概念虽易于传播,但临床严谨性不足…」;"眼轴储备"20 段、"近视到站眼轴"21 段(对照"远视储备"839 段) |
AI 复述知识库,非编造 |
| V10 |
系统自己怎么分人群 |
refractive_topic_guard.py:59-61 |
A=远视储备不足(临近近视·延缓眼轴增长);B=大远视 ≥+3.00D(需正常发育),"方向相反" |
"储备不足"=A 类,排除大远视 |
| V11 |
知识库有无"储备不足"指大远视 |
知识库 A 同段共现 |
含"储备不足/没有远视储备"129 段,其中同段含"大远视" 0 段 |
医学前提成立 |
| V12 |
生产真实数据回放 |
生产全部含"远视/远储"提问的问答对,旧规则 vs 新代码(整文件原样注入) |
83 对:旧报 43 → 新报 31;放过 12 条全是"储备不足/没有储备"说法,对应回答 0 条提大远视;新增报警 0;400 度以上/中高度远视 7 条改前改后都报 |
只去误报,不漏真问题 |
| V13 |
反问/歧义句不被误放 |
单测正对照 |
「有没有远视储备」「远视储备还剩多少」「远视300度是不是储备不足」「远是储备和远视眼的区别」「远视储备有没有了」「远视储备没有问题吧能用红光吗」→ 仍报警 |
通过 |
| V14 |
单测 |
主会话亲跑 pytest |
201 passed(改前 188,新增 13 条);-k 筛出的 16 条(新增 13 + 9-23 原有正对照 3)-v 全 PASSED |
通过 |
| V15 |
反向注错 |
子代理:删掉新分支后跑 |
新增豁免用例变红(4/4、3/3),正对照保持绿;恢复后 201 passed |
新分支是通过的唯一原因 |
| V17 |
回归 |
子代理:相关 9 个测试文件改前(origin/test)/改后各跑一次 |
改前 17 failed/232 passed → 改后 17 failed/245 passed;17 条失败名单逐条相同(存量:本机缺 faiss doctor_001 索引等) |
无新增失败 |
| V16 |
告警白话为何说"回答缺失" |
alert_notifier.py:258-306 |
白话 4 行由 27B 现场翻译,本告警类型无固定中文描述 |
白话段会猜错,见残留 R2 |