-- 分区包发布表(价区 / 黑名单 / 偏远):卖价/规则发布钉包,计费按 version 加载 SET @db := DATABASE(); SET @tbl := ( SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_kpi_area_publish_record' ); SET @sql := IF( @tbl = 0, 'CREATE TABLE `t_kpi_area_publish_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT ''主键'', `AreaId` INT NOT NULL COMMENT ''所属分区表 t_kpi_area.Id'', `AreaType` VARCHAR(32) NOT NULL COMMENT ''分区类型:price=价格分区,blacklist=黑名单,remote=偏远'', `Version` VARCHAR(32) NOT NULL COMMENT ''包版本号(yyyyMMddHHmmssfff)'', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT ''状态:1=生效 Active,2=失效 Inactive'', `ContentHash` VARCHAR(64) NOT NULL COMMENT ''规范化分区明细 Content 的 SHA256(hex),同 AreaId+Hash 去重复用'', `Content` JSON NULL COMMENT ''分区明细快照 JSON(KpiAreaSnapshotRuleDto 数组)'', `PublishUser` VARCHAR(64) NOT NULL DEFAULT '''' COMMENT ''发布人'', `PublishTime` DATETIME NOT NULL COMMENT ''发布时间'', `Description` VARCHAR(512) NULL COMMENT ''发布说明'', `IsDeleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT ''软删除:0=否,1=是'', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT ''创建人'', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ''创建时间'', `UpdateUserId` INT NULL COMMENT ''更新人'', `UpdateTime` DATETIME NULL COMMENT ''更新时间'', PRIMARY KEY (`Id`), UNIQUE KEY `uk_kpi_pack_area_hash` (`AreaId`, `ContentHash`), KEY `idx_kpi_pack_area_ver` (`AreaId`, `Version`), KEY `idx_kpi_pack_area_type_time` (`AreaId`, `AreaType`, `PublishTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=''KPI分区发布包(价区/黑名单/偏远明细不可变快照)''', 'SELECT ''t_kpi_area_publish_record already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 表已存在时回填表/字段注释(可重复执行;不包进 PREPARE) ALTER TABLE `t_kpi_area_publish_record` COMMENT = 'KPI分区发布包(价区/黑名单/偏远明细不可变快照)', MODIFY COLUMN `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', MODIFY COLUMN `AreaId` INT NOT NULL COMMENT '所属分区表 t_kpi_area.Id', MODIFY COLUMN `AreaType` VARCHAR(32) NOT NULL COMMENT '分区类型:price=价格分区,blacklist=黑名单,remote=偏远', MODIFY COLUMN `Version` VARCHAR(32) NOT NULL COMMENT '包版本号(yyyyMMddHHmmssfff)', MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=生效 Active,2=失效 Inactive', MODIFY COLUMN `ContentHash` VARCHAR(64) NOT NULL COMMENT '规范化分区明细 Content 的 SHA256(hex),同 AreaId+Hash 去重复用', MODIFY COLUMN `Content` JSON NULL COMMENT '分区明细快照 JSON(KpiAreaSnapshotRuleDto 数组)', MODIFY COLUMN `PublishUser` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '发布人', MODIFY COLUMN `PublishTime` DATETIME NOT NULL COMMENT '发布时间', MODIFY COLUMN `Description` VARCHAR(512) NULL COMMENT '发布说明', MODIFY COLUMN `IsDeleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '软删除:0=否,1=是', MODIFY COLUMN `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', MODIFY COLUMN `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', MODIFY COLUMN `UpdateUserId` INT NULL COMMENT '更新人', MODIFY COLUMN `UpdateTime` DATETIME NULL COMMENT '更新时间';