口径说明(不可绕过):本看板只读聚合客服台账(kefu.json)中 source=compliance_block 的会话与
action=合规拦截 的操作链;不写盘、不触碰业务库。护栏采用双源判定:
herb_info.json 的 compliance 字段(在册 19 味)+ 已清退名录硬编码兜底(4 味,最高危)。
业务/图鉴/交易数据一律清退;医学知识条目保留留痕。
① 护栏 KPI 总览 实时
周报推送群组:
🏛️ 治理总览
📨 消息中心
CSV 日期区间:
至
留空=不限;已带下载头(浏览器直接下载 .csv)
② 近 7 天护栏周报 —
已落盘周报:正在读取…
周报自动落盘:
读取中…
间隔
推送群组
默认关(人工闸门)· 开启后由后台守护线程按周期自动落盘 · 推送群组随保存生效
③ 三层纵深护栏架构 前端 → 客服后端 → 底座统一
1前端拦截(体验层)
AI客服工作台 / 图鉴弹层 / mulu 搜索 前置 loadCmp() 命中即渲染红色合规卡片。
作用:第一时间给用户明确提示 · 可被绕过(非最终闸门)
2客服后端(业务层)
kefu_service.py · compliance_hit() 在 /api/kefu/ask 内层拦截,命中返回
source=compliance_block,不调 _ask_ai,写会话台账 + 操作链。
作用:业务闸门 · 本看板数据源
3底座统一护栏(最终闸门)
llm_router.py · compliance_guard() 位于全站唯一 AI 出口
(/api/ai/chat + /api/ai/vision),含"销售文案"等创作类入口一并拦截。
作用:一次覆盖所有问答入口
④ 拦截药材排行 按命中次数
④b 命中词 TOP 排行 + 命中层分布 台账 + 复核池合并 · 含所属护栏层
命中词 TOP
点击任意词 → 下方趋势与该词明细联动筛选;点「全部」清除
④c 命中趋势 近 14 天 · 按层堆叠
范围:
显示:
筛选:全部命中
图例(点击开关层):
已清退
敏感词
广告法
在册
虚线底 = 零命中日
④d 命中明细下钻 全部
按层:
(未选词 · 显示全部命中)
⑤ 拦截会话明细 最近 0 条
⑤b 人工复核池 —
护栏命中自动入池;复核判定需给「复核人」(人工闸门),逐条留痕。用于持续打磨词表、识别误拦。
批量疑似误拦可选「同时回流词表」→ 自动从名录移除该词并归档留痕(已清退层不可移除)
⑤c 回流审计 —
「疑似误拦」回流词表时,被移除的词进入此归档(留痕 by / removed_at)。可一键**恢复到原层**(人工闸门:须给恢复人)。
⑤d 词表快照管理 diff 对比 · 一键回滚
对比:
→
回滚:
回滚须给操作人(人工闸门),且回滚前自动存当前态
快照自动留存:
读取中…
间隔
保留
默认关(人工闸门)· 超出保留份数自动滚动删除最旧
词表版本快照:正在读取…
⑤e 命中突增告警 超阈值 → 推送消息中心
告警:
读取中…
模式
阈值
次
增幅≥
% 且绝对数≥
窗口
冷却
默认关(人工闸门)· 触发后推送消息中心
最近检测:—
⑤f 告警触发历史
近 10 次 · 可直接确认处理(人工闸门)
⬇ 导出 CSV
⑥ 护栏覆盖清单 在册 19 味 + 已清退 4 味 = 23 味 · 双源真源
⑦ 敏感词库(非法交易话术) 词组命中即拦
⑧ 广告法夸大话术库 问答/创作入口拦截
⑨ 名录真源与维护纪律 去硬编码 · 人工闸门
真源文件:data/retired_herbs.json(含 retired 已清退 / sensitive 敏感词两段)。
三层判定顺序:已清退名录(最高危·先判) → 敏感词(非法话术) → herb_info.compliance(在册 19 味)。
韧性设计:名录文件缺失/损坏时,代码内置硬编码兜底(4 味已清退),确保护栏永不失效。
修改纪律:名录为只读真源,变更须人工闸门(王先生拍板);护栏 5 分钟缓存,改后最多 5 分钟生效。