-- ============================================================================= -- 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='用户主档时点全量版本(算薪/统计按月末解析)';