Blame view

项目文档相关/sql/2026-04-04/R-004_用户主档全量时点版本_lq_user_profile_version.sql 2.02 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
  -- =============================================================================
  -- R-004:用户主档全量时点版本(与门店 lq_store_profile_version 时点语义一致)
  -- 说明:
  --   1. 主键 F_Id 由应用层 YitIdHelper.NextId().ToString() 生成。
  --   2. 同一用户 F_VersionNo 单调递增;新版本写入前将上一版本 F_ValidTo 置为本版本 F_ValidFrom
  --   3. F_FullSnapshotJson 存脱敏后的完整 BASE_USER 业务字段 JSON(不含密码/密钥),供算薪时点与还原。
  --   4. 查询「某日当时主档」:F_TargetUserId + F_ValidFrom <= @asOf AND (F_ValidTo IS NULL OR F_ValidTo > @asOf)
  -- =============================================================================
  
  CREATE TABLE IF NOT EXISTS `lq_user_profile_version` (
    `F_Id` varchar(50) NOT NULL COMMENT '主键',
    `F_TargetUserId` varchar(50) NOT NULL COMMENT '目标用户 BASE_USER.F_Id',
    `F_VersionNo` int NOT NULL COMMENT '用户内版本号,从1递增',
    `F_ValidFrom` datetime NOT NULL COMMENT '本版本生效时间(含)',
    `F_ValidTo` datetime DEFAULT NULL COMMENT '失效时间(不含);NULL 表示当前仍有效',
    `F_OperatorUserId` varchar(64) DEFAULT NULL COMMENT '提交变更的操作人',
    `F_OperatorUserName` varchar(128) DEFAULT NULL COMMENT '操作人姓名冗余',
    `F_ChangeTrigger` varchar(64) DEFAULT NULL COMMENT 'PROFILE_UPDATE/SELF_PROFILE_UPDATE/USER_RELATION_BATCH 等',
    `F_Mdid` varchar(50) DEFAULT NULL COMMENT '门店快照',
    `F_Gw` varchar(64) DEFAULT NULL COMMENT '岗位 Gw 快照',
    `F_OrganizeId` varchar(50) DEFAULT NULL COMMENT '组织快照',
    `F_FullSnapshotJson` longtext COMMENT '脱敏全量主档 JSON(schemaVersion + user)',
    PRIMARY KEY (`F_Id`),
    UNIQUE KEY `UK_user_profile_version` (`F_TargetUserId`,`F_VersionNo`),
    KEY `IX_user_valid_from` (`F_TargetUserId`,`F_ValidFrom`),
    KEY `IX_user_valid_range` (`F_TargetUserId`,`F_ValidTo`,`F_ValidFrom`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户主档时点全量版本(算薪/统计按月末解析)';