yueyang
9f67e2a308
feat: 增加系统化待办操作记录并修正 Excel 同步匹配 (#690)
## 任务占用与边界
- 任务名称:系统化待办操作记录与 Excel 同步修正
- 实际开发者:Codex
- 任务来源:负责人要求对照新版工作簿同步待办,并提供类似科目映射表的操作记录
- 目标结果:新增、修改、删除、Excel 导入均可追溯;修正工作簿编号前缀导致的重复匹配风险
- 预计修改路径:系统化待办导入器、页面、控制器、路由、操作记录表迁移及专项测试
- 将写入的公共契约:新增 business_systemization_todo_audit_logs、操作记录查询及 CSV 导出路由
- 仅复用、不修改的公共契约:现有待办表、附件表、分页和筛选结构
- 数据源、表/视图和字段:新版 10.19 工作梳理 Excel;待办表现有字段
- 上游 source_key / scope:不涉及上游
- 权限名、菜单键或共享组件:复用现有 business.page:other,systemization-todos
- 明确不修改的范围:不删除工作簿外事项,不覆盖完成截图
## 实际改动
- 新增操作记录:类型、内容、待办事项、负责人、责任人、日期、状态、完成情况、备注、排序、截图数量
- 支持按操作类型和关键词筛选,支持导出 CSV,保留最近 500 条
- 手工新增、编辑、删除、类型/内容批量修改、Excel 导入均写入操作记录
- Excel 同步会去除类型、内容和待办事项前的文字序号,并按无编号分组匹配,避免重复新增
- 保留工作簿外事项和已有截图
## 验证证据
- 待办专项测试:16 tests,299 assertions
- 覆盖:手工新增/修改/删除、操作记录查询、CSV 导出、Excel 新增/修改/保留截图、编号前缀匹配、干跑不落日志
- 页面 Blade 在测试中正常渲染
- 本次发布后将在线上实际导入新版工作簿并核验操作记录
## 风险检查
- [x] 涉及数据库迁移:仅新增 systemization todo audit logs 表,不影响既有业务表
- [x] 迁移已由任务内核对并随正式发布执行
- [x] 未提交 .env、密码、Token、私钥、真实财务数据、生产日志或构建产物
- [x] 前端改动符合 DESIGN.md,复用 VIP 黑金设计令牌
## 合并前复查
- [x] 已基于最新 main 开发
- [x] 已运行目标专项测试并通过
- [x] 已逐文件核对实际 diff
- [x] 允许任务 Codex 完成 Squash merge、验证 main、清理分支并部署
Reviewed-on: #690
2026-10-27 15:45:11 +08:00
..
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-24 12:18:01 +08:00
2026-08-04 14:47:27 +08:00
2026-07-22 15:19:30 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 19:20:55 +08:00
2026-08-04 14:23:06 +08:00
2026-07-22 15:16:57 +08:00
2026-07-23 13:31:39 +08:00
2026-07-24 12:18:01 +08:00
2026-07-24 13:40:03 +08:00
2026-07-24 18:20:33 +08:00
2026-08-15 16:48:12 +08:00
2026-08-14 15:21:49 +08:00
2026-08-15 16:48:12 +08:00
2026-08-14 16:38:33 +08:00
2026-09-22 18:50:23 +08:00
2026-08-25 15:34:39 +08:00
2026-08-29 11:29:04 +08:00
2026-08-29 09:34:07 +08:00
2026-08-29 11:29:04 +08:00
2026-08-29 11:29:04 +08:00
2026-08-31 16:37:38 +08:00
2026-08-31 18:49:00 +08:00
2026-09-01 09:15:17 +08:00
2026-09-01 11:34:37 +08:00
2026-09-01 12:59:03 +08:00
2026-09-02 16:53:42 +08:00
2026-09-02 18:22:17 +08:00
2026-09-02 18:22:17 +08:00
2026-09-03 15:42:46 +08:00
2026-09-04 23:38:56 +08:00
2026-09-07 09:41:59 +08:00
2026-09-07 14:41:37 +08:00
2026-09-07 11:55:37 +08:00
2026-09-09 10:46:17 +08:00
2026-09-09 10:46:17 +08:00
2026-09-09 10:46:17 +08:00
2026-09-08 07:02:25 +08:00
2026-09-08 14:30:48 +08:00
2026-09-09 13:56:38 +08:00
2026-09-09 14:04:43 +08:00
2026-09-09 14:38:43 +08:00
2026-09-09 15:26:41 +08:00
2026-09-09 15:38:44 +08:00
2026-09-09 16:54:08 +08:00
2026-09-09 17:53:36 +08:00
2026-09-14 14:28:20 +08:00
2026-09-11 11:23:21 +08:00
2026-09-11 12:25:36 +08:00
2026-09-20 15:44:01 +08:00
2026-09-14 11:38:56 +08:00
2026-09-12 20:29:43 +08:00
2026-09-12 19:39:21 +08:00
2026-09-12 20:29:43 +08:00
2026-09-15 09:32:44 +08:00
2026-09-14 11:02:29 +08:00
2026-09-15 09:21:09 +08:00
2026-09-14 13:55:28 +08:00
2026-09-16 18:20:25 +08:00
2026-09-22 14:49:09 +08:00
2026-09-18 14:27:39 +08:00
2026-09-18 15:07:43 +08:00
2026-09-20 15:44:01 +08:00
2026-09-20 15:44:01 +08:00
2026-09-20 22:19:11 +08:00
2026-09-21 10:42:13 +08:00
2026-09-21 01:08:46 +08:00
2026-09-21 18:20:15 +08:00
2026-09-22 14:55:44 +08:00
2026-09-23 11:09:24 +08:00
2026-09-22 19:07:11 +08:00
2026-09-22 18:50:23 +08:00
2026-09-24 10:29:59 +08:00
2026-09-26 22:45:37 +08:00
2026-09-28 16:33:38 +08:00
2026-09-27 17:25:04 +08:00
2026-09-29 15:21:47 +08:00
2026-09-29 15:33:20 +08:00
2026-09-30 16:36:24 +08:00
2026-09-30 09:50:50 +08:00
2026-09-30 09:55:51 +08:00
2026-09-30 16:40:16 +08:00
2026-10-06 18:42:12 +08:00
2026-10-06 18:42:12 +08:00
2026-10-06 22:08:08 +08:00
2026-10-06 13:42:30 +08:00
2026-10-06 13:42:30 +08:00
2026-10-06 14:43:49 +08:00
2026-10-06 19:02:22 +08:00
2026-10-07 10:41:00 +08:00
2026-10-07 11:20:03 +08:00
2026-10-07 11:20:03 +08:00
2026-10-07 17:08:46 +08:00
2026-10-07 14:08:20 +08:00
2026-10-08 11:26:46 +08:00
2026-10-08 13:30:55 +08:00
2026-10-08 13:30:55 +08:00
2026-10-08 15:37:11 +08:00
2026-10-12 09:33:24 +08:00
2026-10-09 17:36:14 +08:00
2026-10-10 13:41:03 +08:00
2026-10-10 16:06:02 +08:00
2026-10-14 13:47:00 +08:00
2026-10-12 11:56:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-13 11:31:50 +08:00
2026-10-13 11:32:27 +08:00
2026-10-13 19:54:01 +08:00
2026-10-14 13:47:00 +08:00
2026-10-13 19:54:01 +08:00
2026-10-13 19:54:01 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 18:31:25 +08:00
2026-10-16 14:56:44 +08:00
2026-10-16 17:34:06 +08:00
2026-10-16 17:58:35 +08:00
2026-10-16 17:19:37 +08:00
2026-10-16 22:27:46 +08:00
2026-10-16 22:27:46 +08:00
2026-10-17 00:19:09 +08:00
2026-10-17 20:58:04 +08:00
2026-10-20 19:08:47 +08:00
2026-10-18 22:27:16 +08:00
2026-10-19 10:38:36 +08:00
2026-10-19 14:24:42 +08:00
2026-10-19 14:22:43 +08:00
2026-10-19 16:06:55 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 18:14:37 +08:00
2026-10-20 10:00:53 +08:00
2026-10-20 10:00:55 +08:00
2026-10-20 10:20:55 +08:00
2026-10-20 10:36:24 +08:00
2026-10-20 11:03:06 +08:00
2026-10-21 11:00:56 +08:00
2026-10-21 11:00:56 +08:00
2026-10-20 19:08:47 +08:00
2026-10-21 13:03:24 +08:00
2026-10-21 11:59:04 +08:00
2026-10-21 16:11:55 +08:00
2026-10-21 16:24:15 +08:00
2026-10-21 16:11:55 +08:00
2026-10-21 17:59:29 +08:00
2026-10-22 10:54:21 +08:00
2026-10-22 10:55:40 +08:00
2026-10-23 17:31:58 +08:00
2026-10-23 21:42:36 +08:00
2026-10-24 16:27:19 +08:00
2026-10-24 17:27:29 +08:00
2026-10-24 20:37:29 +08:00
2026-10-25 02:34:23 +08:00
2026-10-25 16:23:08 +08:00
2026-10-25 17:06:19 +08:00
2026-10-26 12:01:25 +08:00
2026-10-26 11:09:22 +08:00
2026-10-26 11:30:01 +08:00
2026-10-26 16:31:03 +08:00
2026-10-26 20:35:56 +08:00
2026-10-26 20:35:56 +08:00
2026-10-26 20:46:13 +08:00
2026-10-27 11:17:24 +08:00
2026-10-27 14:01:23 +08:00
2026-10-27 15:45:11 +08:00