Blame view

项目文档相关/sql/2026-4-3/R-001_用户主档变更审计表_lq_user_profile_audit.sql 3.23 KB
db9c79c0   “wangming”   feat: punch-based...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  -- =============================================================================
  -- R-001:用户主档字段级变更审计(与《用户主档与薪酬考勤改造记录》R-001 详细设计一致)
  -- 说明:
  --   1. 主键 F_Id 须由应用层 YitIdHelper.NextId().ToString() 生成,勿在 MySQL 内调用 C#
  --   2.  BASE_USER 更新同事务插入;敏感字段禁止明文写入 F_OldValue/F_NewValue
  --   3. 多租户:与 BASE_USER 一致走 SqlSugar Tenant
  -- =============================================================================
  
  CREATE TABLE IF NOT EXISTS `lq_user_profile_audit` (
    `F_Id` varchar(50) NOT NULL COMMENT '主键',
    `F_TargetUserId` varchar(50) NOT NULL COMMENT '被变更用户 BASE_USER.F_Id',
    `F_OperatorUserId` varchar(64) DEFAULT NULL COMMENT '操作人用户ID',
    `F_OperatorUserName` varchar(128) DEFAULT NULL COMMENT '操作人姓名(冗余)',
    `F_OperateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
    `F_Action` varchar(64) NOT NULL COMMENT '操作类型,见改造文档枚举:PROFILE_UPDATE/PROFILE_CREATE/PROFILE_DELETE_SOFT/ENABLE_TOGGLE/ADMIN_RESET_PASSWORD/CURRENT_MODIFY_PASSWORD/CURRENT_BASE_INFO/CURRENT_THEME/CURRENT_LANGUAGE/CURRENT_AVATAR/RELATION_BATCH_POSITION/RELATION_BATCH_ROLE 等',
    `F_BatchId` varchar(50) DEFAULT NULL COMMENT '同一次请求批次ID(UUID),多字段同一保存共用',
    `F_FieldKey` varchar(64) NOT NULL COMMENT '属性名(与 UserEntity 一致),如 Mdid、OrganizeId、Gw;密码行为 Password;元事件可用 __META__',
    `F_FieldLabel` varchar(64) DEFAULT NULL COMMENT '中文展示名',
    `F_OldValue` text COMMENT '变更前原始值(敏感字段脱敏或占位符)',
    `F_NewValue` text COMMENT '变更后',
    `F_Source` varchar(32) NOT NULL DEFAULT 'API' COMMENT 'API/OAUTH/RELATION_SERVICE/PORTAL/BATCH_IMPORT/SYSTEM',
    `F_ClientIp` varchar(64) DEFAULT NULL COMMENT '客户端 IP(可选)',
    `F_UserAgent` varchar(500) DEFAULT NULL COMMENT 'UA(可选,截断)',
    `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注(如失败回滚说明、导入批次号)',
    PRIMARY KEY (`F_Id`),
    KEY `IX_lq_user_profile_audit_Target_Time` (`F_TargetUserId`,`F_OperateTime`),
    KEY `IX_lq_user_profile_audit_Batch` (`F_BatchId`),
    KEY `IX_lq_user_profile_audit_Operator_Time` (`F_OperatorUserId`,`F_OperateTime`),
    KEY `IX_lq_user_profile_audit_Action_Time` (`F_Action`,`F_OperateTime`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户主档字段级变更审计';
  
  -- -----------------------------------------------------------------------------
  -- 若线上已按旧版脚本建表(无 F_Action/F_ClientIp 等),可手工执行(列已存在则跳过):
  -- ALTER TABLE `lq_user_profile_audit` ADD COLUMN `F_Action` varchar(64) NOT NULL DEFAULT 'PROFILE_UPDATE' COMMENT '操作类型' AFTER `F_OperateTime`;
  -- ……按详细设计逐列补充并调整 NOT NULL 默认值策略。
  -- -----------------------------------------------------------------------------
  -- 可选方案 B:复用 lq_business_operation_log(不写本表),见改造文档「方案 B」。
  -- ALTER TABLE `lq_business_operation_log`
  --   ADD KEY `IX_lq_business_operation_log_Biz_Time` (`F_BizType`,`F_BizId`,`F_OperateTime`);