chore: 更新公司通信费规则表与 AI 意图规划/work-log 文档

This commit is contained in:
caoxiaozhu
2026-06-25 10:56:00 +08:00
parent 59353308a2
commit d321005044
78 changed files with 51 additions and 15182 deletions

View File

@@ -445,8 +445,39 @@
- 验证:`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。
- 影响:用户输入“删除申请单草稿”后,结果标题下方会恢复高风险说明、候选单据卡片和“进入详情确认删除”快捷按钮;系统仍不会直接删除单据,而是要求进入详情核对后再操作。
- 23:02我补上了 AI 历史会话里旧详情入口的点击前校验,避免单据已删除后重新进入会话再点“进入详情确认删除/查看详情”跳到坏详情页。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;当前工作区还有一个非本轮修改的规则 Excel 文件变更,本轮只修改 AI 工作台点击防护。
- 根因:历史会话里保存的是静态详情链接,用户删除单据后再重进会话点击,原逻辑会直接 `emit('open-document')` 跳详情页,没有先确认单据是否仍存在;如果后端返回 404就会在详情页暴露异常状态。
- 修改:`usePersonalWorkbenchAiMode.js` 将详情链接点击处理改为异步校验;对带 `claim_id` 的 AI 历史详情入口先调用 `fetchExpenseClaimDetail()`,当返回 not found / 不存在 / 已删除 / 不可访问 / 无权时,不再跳转详情。
- 修改:失效时调用既有 `markAiWorkbenchConversationDocumentDeleted()` 把当前会话里的 `#ai-open-document-detail` 写回 `#ai-deleted-document-detail`,刷新历史列表,并 toast 提示“该单据已经删除或不可访问,已将这条历史入口标记为不可查看。”
- 验证:`node --test --test-name-pattern "deleted document|validates document detail" web/tests/ai-conversation-html-renderer.test.mjs web/tests/assistant-session-draft-delete.test.mjs` 通过 3/3相关主链路 `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 -- ...` 无输出5173 工作台路由返回 200。
- 影响:用户重新进入历史会话后,如果之前的候选单据已被删除,再点旧快捷入口会在会话内变成“单据已删除/不可查看”,不会进入坏详情页;后端临时网络错误则不会错误失效化链接,会继续按原流程跳转。
- 23:10我修复了 AI 工作台“直接提交”自然语言意图被自动提交的问题,让它先进入申请核对表,用户再次确认后才提交。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;工作区仍有一个非本轮修改的通讯费规则 Excel 变更,本轮没有触碰该文件。
- 根因:`resolveExecutableTravelApplicationPlan()` 原来把包含 `submit_application` step 的计划直接映射为 `autoSubmit: true``startAiApplicationPreview()` 又在核对表 ready 时用 `confirmed: true` 调用提交动作,等于把“用户说直接提交”误当成“已核对并确认提交”。
- 修改:`workbenchAiApplicationGateModel.js` 保留 `requestedSubmit` 语义,但不再给紧凑差旅申请返回 `autoSubmit: true``workbenchAiIntentPlannerModel.js` 仍识别 `requestedAction=submit` 和提交步骤,但 executable payload 固定 `autoSubmit: false`,并输出 `requestedSubmit` / `submitRequiresConfirmation`
- 修改:`usePersonalWorkbenchAiMode.js` 将确认标志传入申请预览流;`useWorkbenchAiApplicationPreviewFlow.js` 删除预览生成后的自动 `confirmed: true` 提交分支,改为在核对表 footer 提醒“系统不会自动提交申请,请先核对申请核对表”;`workbenchAiMessageModel.js` 持久化这两个确认标志,避免刷新或重进会话后提示丢失。
- 修改:同步更新 `AI意图规划器` 相关文档,把“直接提交自动走完整链路”改成“先展示核对表,用户确认后进入提交链路”。
- 验证:先用改过的测试跑出红灯;修复后 `node --test --test-name-pattern "direct-submit|direct submit|requires confirmation|confirmation metadata|intent planner|application gate" ...` 通过 14/14相关主链路 `node --test web/tests/workbench-ai-application-gate-model.test.mjs web/tests/workbench-ai-intent-planner-model.test.mjs 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` 通过 51/51`node --test --test-name-pattern "direct-submit|direct submit|direct-submit command" web/tests/expense-application-fast-preview.test.mjs` 通过 2/2`npm --prefix web run build` 通过;`git diff --check` 无输出;`curl -I --max-time 5 http://127.0.0.1:5173/app/workbench` 返回 200。
- 影响用户输入“2026-02-20 至 2026-02-23去上海出差辅助国网仿生产服务器部署交通火车直接提交”时系统仍能识别提交目标但只会生成申请核对表/确认入口,不会直接提交给领导审批。
- 23:22我把统一意图框架里的规则职责进一步收口为“安全策略字段”避免规则继续承担复杂语义识别。
- Git 提交检查:`git fetch --all --prune` 成功;当前 upstream 为 `origin/main``HEAD..@{u}``@{u}..HEAD` 均未输出新提交;工作区仍有一个非本轮修改的通讯费规则 Excel 变更,本轮没有触碰该文件。
- 修改:`workbenchIntentFrameModel.js` 新增 `riskLevel``requiresCandidateSearch``requiresSelection``requiresConfirmation``executionMode``policyDecision`,让删除、审核、驳回等高风险动作稳定落到候选筛选或确认,而不是从规则里直接推执行。
- 修改:`workbenchIntentActionPolicy.js` 改为优先消费 `policyDecision`,并把 `riskLevel``requiresSelection``requiresConfirmation` 透传到 route方便后续 UI 和 action executor 统一读取。
- 修改:调整 `resolveAction()` 顺序,让“查 3 天前的申请单”先命中查询动词,不再被裸 `申请` 误判为创建申请;这也是本轮红灯测试暴露出的规则误伤点。
- 文档:`AI意图规划器/CONCEPT.md` 新增“规则兜底边界”,明确规则只输出安全策略,不拥有副作用授权;同时把第一阶段落地里的自动提交旧描述改为等待核对和二次确认。
- 测试:先给 `workbench-intent-frame-model.test.mjs` 增加红灯断言,覆盖上下文删除、筛选删除、无风险审核、政策咨询和只读查询的策略字段;修复后该文件通过 8/8。
- 验证:`node --test web/tests/workbench-intent-frame-model.test.mjs web/tests/ai-document-query-model.test.mjs web/tests/workbench-ai-command-intent-model.test.mjs web/tests/workbench-ai-action-router.test.mjs web/tests/workbench-ai-application-gate-model.test.mjs web/tests/workbench-ai-intent-planner-model.test.mjs` 通过 52/52`npm --prefix web run build` 通过;`git diff --check` 无输出;`curl -I --max-time 5 http://127.0.0.1:5173/app/workbench` 返回 200。
- 影响:后续规则层更像 guardrail而不是继续堆关键词猜测模型可以负责语义理解规则负责高风险动作、候选筛选、选择和确认这些稳定边界。
## 遗留问题
- 23:22本轮只是把现有前端 IntentFrame 的策略字段收口,尚未把后端 LLM 返回的结构化 intent frame 与该策略字段完全统一。建议下一步让 `/steward/plans` 或 runtime decision 输出同名字段,再由前端只做展示和兜底。
- 23:10本轮尚未在真实 5173 页面输入完整“直接提交”句子做点击级回放;当前证据来自模型/静态/构建和路由烟测。建议后续真页确认只出现申请核对表和二次确认入口,没有直接生成提交结果。
- 23:10`expense-application-fast-preview.test.mjs` 整文件仍有 13 个既有旧静态断言失败,失败点包括旧 assistantName 断言、旧申请 session 静态结构、表格样式和已拆分 composable 的旧代码片段匹配;本轮只验证了 direct-submit 相关子集通过。建议后续单独清理该测试文件,避免继续掩盖真实回归。
- 23:02本轮用单元/静态回归覆盖了旧详情入口失效逻辑,但还没有在真实 5173 页面完成“删除单据 -> 重新进入历史会话 -> 点击旧入口”的点击级回放。建议后续用真实草稿跑一次闭环,确认 toast、禁用按钮和历史会话刷新都符合预期。
- 22:49本轮用渲染级回归测试确认 trusted HTML 已恢复,但还没有做真实浏览器点击级回放和截图复核。建议后续在 5173 输入“删除申请单草稿”,确认真实主题下提示块、候选卡片和按钮没有拥挤或错位。
- 22:42本轮仍未做真实浏览器点击级回放确认高风险提示在 AI 工作台卡片里的视觉效果。建议后续在 5173 输入“删除申请单草稿”,截图确认提示块、候选卡片和“进入详情确认删除”按钮在当前主题下没有拥挤或错位。
- 22:36本轮仍未做浏览器点击级回放确认“删除申请单草稿”的实际 thinking 卡片视觉状态。建议后续在真实 5173 工作台输入该句,确认首条 thinking 为删除高风险策略、后续才是查询和筛选候选。
@@ -550,7 +581,13 @@
- [ ] 在真实 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 通过)
- [x] ~~修复 AI 历史会话旧详情入口在单据已删除后仍可跳转坏详情页的问题。~~(完成于 23:02证据deleted document / validates document detail 定向测试 3/3 通过,相关主链路测试 46/46 通过,前端 build 通过)
- [x] ~~修复“直接提交”自然语言意图绕过申请核对表并自动提交的问题。~~(完成于 23:10证据direct-submit 定向测试 14/14、相关主链路测试 51/51、fast-preview direct-submit 子集 2/2、前端 build 与 `git diff --check` 均通过)
- [x] ~~把前端统一意图框架里的规则职责收口为稳定安全策略字段。~~(完成于 23:22证据`workbench-intent-frame-model.test.mjs` 红灯后转绿,相关前端测试 52/52 通过,前端 build 与 `git diff --check` 均通过)
- [ ] 在真实 5173 AI 工作台输入“删除申请单草稿”确认结果卡片上方显示高风险说明候选单据按钮显示“进入详情确认删除”。来源22:42 高风险结果提示补强)
- [ ] 在真实 5173 跑“删除单据 -> 重新进入历史会话 -> 点击旧详情入口”确认旧入口禁用、toast 提示和历史会话刷新符合预期。来源23:02 旧详情入口点击前校验)
- [ ] 在真实 5173 AI 工作台输入“2026-02-20 至 2026-02-23去上海出差辅助国网仿生产服务器部署交通火车直接提交”确认系统只生成申请核对表和二次确认入口不直接提交审批。来源23:10 直接提交确认边界修复)
- [ ] 将后端模型计划 / runtime decision 的结构化输出与前端 IntentFrame 策略字段对齐,统一 `riskLevel``requiresCandidateSearch``requiresSelection``requiresConfirmation``executionMode``policyDecision` 命名。来源23:22 规则职责收口)
- [ ] 单独修复或重写 `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 无动作话术直进申请预览修复)

View File

@@ -18,11 +18,25 @@
- 验证:两个 `SKILL.md` frontmatter 分别校验通过,路径规则检索命中,两个技能副本的模板和 UI 元数据 diff 一致,`git diff --check -- .codex/skills/write-development-docs hermes/skills/domain/write-development-docs` 通过。
- 影响:后续新功能落文档会先按日期建目录,再进入 `feature`,最后按具体功能点独立建目录,便于按天回溯和按功能点拆分。
- 21:30我针对 AI 工作台意图门控做了三处加固,守住高风险动作的确认底线、补齐缺失的兜底与预筛逻辑。
- Git 提交检查:`git fetch --all --prune` 后 origin/main 落后本地 0、领先本地 0本地 ahead 3 个提交(`6b0756a5`/`4d8a606c`/`23f7de6c`),均与本任务无关;工作区有大量未提交改动,本次只动 `web/src/composables/workbenchAiMode` 与对应测试。
- 背景:先通读门控全链路(`workbenchAiApplicationGateModel` / `workbenchIntentFrameModel` / `workbenchIntentActionPolicy` / `workbenchAiIntentPlannerModel` / `useWorkbenchAiCommandIntents` / `useWorkbenchAiActionRouter` / `usePersonalWorkbenchAiMode`),确认高风险动作(删除/审核/驳回)一律 `requiresConfirmation` 且执行出口无 `execute_allowed`、政策类问题被挡在执行链路外、直接提交需二次确认——安全底线稳。
- 修改①(低置信度反问):`workbenchAiIntentPlannerModel.js` 新增 `WORKBENCH_AI_INTENT_CONFIDENCE_THRESHOLD=0.6``isLowConfidenceTravelApplicationPlan`规则兜底rule_fallback与显式 submit/save_draft 不计为低置信。`usePersonalWorkbenchAiMode.js` 在可执行 travel 计划前插入低置信分支,新增 `startModelPlannedTravelApplicationConfirmation``buildLowConfidenceTravelApplicationConfirmationText`,反问消息携带 `ai_application_confirm_intent` 动作。`useWorkbenchAiActionRouter.js` 新增 `ai_application_confirm_intent` 分支,还原 ontologyFields/提交标记后调用 `startAiApplicationPreview`
- 修改②(闲聊预筛):`shouldRequestWorkbenchAiIntentPlan` 增加业务关键词正则,「你好/谢谢/嗯/ok」等闲聊不再发起 35s 的模型规划请求,直接落到通用 steward 回复。
- 修改③(报销兜底核查):复查确认 `executeModelPlannedWorkbenchIntent` 的 catch 分支不 return 时,`isReimbursementCreationIntent(cleanPrompt)` 在后续 823 行仍会被求值,报销兜底天然可达,无需新增重复分支,本次未改动。
- 验证:`workbench-ai-intent-planner-model.test.mjs`20/20含新增 3 个用例)、`workbench-ai-application-gate-model.test.mjs`5/5`workbench-intent-frame-model.test.mjs`8/8全绿`expense-application-fast-preview.test.mjs` 既有 12 个失败(「小财管家」文案/表格渲染问题,与本次无关),本次改动额外使 `not ok 2 - AI workbench routes compact travel direct-submit planner` 由失败转通过,无新增失败。
- 影响:模型给出低置信度差旅申请意图时不再直接建预览,先反问确认;闲聊类输入不再误触发模型规划,响应更快、减轻后端压力。
- 局限:`agent-change-log` Skill 在当前环境不可调用,已按 AGENTS.md 规范手动增量更新本日志。
## 遗留问题
- 09:18官方 `quick_validate.py` 仍因当前 Python 环境缺少 `PyYAML` 无法运行,已用 frontmatter、必需文件、占位符和 diff check 做人工兜底。建议后续统一为 skill 校验脚本补齐依赖或增加无 PyYAML 的轻量校验路径。
- 09:23当前环境没有找到 Skill Creator 的 `quick_validate.py` 脚本文件本体,因此本次继续采用人工兜底校验。建议后续恢复系统 Skill Creator 脚本路径,或把轻量校验脚本纳入仓库级工具。
- 21:30`expense-application-fast-preview.test.mjs` 仍有 12 个既有失败(文案「小财管家」「此意图系统不支持」与 markdown 表格整块渲染相关),与本次意图门控改动无关,建议单独排查。
- 21:30本次未纳入范围的三项已记录时间过滤维度扩展仅支持 N天前/昨天/今天)、排除词两处重复维护、`handleInlineDraftDeletionIntent` 命名与职责不符,建议后续分批处理。
## TODO
- [ ]`quick_validate.py` 准备稳定运行环境,避免后续新增 Skill 时继续依赖人工兜底。来源09:18 技能校验)
- [ ] 排查 `expense-application-fast-preview.test.mjs` 的 12 个既有失败(小财管家文案 / 表格整块渲染来源21:30 意图门控加固)
- [ ] 评估意图门控剩余三项:时间过滤维度扩展、排除词常量抽取、`handleInlineDraftDeletionIntent` 重命名。来源21:30 意图门控加固)