Files
X-Financial/document/development/2026-07-17/dev-logs/bugs/employee-import-membership-transaction.md

14 lines
1.7 KiB
Markdown
Raw Normal View History

# 员工导入与成员资格部分提交
日期2026-07-17
文档路径document/development/2026-07-17/dev-logs/bugs/employee-import-membership-transaction.md
## 修复记录
- 14:07记录 bug 修复员工导入与成员资格部分提交。bug-log:242d68c3
- Git 提交检查:已执行 `git fetch --all --prune`、状态、upstream 和双向日志检查;`origin/main` 无新提交,本地 `main` ahead 17。ahead 摘要17 个提交覆盖审批/风险处置、租户安全费用学习、权威预审、票据关联、个人记忆、历史回填、迁移安全、费用事件事务和不透明认证会话;本轮未改写这些提交。
- 根因:`EmployeeImportCoordinator._apply_import_rows()` 在写员工和上级关系后先 commit`EmployeeService.import_employees()` 才补 `TenantMembership` 并第二次 commit成员资格失败时接口报错但员工已永久落库。
- 修改:协调器只 flush 员工、角色、组织、上级和变更日志,不再拥有 commit外层服务仅在成功结果后补齐租户成员资格并对两部分执行一次统一 commit任一异常统一 rollback。
- 操作:新增成员资格同步注入失败测试,导入新员工后故意抛错并验证员工记录不存在;校验失败结果不触发成员资格或无意义提交。
- 验证:容器内员工服务、导入、认证和行为画像 35 项通过;差旅计算器 5 项通过;目标 Ruff、format check、compileall、代码体积门禁和 `git diff --check` 通过。
- 影响:员工批量导入现在满足“全部员工数据与认证成员资格一起成功或一起失败”,不会出现接口失败但部分账号已经创建/修改的状态。