Codex
8b952c9a26
refactor(travel): split reimbursement create workflow
完整修改内容:
- 拆分 TravelReimbursementCreateView:提取审核面板纯模型、消息操作、建议动作处理、生命周期 watcher/UI 映射、小财管家运行时、续办流程和运行时文本模型,减少主组件继续堆叠业务分支。
- 调整申请预览链路:新增本地申请意图 gate,完善复杂差旅申请的大模型复核判断、交通方式缺失/候选识别、规则中心交通费用预估合并和申请冲突处理。
- 优化小财管家流程:抽出 steward typewriter 分段策略,避免 Markdown 表格逐字闪烁;补齐跨助手 carry、字段补齐续办、文本确认提交和行程规划推荐动作。
- 调整消息与样式:移除申请预览日期 chip 样式,收敛申请卡片/报销草稿消息的展示与复制、朗读、反馈入口逻辑。
- 更新测试:将源码锚点迁移到新模块,覆盖申请预览、提交确认、小财管家续办、引导流和审核抽屉相关断言。
验证:
- node --check web/src/views/scripts/TravelReimbursementCreateView.js 及新增拆分模块
- npm --prefix web run build
- node --test web/tests/expense-application-fast-preview.test.mjs web/tests/expense-application-submit-rich-confirm.test.mjs web/tests/travel-reimbursement-guided-flow.test.mjs
说明:
- 后端/规则/容器配置/Audit 页面等工作区已有改动未纳入本提交。
- 容器内后端定向 pytest 曾运行 timeout 180s /tmp/x-financial-server-venv/bin/pytest -q <相关后端测试>,180 秒超时且超时前已有失败标记,未作为通过项记录。
- TravelReimbursementCreateView 当前仍超过 800 行,后续仍需继续拆分;本提交先把新增职责模块控制在 800 行内,阻止主类/主模块继续膨胀。
2026-06-13 14:53:23 +00:00
..
2026-05-28 22:49:58 +08:00
2026-05-29 14:11:06 +08:00
2026-06-01 17:07:14 +08:00
2026-05-29 10:13:49 +08:00
2026-06-01 17:07:14 +08:00
2026-06-03 09:25:23 +08:00
2026-05-29 10:13:49 +08:00
2026-05-29 09:44:03 +08:00
2026-05-29 10:13:49 +08:00
2026-06-01 17:07:14 +08:00
2026-05-29 13:17:39 +08:00
2026-06-01 17:07:14 +08:00
2026-06-01 17:07:14 +08:00
2026-06-01 17:07:14 +08:00
2026-05-29 10:13:49 +08:00
2026-05-29 09:44:03 +08:00
2026-05-07 11:50:10 +08:00
2026-06-06 17:19:07 +08:00
2026-06-01 17:07:14 +08:00
2026-06-06 17:19:07 +08:00
2026-06-01 17:07:14 +08:00
2026-05-28 09:30:34 +08:00
2026-06-01 17:07:14 +08:00
2026-06-03 09:25:23 +08:00
2026-05-28 12:09:49 +08:00
2026-06-06 17:19:07 +08:00
2026-05-28 12:09:49 +08:00
2026-05-22 16:00:19 +08:00
2026-05-09 07:29:49 +00:00
2026-05-09 07:29:49 +00:00
2026-05-27 09:17:57 +08:00
2026-05-27 09:17:57 +08:00
2026-06-03 09:25:23 +08:00
2026-05-27 09:17:57 +08:00
2026-05-18 02:51:25 +00:00
2026-06-01 17:07:14 +08:00
2026-06-02 16:22:59 +08:00
2026-05-09 05:59:46 +00:00
2026-06-03 09:25:23 +08:00
2026-06-03 15:46:56 +08:00
2026-05-30 15:46:51 +08:00
2026-06-06 17:19:07 +08:00
2026-05-28 22:49:58 +08:00
2026-06-01 17:07:14 +08:00
2026-05-18 09:42:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-03 16:28:09 +08:00
2026-05-22 23:47:28 +08:00
2026-06-04 11:03:29 +08:00
2026-06-13 14:53:23 +00:00
2026-05-28 12:09:49 +08:00
2026-06-03 15:46:56 +08:00
2026-05-26 12:16:20 +08:00
2026-05-22 16:00:19 +08:00
2026-06-03 15:46:56 +08:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-02 14:01:51 +08:00
2026-06-09 08:32:00 +00:00
2026-06-03 17:31:40 +08:00
2026-05-28 12:09:49 +08:00
2026-06-04 11:03:29 +08:00
2026-06-03 17:31:40 +08:00
2026-06-09 08:32:00 +00:00
2026-06-13 14:53:23 +00:00
2026-06-01 17:07:14 +08:00
2026-06-01 17:07:14 +08:00
2026-06-01 17:07:14 +08:00
2026-05-29 09:44:03 +08:00
2026-06-01 17:07:14 +08:00
2026-06-01 17:07:14 +08:00
2026-05-29 09:44:03 +08:00
2026-05-29 09:44:03 +08:00
2026-06-13 14:53:23 +00:00
2026-05-30 15:46:51 +08:00
2026-05-30 15:46:51 +08:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-03 15:46:56 +08:00
2026-06-13 14:53:23 +00:00
2026-05-21 23:53:03 +08:00
2026-05-22 23:47:28 +08:00
2026-06-04 11:03:29 +08:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00
2026-06-13 14:53:23 +00:00