核对时间:2026-09-28(用户「老对话仅测试,后续会全部清空」→ 要求顺带把 其他只服务旧协议的块查一遍) 性质:只读排查 —— 除
<policy-list-updated>(本次已删,见 §一)外,本清单 没有据此改任何代码;结论供用户决定下一步删什么。 方法:全仓库 grep<标记,逐个反查三件事: ①stream-xml-filter.ts里有没有规则 → ② 谁消费(渲染组件 /customProcessor)→ ③ 现在谁产出(新协议适配层?旧会话历史?开发环境 mock 文本?)。复核命令见 §四。
| 标记 | 过滤器规则 | 消费端 | 现在的产出者 | 结论 |
|---|---|---|---|---|
<scope> |
block(stream-xml-filter.ts:53) | ScopeContent |
适配层(progress / heartbeat → 思考中卡片) | ✅ 在用 |
<!-- POLICY_TABLE … --> |
特殊块 | PolicyMatch |
适配层(item 事件) | ✅ 在用 |
<ref_links> |
block(:58) | BusinessRecord 参考资料 |
适配层(source 事件) | ✅ 在用 |
<question-cards> |
block(:77) | QuestionCard |
适配层(interrupt 事件) | ✅ 在用 |
<image-scope> |
block(:55) | ImageContent |
适配层(result.cipa → 企业微信二维码) | ✅ 在用 |
<policy-list-updated> |
PolicyListUpdatedMatch |
无 | 🗑 2026-09-28 已整条删掉(见下节) | |
<form> |
block(:52) | FormContent(BusinessRecord:116) |
无 —— src 里没有产出代码 | ⚠️ 只有旧会话历史能触发 |
<link-url> |
block(:54) | LinkURLContent(:117) |
无 | ⚠️ 同上 |
<file-docx> |
block(:59-64) | OfficeURLContent(:125) |
无 —— 附件走请求体 pictures/files,不走正文标记 |
⚠️ 同上 |
<ui-form> |
skip(:65-70) | customProcessor → setFormOptions(BusinessRecord:561-574) |
无 | 💀 整条链是死的:两个壳组件 provide 的 setFormOptions 都是空函数(BusinessAssistantMobile.vue:424 / BusinessAssistantPC.vue:366),即便有内容也不产生任何界面变化 |
<followup> |
skip(:71-76) | 无人注册 —— customProcessor 里只有 UIForm 一项 |
只有开发环境测试按钮的 mock 文本(test-document-line-stream.ts:20、useBusinessAssistantChat.ts:1466) |
💀 全链死:followupSuggestions 全仓库没有任何写入点(旧协调器删除后就没接回),块被静默丢弃 |
<silence> |
skip(:51,透明容器) | 无(只是壳) | 同上,仅那两处 mock 文本 | 💀 只剩 mock;interrupted-message.ts:19 还会剥它,属无害残留 |
<qingpu_enterprise_notificaion> |
skip(:78-83) | 无人注册 customProcessor |
无 | 💀 死规则(AccountInfo.vue 里的 ENTERPRISE_BUBBLE_EVENT 是另一个 DOM 事件,与此无关) |
行号是 2026-09-28 改动后的(删掉 policy-list-updated 规则会让后面的行号前移一位)。
<policy-list-updated><policy-list-updated>{link, payload}</policy-list-updated>,
给出一个地址,前端(PolicyListUpdatedMatch.vue)照着去取 json 渲染卡片列表,
并把结果写回 globalThis.policiesPublic。这是接口清单 #11(见
current-api-call-sites.md)。scope / POLICY_TABLE /
ref_links / question-cards / image-scope,见
api-chat-coordinator.ts:10-21)。
它唯一的触发源是旧会话的历史内容——用户 2026-09-28 确认「老对话仅测试,后续会全部清空」,
这条保留理由随之消失。src/components/Chat/PolicyListUpdatedMatch.vue 整文件 ·
BusinessRecord.vue 的挂载点 / import / hasPolicyTableRow 里的分支 ·
StreamXMLFilter 的枚举成员与标签规则 · PolicyMatch.vue 的说明注释 ·
接口清单 #11 与本文档。<policy-list-updated>{"link":…}</policy-list-updated> 会当普通文本显示
(既没有卡片列表,也不再被吞掉)。新会话不受影响。按「删了会不会有人看出来」分两档:
<ui-form> / <followup> / <silence> / <qingpu_enterprise_notificaion> ——
已经没有任何效果(消费端空实现或无人注册),删规则不会有任何可见变化。
要动的话删规则即可,枚举成员与 FormContent / LinkURLContent / OfficeURLContent
不要跟着删(理由见下)。<form> / <link-url> / <file-docx> —— 渲染组件是活的(旧历史里仍能画出来)。
删规则 = 旧会话那几处变成原始文本,与 policy-list-updated 同一个副作用。
既然旧对话要清空,这批也可以走同一条路;但建议等清空动作真的做完再删,
免得清空前有人翻旧会话时看到一片标记。另有一批与旧协议无关的历史包袱在
current-api-call-sites.md§二/§三(已停用接口、死代码),不在本文范围。
# ① 每个标记的产出者:排除过滤器与消费组件后应当为空(或只剩开发环境 mock)
grep -rn "<followup\|<ui-form\|<link-url\|<file-docx\|<form" src/ \
| grep -v "stream-xml-filter\|Content.vue\|test-document-line-stream"
# ② 谁注册了 customProcessor
grep -n "RecordRowTypes\.[A-Za-z]*," src/components/Chat/BusinessRecord.vue
# ③ 两个壳组件的 setFormOptions 是不是空函数
grep -n -A1 "formOptionsControl" src/components/BusinessAssistantMobile.vue src/components/BusinessAssistantPC.vue
# ④ followupSuggestions 有没有写入点(应当没有)
grep -rn "followupSuggestions\s*=" src/