chore: 更新公司通信费规则表、work-log 与 superpowers specs 文档

This commit is contained in:
caoxiaozhu
2026-06-24 22:59:10 +08:00
parent e5b03c6601
commit a12c4bea64
3 changed files with 278 additions and 0 deletions

View File

@@ -396,8 +396,62 @@
- 验证:`node --test web/tests/workbench-ai-intent-planner-model.test.mjs``node --test web/tests/workbench-ai-application-gate-model.test.mjs``node --test web/tests/workbench-ai-application-context-submit.test.mjs``node --test web/tests/steward-plan-model-pending-flow.test.mjs` 均通过;`git diff --check -- web/src/composables/workbenchAiMode/workbenchAiIntentPlannerModel.js web/tests/workbench-ai-intent-planner-model.test.mjs` 无输出。
- 影响用户输入“2026-02-20 至 2026-02-23去上海出差辅助国网仿生产服务器部署交通火车”时如果门禁已查明没有可关联申请单前端会把“应先申请单据”直接落到申请预览链路不再表现成只会反复识别意图。
- 22:04我修复了 AI 工作台短句意图漏识别,覆盖“删除草稿”和“我要审核/待办审批”这两类高频输入。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;本轮修改集中在 AI 工作台命令意图、待审单据查询识别和对应前端测试。
- 根因:工作台输入链路目前优先进入模型规划,但前端本地可执行意图只覆盖申请预览、报销和单据查询的较完整问法;“我要审核”没有命中 `resolveAiDocumentQueryIntent()` 的待审查询触发词,“删除草稿”则没有上下文命令入口,容易退回普通 steward 规划或被当作报销填槽文本。
- 修改:新增 `workbenchAiCommandIntentModel.js``useWorkbenchAiCommandIntents.js`,把“删除草稿 / 删除这个申请单 / 把刚才保存的草稿删掉”等短句识别为上下文命令;命中最近草稿时只给“查看草稿详情”动作,要求用户在详情页二次确认删除,不直接执行破坏性删除。
- 修改:`usePersonalWorkbenchAiMode.js` 接入命令意图 composable并让删除草稿意图优先于报销草稿填槽处理未找到最近草稿时自动转为“我的草稿单据”查询帮助用户先选中目标。
- 修改:`aiDocumentQueryIntent.js` 扩展“我要审核 / 我要审批 / 待办审批 / 去审核 / 处理审批”等短句到待我审核单据查询,同时排除“审批规则怎么走”这类政策咨询,避免误打到单据列表。
- 测试:先补红灯测试复现缺口;实现后 `node --test web/tests/workbench-ai-command-intent-model.test.mjs web/tests/ai-document-query-model.test.mjs` 通过 19/19相邻 `workbench-ai-action-router.test.mjs``workbench-ai-intent-planner-model.test.mjs` 通过;`npm --prefix web run build` 通过;`git diff --check -- ...` 无输出。
- 真页烟测:当前 `x-financial-local-linux` 正在监听 5173`curl -I http://127.0.0.1:5173/app/workbench` 返回 200说明本地 AI 工作台入口可访问。
- 影响:用户在 AI 工作台直接输入“删除草稿”时,会被引导到最近草稿详情并保留删除确认边界;输入“我要审核”或“待办审批”时,会直接查询待我审核单据,不再表现为没识别到意图。
- 22:31我把 AI 工作台意图识别从场景补丁收敛成统一 Intent Frame 方案,并按方案完成第一版前端接线。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;本轮在 22:04 短句修复基础上继续新增 Markdown 方案、统一意图框架、动作策略、筛选能力和前端测试。
- 文档:新增 `2026-06-24-workbench-intent-frame-design.md`,明确 `IntentFrame Parser -> Target Resolver -> Action Policy -> 业务 flow` 的总体方案;用户确认只需要 `.md` 后,我清理了临时 DOCX 产物,只保留 Markdown 文档。
- 修改:新增 `workbenchIntentFrameModel.js`,把输入统一解析为 `action / objectType / filters / targetMode / safetyLevel / normalizedQuery`;覆盖“删除刚才那个草稿”“删除 3 天前的草稿”“审核合规没有风险的申请”和“审批规则怎么走”。
- 修改:新增 `workbenchIntentActionPolicy.js`,把删除、审核、驳回固定为 `confirm_required`;当前上下文目标只打开详情确认,筛选型目标只查询候选,不通过自然语言直接执行副作用。
- 修改:`useWorkbenchAiCommandIntents.js` 先走统一 Intent Frame再分发到最近草稿详情确认或候选查询并排除“删除附件/票据”这类非单据删除,避免抢走附件流程。
- 修改:`aiDocumentQueryIntent.js``aiDocumentQueryModel.js` 增加“3 天前”相对日期、无风险/高/中/低风险筛选、`我的草稿单据` 查询来源识别和风险摘要展示;“审批规则怎么走”仍保持规则咨询,不进入单据查询。
- 测试:先补红灯测试复现缺口;实现后 `node --test web/tests/workbench-intent-frame-model.test.mjs` 通过 4/4`node --test web/tests/ai-document-query-model.test.mjs` 通过 16/16相邻 `workbench-ai-command-intent-model.test.mjs``workbench-ai-action-router.test.mjs``workbench-ai-intent-planner-model.test.mjs` 均通过。
- 验证:`npm --prefix web run build` 通过,保留既有 Rollup pure 注释与 chunk size warning`git diff --check -- ...` 无输出;`curl -I http://127.0.0.1:5173/app/workbench` 返回 200。
- 影响:后续“删除 3 天前的草稿”会先转成“我的 3天前 草稿单据”候选查询;“审核合规没有风险的申请”会先转成“待我审核 无风险 申请单”候选查询;“刚才那个草稿”仍可在当前会话内定位最近草稿,但只给详情确认入口。
- 22:36我修复了“删除申请单草稿”虽然识别到删除动作但前端没有显示删除思考过程的问题。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;本轮继续修改统一 Intent Frame 查询句、单据查询 thinking 和对应回归测试。
- 根因:`resolveWorkbenchIntentFrame()` 能解析出 `action=delete`,但 `normalizedQuery` 被压成“我的草稿单据”,丢了“申请单”筛选;同时 `handleAiDocumentQueryIntent()` 只接收查询句,不接收原始 `commandFrame`,导致 thinking 只展示“解析筛选条件”,没有展示“删除是高风险动作,不会直接执行,会先筛选候选”。
- 修改:`workbenchIntentFrameModel.js` 保留“草稿 + 申请单”的组合筛选,`删除申请单草稿` 现在生成 `我的 草稿 申请单`,避免查询阶段退化成全部草稿。
- 修改:`aiDocumentQueryModel.js` 新增 `buildAiDocumentQueryThinkingEvents()`,当传入 `commandFrame``safetyLevel=confirm_required` 时,首个 thinking 事件固定为“识别高风险操作意图”,文案明确删除/审核不会直接执行,会先筛选候选。
- 修改:`useWorkbenchAiDocumentQueryFlow.js` 支持第三个参数 `{ commandFrame }``useWorkbenchAiCommandIntents.js` 在候选查询时传入统一意图帧,让查询 thinking 保留原始动作语义。
- 测试:新增回归覆盖 `删除申请单草稿`,断言查询句保留 `申请单``草稿`,且 thinking 首条包含“删除 / 不会直接执行 / 先筛选候选”;相关 `workbench-intent-frame-model.test.mjs` 6/6 通过。
- 验证:`node --test web/tests/workbench-intent-frame-model.test.mjs web/tests/workbench-ai-command-intent-model.test.mjs web/tests/ai-document-query-model.test.mjs` 通过 27/27相邻 `workbench-ai-action-router.test.mjs``workbench-ai-intent-planner-model.test.mjs` 通过 17/17`npm --prefix web run build` 通过;`git diff --check -- ...` 无输出5173 工作台路由返回 200。
- 影响:用户输入“删除申请单草稿”时,不会只看到普通查询筛选;系统会先展示删除动作的高风险策略思考,再查询“我的草稿申请单”候选,并保留详情页二次确认边界。
- 22:42我补强了高风险命令的最终候选结果提示让用户在卡片结果里也能看到“不会直接删除/审核”和快捷入口说明。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;本轮继续修改 `aiDocumentQueryModel.js`、查询 flow 和统一意图回归测试。
- 根因22:36 只把删除动作写进 thinking 事件,但最终候选结果仍是普通单据卡片和“查看详情”按钮;用户如果只看结果卡片,会看不到“系统不会直接删除,请先进入详情确认”的明确操作边界。
- 修改:`buildAiDocumentQueryMessage()` 支持 `commandFrame`,当命令为删除/审核/驳回等 `confirm_required` 动作时,在候选卡片上方插入高风险操作提示:系统不会直接删除/审核相关单据,需点击下方候选单据里的快捷按钮并进入详情核对后再操作。
- 修改:候选单据卡片的操作按钮会随命令动作改文案:删除为“进入详情确认删除”,审核为“进入详情确认审核”,驳回为“进入详情确认驳回”;普通查询仍保持“查看详情”。
- 修改:`useWorkbenchAiDocumentQueryFlow.js` 在生成最终查询消息时传入 `commandFrame`,保证真实工作台路径能展示同一套提示和按钮文案。
- 测试:新增回归断言 `删除申请单草稿` 的结果消息包含“系统不会直接删除相关单据 / 请点击下方候选单据里的快捷按钮 / 进入单据详情核对后再操作”,并出现 `进入详情确认删除` 按钮文案。
- 验证:`node --test web/tests/workbench-intent-frame-model.test.mjs web/tests/workbench-ai-command-intent-model.test.mjs web/tests/ai-document-query-model.test.mjs` 通过 28/28相邻 `workbench-ai-action-router.test.mjs``workbench-ai-intent-planner-model.test.mjs` 通过 17/17`npm --prefix web run build` 通过;`git diff --check -- ...` 无输出5173 工作台路由返回 200。
- 影响:用户输入“删除申请单草稿”后,既能在 thinking 里看到删除动作识别,也能在最终结果卡片里看到删除确认边界和实体快捷入口,不会误以为系统已经直接删除或只能普通查看。
- 22:49我根据截图修复了“删除申请单草稿”结果页只剩“已查询到相关单据”、高风险提示和候选卡片没有显示的问题。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;工作区仍是本轮 AI 工作台意图识别和结果渲染相关未提交改动。
- 根因:高风险提示块里使用了 `<p>` 标签,但 `conversationTrustedHtml` 的 trusted HTML 白名单不允许 `<p>`;安全渲染会把包含该标签的整段 trusted HTML 丢弃,所以页面只保留 Markdown 标题,看起来像没有继续删除思考。
- 修改:`aiDocumentQueryModel.js` 将高风险提示正文改为白名单已允许的 `<div>`,不扩大 trusted HTML 标签面;`personal-workbench-ai-mode.css` 增加提示块样式,让“系统不会直接删除相关单据”和后续详情确认说明稳定显示在候选卡片上方。
- 测试:先新增渲染级红灯测试复现截图,确认渲染后只剩标题;修复后该测试断言 `ai-document-command-guidance``系统不会直接删除相关单据``进入详情确认删除``ai-document-card-list` 都保留在最终 HTML 中。
- 验证:`node --test web/tests/ai-document-query-model.test.mjs` 通过 17/17`node --test web/tests/ai-document-query-model.test.mjs web/tests/workbench-intent-frame-model.test.mjs web/tests/workbench-ai-command-intent-model.test.mjs web/tests/workbench-ai-action-router.test.mjs web/tests/workbench-ai-intent-planner-model.test.mjs` 通过 46/46`npm --prefix web run build` 通过;`git diff --check -- ...` 无输出;`curl -I http://127.0.0.1:5173/app/workbench` 返回 200。
- 影响:用户输入“删除申请单草稿”后,结果标题下方会恢复高风险说明、候选单据卡片和“进入详情确认删除”快捷按钮;系统仍不会直接删除单据,而是要求进入详情核对后再操作。
## 遗留问题
- 22:49本轮用渲染级回归测试确认 trusted HTML 已恢复,但还没有做真实浏览器点击级回放和截图复核。建议后续在 5173 输入“删除申请单草稿”,确认真实主题下提示块、候选卡片和按钮没有拥挤或错位。
- 22:42本轮仍未做真实浏览器点击级回放确认高风险提示在 AI 工作台卡片里的视觉效果。建议后续在 5173 输入“删除申请单草稿”,截图确认提示块、候选卡片和“进入详情确认删除”按钮在当前主题下没有拥挤或错位。
- 22:36本轮仍未做浏览器点击级回放确认“删除申请单草稿”的实际 thinking 卡片视觉状态。建议后续在真实 5173 工作台输入该句,确认首条 thinking 为删除高风险策略、后续才是查询和筛选候选。
- 22:31本轮已完成统一意图框架的模型测试、查询筛选测试、相邻前端测试、构建和 5173 路由烟测,但没有做浏览器点击级回放确认“删除 3 天前的草稿 / 审核合规没有风险的申请”的最终候选卡片。建议后续在真实工作台输入这两句,截图确认 thinking、候选列表和详情入口。
- 22:04本轮完成了前端行为测试、构建和 5173 路由烟测,但没有做浏览器点击级回放确认输入“删除草稿 / 我要审核”的最终卡片状态。建议后续在真实浏览器里回放这两个短句,截图确认动作卡片和待审单据列表符合预期。
- 09:41当前 Skill 是新建在项目级 `.codex/skills` 目录里,本轮可以通过文件检查验证结构,但是否被未来会话自动加载还依赖 Codex 对项目 Skill 的刷新机制。建议后续新开会话或下一次任务时确认 Skill 列表是否出现 `agent-change-log`
- 09:43`.codex/` 曾被 `.gitignore` 整体忽略,新建的 `agent-change-log` 默认不会进入普通提交范围09:44 已改成只放行该 Skill。建议后续如果还新增其他项目 Skill也按同样方式逐个显式放行别一次性开放整个 `.codex`
- 10:01当前工作区已有大量未提交改动且本地 `main` ahead 1。建议后续如果真的发现 upstream 新提交,先用 fetch 和 `HEAD..@{u}` 写日志;只有在工作区干净、可快进时再执行 `git pull --ff-only`,避免把其他智能体提交和本地半成品混到一起。
@@ -488,6 +542,15 @@
- [x] ~~让 AI 模式模型规划等待期间持续追加 thinking 事件,而不是静态显示“思考中”后一次性出现步骤。~~(完成于 17:26证据真页干净会话 thinking 数量从 2 条逐步增长到 6 条,相关前端测试 33/33 通过)
- [x] ~~修复 AI 工作台“保存草稿”后的上下文提交短句,让“提交这个单据”复用最近申请草稿而不是重新规划。~~(完成于 17:40证据`workbench-ai-application-context-submit.test.mjs``workbench-ai-application-gate-model.test.mjs` 通过)
- [x] ~~修复“完整出差信息但未说申请/报销”时只停在候选流程确认的问题,让唯一的“先发起出差申请”候选流直接进入申请预览计划。~~(完成于 17:48证据`workbench-ai-intent-planner-model.test.mjs` 新增回归通过,相邻 4 组前端测试通过)
- [x] ~~修复 AI 工作台“删除草稿”和“我要审核/待办审批”短句意图漏识别。~~(完成于 22:04证据`node --test web/tests/workbench-ai-command-intent-model.test.mjs web/tests/ai-document-query-model.test.mjs` 通过 19/19前端 build 通过)
- [ ] 在真实 5173 AI 工作台分别输入“删除草稿”和“我要审核”确认删除草稿只打开详情确认入口、审核短句直接返回待我审核单据卡片。来源22:04 短句意图修复)
- [x] ~~落地 AI 工作台统一意图识别 Markdown 设计文档,并实现第一版 Intent Frame + Action Policy。~~(完成于 22:31证据`2026-06-24-workbench-intent-frame-design.md` 已新增,`workbench-intent-frame-model.test.mjs` 4/4 与 `ai-document-query-model.test.mjs` 16/16 通过)
- [ ] 在真实 5173 AI 工作台分别输入“删除 3 天前的草稿”和“审核合规没有风险的申请”,确认系统先筛选候选而不是直接执行删除/审核。来源22:31 统一 Intent Frame 接线)
- [x] ~~修复“删除申请单草稿”不显示删除动作思考的问题。~~(完成于 22:36证据`workbench-intent-frame-model.test.mjs` 新增回归通过,相关前端测试 44/44 通过,前端 build 通过)
- [ ] 在真实 5173 AI 工作台输入“删除申请单草稿”,确认首条 thinking 明确显示“删除”高风险策略且结果只展示申请单草稿候选。来源22:36 删除动作 thinking 修复)
- [x] ~~为高风险删除/审核候选结果补充用户可见确认边界说明和实体快捷按钮文案。~~(完成于 22:42证据`workbench-intent-frame-model.test.mjs` 新增结果提示回归通过,相关前端测试 45/45 通过,前端 build 通过)
- [x] ~~修复“删除申请单草稿”高风险提示和候选卡片被 trusted HTML 安全渲染整块丢弃的问题。~~(完成于 22:49证据新增渲染级红灯测试后修复相关前端测试 46/46 通过,前端 build 通过)
- [ ] 在真实 5173 AI 工作台输入“删除申请单草稿”确认结果卡片上方显示高风险说明候选单据按钮显示“进入详情确认删除”。来源22:42 高风险结果提示补强)
- [ ] 单独修复或重写 `workbench-ai-mode-switch.test.mjs` 的旧静态结构断言,使它适配 `WorkbenchAiFileStrip` 和 OCR composable 拆分后的真实代码。来源17:26 额外测试发现)
- [ ] 单独修复或重写 `workbench-ai-mode-expense-scene-action.test.mjs``expense-application-fast-preview.test.mjs` 中继续扫描旧 Vue 单文件的静态断言,改为覆盖 composable/model 的行为测试。来源17:40 上下文提交验证)
- [ ] 在真实 5173 AI 工作台回放“2026-02-20 至 2026-02-23去上海出差辅助国网仿生产服务器部署交通火车”确认唯一申请候选流直接生成申请核对表。来源17:48 无动作话术直进申请预览修复)