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