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-03 15:42:02 +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-03-06 14:14:50 +08:00
2026-08-01 16:17:42 +08:00
2026-05-14 14:58:12 +08:00
2026-07-29 11:57:35 +08:00
2026-07-15 21:06:14 +08:00
2026-07-10 10:57:16 +08:00
2026-01-28 15:07:50 +08:00
2026-07-17 18:55:37 +08:00
2026-05-07 16:37:22 +08:00
2026-05-07 16:37:22 +08:00
2026-07-07 09:31:46 +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-07-10 10:57:16 +08:00
2026-04-22 15:47:58 +08:00
2026-08-03 16:55:08 +08:00
2026-03-25 10:28:02 +08:00
2026-07-24 14:47:27 +08:00
2026-03-25 20:39:56 +08:00
2026-01-28 15:07:50 +08:00
2026-07-31 10:26:18 +08:00
2026-08-03 15:42:02 +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-01-28 15:07:50 +08:00
2026-01-28 15:07:50 +08:00
2026-07-30 14:39:30 +08:00
2026-08-12 18:04:08 +08:00
2026-07-31 10:26:18 +08:00
2026-07-31 10:26:18 +08:00
2026-08-12 18:04:08 +08:00
2026-03-06 14:14:50 +08:00
2026-03-14 10:36:21 +08:00
2026-05-07 16:37:22 +08:00
2026-07-30 14:39:30 +08:00
2026-08-12 18:04:08 +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-05-07 16:37:22 +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-08-12 18:04:08 +08:00
2026-07-10 20:17:34 +08:00
2026-08-01 16:17:42 +08:00
2026-08-12 18:04:08 +08:00
2026-08-13 09:21:02 +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-08-03 15:42:02 +08:00
2026-07-31 10:26:18 +08:00
2026-08-12 18:04:08 +08:00
2026-01-28 15:07:50 +08:00
2026-08-06 14:28:26 +08:00
2026-07-28 17:20:38 +08:00
2026-08-02 01:04:11 +08:00
2026-08-02 01:04:11 +08:00
2026-07-13 17:59:13 +08:00
2026-07-13 17:59:13 +08:00
2026-08-01 16:17:42 +08:00
2026-07-23 09:25:50 +08:00
2026-07-10 17:15:54 +08:00
2026-08-14 09:53:48 +08:00
2026-07-29 16:59:01 +08:00
2026-07-17 10:46:14 +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-27 10:28:18 +08:00
2026-07-10 15:13:36 +08:00
2026-07-20 10:54:46 +08:00
2026-07-20 10:54:46 +08:00
2026-08-12 18:04:08 +08:00
2026-03-25 10:28:02 +08:00
2026-05-07 16:37:22 +08:00
2026-04-22 15:47:58 +08:00
2026-08-13 13:15:46 +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-14 09:53:48 +08:00
2026-08-01 16:17:42 +08:00
2026-08-12 18:04:08 +08:00
2026-08-01 23:57:48 +08:00
2026-07-10 20:17:34 +08:00
2026-06-22 14:06:36 +08:00
2026-07-08 14:35:15 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-07-29 13:46:37 +08:00
2026-01-28 15:07:50 +08:00
2026-08-12 18:04:08 +08:00
2026-08-12 18:04:08 +08:00
2026-07-29 13:46:37 +08:00
2026-01-28 15:07:50 +08:00
2026-07-06 13:22:04 +08:00
2026-08-12 18:04:08 +08:00
2026-07-30 14:39:30 +08:00
2026-07-10 10:57:16 +08:00
2026-03-14 10:36:21 +08:00
2026-03-14 10:36:21 +08:00
2026-07-31 10:40:00 +08:00
2026-07-31 10:40:00 +08:00
2026-03-25 10:28:02 +08:00
2026-08-12 18:04:08 +08:00
2026-07-31 10:26:18 +08:00
2026-03-25 10:28:02 +08:00
2026-07-10 10:57:16 +08:00
2026-05-07 16:37:22 +08:00
2026-08-12 18:04:08 +08:00
2026-03-25 10:28:02 +08:00
2026-08-03 09:53:20 +08:00
2026-08-12 18:04:08 +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-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-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-30 14:39:30 +08:00
2026-07-10 10:57:16 +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-13 09:27: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-10 10:57:16 +08:00
2026-08-12 18:04:08 +08:00
2026-08-07 10:02:13 +08:00
2026-08-05 16:49:54 +08:00
2026-07-28 17:29:47 +08:00
2026-08-05 16:49:54 +08:00
2026-08-05 16:49:54 +08:00
2026-08-01 17:22:00 +08:00
2026-08-13 12:23:23 +08:00
2026-08-11 13:34:11 +08:00
2026-08-12 18:04:08 +08:00
2026-07-15 17:44:08 +08:00