文件
hyb-oa/issues/2026-03-28_17-58-04-r41-user-bulk-import.csv
2026-03-28 18:57:02 +08:00

3.9 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2R41-0R41执行合同建档与范围冻结为员工批量导入创建独立合同并冻结本轮只做员工加账号一体化导入 不承接考勤增强与 mixed-mode 导入CSV 校验通过 且明确导入语义为员工档案 账号 角色一起创建 初始密码为系统生成的一次性口令python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-28_17-58-04-r41-user-bulk-import.csvnoneDONEDONEDONEissues/2026-03-28_17-58-04-r41-user-bulk-import.csv[]合同已建档并校验通过。本轮入口固定在 UserManagementPage,不复用 cutover_console_v1 与 migration-runs。
3R41-1用户批量导入后端 dry-run 与 apply在 users 域内新增批量导入 dry-run apply 两个接口 支持 csv xlsx 校验预览与全量事务写入管理员可上传模板文件执行 dry-run 获得逐行错误与标准化预览 apply 成功时整批创建 employee 与 employee_roles 并返回一次性密码清单 任一行失败整批回滚业务流程: system.users 用户上传员工模板 执行 dry-run 后查看行级错误 再 apply 成功创建账号与员工。验证命令: cd server && node --check src/routes/users.js && npm test -- tests/unit/routes/users.import.test.jsmanualDONEDONEDONEserver/src/routes/users.js|server/tests/unit/routes/users.import.test.js["R41-0"]已新增 /api/users/import/dry-run 与 /api/users/import/apply,支持 csv xlsx 解析 文件内重复校验 部门精确匹配 同批上级引用 与全量事务回滚。已验证: node --check src/routes/users.js 通过;npm test -- tests/unit/routes/users.import.test.js 5/5 通过;npm test -- tests/unit/routes/users.list.test.js 3/3 通过。
4R41-2用户管理页导入入口与密码清单下载在 UserManagementPage 增加批量导入弹窗 支持模板下载 文件上传 dry-run 结果展示 apply 与一次性密码清单下载用户管理页显示批量导入按钮 dry-run 有错误时 apply 不可用 apply 成功后可下载 employeeNo name email oneTimePassword 清单 不影响现有单条新建流程业务流程: 管理员打开用户管理页 下载模板 上传 csv xlsx 执行 dry-run 查看结果 再 apply 并下载密码清单。验证命令: cd client && npm run typecheck && npm run buildmanualDONEDONEDONEclient/src/api/users.ts|client/src/pages/UserManagementPage.tsx|client/src/pages/user-management/UserImportDialog.tsx["R41-0","R41-1"]已新增 UserImportDialog 和 users import API 类型;前端不重写业务校验,只透传后端行号 字段 错误信息。已验证: cd client && npm run typecheck 通过;cd client && npm run build 通过。
5R41-3QA回归与R37-3继续复盘完成批量导入单项验证 状态回填 并把导入域与 cutover 域的边界观察补充到治理复盘R41 各状态正确回填 且 Notes 记录为何不复用 cutover console 为什么员工导入继续沿用 users 域语义业务流程: 验证 dry-run 缺表头 重复值 部门错误 上级错误 apply 全量回滚 apply 成功 下载密码清单 非 system.users 无入口 且单条新建 启停 角色分配不回归。验证命令: cd server && node --check src/routes/users.js && npm test -- tests/unit/routes/users.import.test.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEissues/2026-03-28_17-58-04-r41-user-bulk-import.csv|issues/2026-03-28_12-36-28-r37-agent-modes-governance.csv|server/src/routes/users.js|client/src/pages/UserManagementPage.tsx["R41-1","R41-2"]复盘结论: 员工导入继续留在 system.users 域内比挂到 cutover console 更清晰,因为它是日常运营动作而不是迁移动作;dry-run 再 apply 的双阶段足够顺畅,且能在 apply 阶段重跑校验避免文件变更或库状态漂移;同批上级工号引用可落地,但实现上需要后端显式做两阶段创建和二次回填 direct_manager_id。