chenpei
7b0ee5efb4
feat: 人员架构统一到钉钉唯一值,接入上游组织架构动态同步
素材库与考核调研此前各有一套人事数据,彼此没有外键,靠姓名、邮箱在运行时
逐层软匹配。本次把身份判定收敛到钉钉唯一值,并让组织架构与人员状态跟随
上游 HR 系统自动更新。
人员身份
- 新增账号与权威人员档案的正式绑定表,活跃绑定双向唯一
- users.dingtalkUserId 补上唯一约束,数据库层面杜绝一人多号
- 移除钉钉登录的同名自动合并,同名冲突一律转人工核对
- 看板删除特判由比对用户名改为比对钉钉唯一值,避免同名越权
组织架构
- 新增 OrganizationUnit,直接镜像上游 HR 部门树
- 不再从员工部门路径倒推,同名部门不会再被合并
- 上游已删除的部门下线而非物理删除
人员状态
- 新增规范化的 employmentState,取代对混杂原始值做关键词匹配
- 接入上游离职表,离职判定不再依赖中文关键词
- 离职联动:归档账号并把素材托管给所在部门,默认只处理离职满 30 天者
素材归属
- 归属变更纳入正式转移,记录最初上传者、转移流水与理由
- 新增素材托管部门,归属与署名分离:托管只改维护责任,不动署名
- 编辑素材的权限判定统一到 canManageMaterial
- 修复任务-详情上传把邮箱误存为作者名的问题
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 09:53:48 +08:00
..
2026-08-14 09:53:48 +08:00
2026-03-06 14:14:50 +08:00
2026-08-03 15:42:02 +08:00
2025-12-27 18:54:46 +08:00
2026-07-07 13:31:01 +08:00
2026-07-10 10:57:16 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-05-27 18:16:30 +08:00
2026-08-12 18:04:08 +08:00
2026-03-06 14:14:50 +08:00
2026-08-01 16:17:42 +08:00
2026-01-05 17:52:42 +08:00
2026-07-29 11:57:35 +08:00
2026-07-15 17:44:08 +08:00
2026-07-06 14:54:16 +08:00
2026-07-17 18:55:37 +08:00
2026-08-14 09:53:48 +08:00
2026-07-17 18:55:37 +08:00
2026-07-07 17:37:47 +08:00
2026-07-10 10:57:16 +08:00
2026-07-17 20:16:05 +08:00
2026-07-17 18:55:37 +08:00
2026-08-13 10:55:22 +08:00
2026-05-25 10:39:26 +08:00
2026-03-14 10:36:21 +08:00
2026-08-14 09:53:48 +08:00
2026-08-01 18:34:51 +08:00
2026-01-12 22:37:31 +08:00
2026-05-07 16:37:22 +08:00
2026-07-10 10:57:16 +08:00
2026-04-22 15:47:58 +08:00
2026-07-24 14:47:27 +08:00
2026-06-15 15:12:32 +08:00
2026-07-31 10:26:18 +08:00
2026-02-03 11:12:50 +08:00
2026-05-11 10:01:08 +08:00
2026-05-11 10:01:08 +08:00
2026-07-04 14:31:24 +08:00
2026-01-28 15:07:50 +08:00
2026-08-12 18:04:08 +08:00
2026-08-01 16:17:42 +08:00
2026-08-14 09:53:48 +08:00
2026-08-12 18:04:08 +08:00
2026-05-07 16:37:22 +08:00
2026-03-06 14:14:50 +08:00
2026-03-06 14:14:50 +08:00
2026-08-02 01:04:11 +08:00
2026-08-12 18:04:08 +08:00
2026-08-14 09:53:48 +08:00
2026-05-07 16:37:22 +08:00
2026-07-29 11:57:35 +08:00
2026-08-14 09:53:48 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-05-07 16:37:22 +08:00
2026-01-27 09:33:09 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-07-04 14:31:24 +08:00
2026-08-12 18:04:08 +08:00
2026-01-28 15:07:50 +08:00
2026-08-03 15:42:02 +08:00
2026-08-14 09:53:48 +08:00
2026-07-31 10:26:18 +08:00
2026-08-12 18:04:08 +08:00
2026-01-12 22:37:31 +08:00
2026-08-06 14:28:26 +08:00
2026-08-03 09:53:20 +08:00
2026-08-02 01:04:11 +08:00
2026-07-13 17:59:13 +08:00
2026-07-31 10:40:00 +08:00
2026-08-01 16:17:42 +08:00
2026-08-03 09:53:20 +08:00
2026-07-23 09:25:50 +08:00
2026-07-31 09:40:55 +08:00
2026-07-28 17:29:47 +08:00
2026-08-14 09:53:48 +08:00
2026-07-20 13:01:10 +08:00
2026-07-13 20:21:16 +08:00
2026-08-14 09:53:48 +08:00
2026-07-10 15:13:36 +08:00
2026-07-23 09:25:50 +08:00
2026-01-28 15:07:50 +08:00
2026-08-13 13:15:46 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-07-31 10:40:00 +08:00
2026-07-10 20:17:34 +08:00
2026-08-12 18:04:08 +08:00
2026-07-28 17:29:47 +08:00
2026-05-11 10:01:08 +08:00
2026-08-12 18:04:08 +08:00
2026-01-28 15:07:50 +08:00
2026-07-06 13:22:04 +08:00
2026-07-31 10:40:00 +08:00
2026-05-11 10:01:08 +08:00
2026-05-07 16:37:22 +08:00
2026-08-12 18:04:08 +08:00
2026-07-31 10:40:00 +08:00
2026-03-25 10:28:02 +08:00
2026-05-07 16:37:22 +08:00
2026-03-25 10:28:02 +08:00
2026-08-03 09:53:20 +08:00
2026-05-07 16:37:22 +08:00
2026-08-12 18:04:08 +08:00
2026-08-01 16:17:42 +08:00
2026-08-12 18:04:08 +08:00
2026-08-02 01:04:11 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-01-28 15:07:50 +08:00
2026-07-13 17:42:27 +08:00
2026-05-11 10:01:08 +08:00
2026-07-29 13:46:37 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-05-29 19:01:59 +08:00
2026-08-12 18:04:08 +08:00
2026-05-29 19:01:59 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-03-25 10:28:02 +08:00
2026-07-31 10:40:00 +08:00
2026-08-05 16:49:54 +08:00
2026-08-13 12:23:23 +08:00
2026-08-05 16:49:54 +08:00
2026-08-13 12:23:23 +08:00
2026-08-13 12:23:23 +08:00
2026-07-15 17:44:08 +08:00