2026-10-13 14:57:42 +08:00

1608 lines
215 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
========================================================================================
YD_Event 二期生产环境部署脚本
版本:3.1 | 基线提交:25830581d2add95f2d659e663f3d78b766ce0946
数据库:Microsoft SQL Server 2016+(兼容级别 130+)
执行示例:
sqlcmd -S <server> -d <database> -E -b -i Phase2_Production_Deployment.sql
设计原则:单事务、失败全回滚、可重复执行、最小权限、执行后强校验。
注意:本脚本不创建 SQL Login、不保存密码,仅创建数据库角色并授予对象权限。
事务内执行顺序(严格按“先新增表 → 后更改表结构 → 最后插入数据”组织,便于维护):
[1/9] 新增表 :创建二期 19 张业务表(只引用一期主键,故最先执行)
[2/9] 改表结构 :为一期已有表补充二期所需列
[3/9] 改表结构 :CHECK 约束、外键、索引
[4/9] 插入数据 :计分规则/规则明细/角色/菜单等种子(幂等:存在则更新,缺失才插入)
[5/9] 编程对象 :函数、视图、存储过程
[6/9] 权限 :最小权限数据库角色与授权
[7/9] 后置校验 :对象/列/种子/权限强校验,失败整体回滚
[8/9] 部署摘要 :输出本次部署统计
[9/9] 提交事务 :全部成功后 COMMIT,出错由 CATCH 完整回滚
========================================================================================
*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @LockResult INT;
EXEC @LockResult=sys.sp_getapplock @Resource=N'YD_Event_Phase2_Production_Deployment',@LockMode='Exclusive',@LockOwner='Transaction',@LockTimeout=10000;
IF @LockResult<0 THROW 51002,N'无法取得二期部署排他锁,可能有另一个部署正在执行。',1;
/* EventScoreCorrection:同时支持后台账号与裁判账号发起修正。 */
IF OBJECT_ID(N'dbo.EventScoreCorrection','U') IS NOT NULL AND COL_LENGTH(N'dbo.EventScoreCorrection', N'ApplyRefereeId') IS NULL
ALTER TABLE dbo.EventScoreCorrection ADD ApplyRefereeId BIGINT NULL;
IF OBJECT_ID(N'dbo.EventScoreCorrection','U') IS NOT NULL AND EXISTS (
SELECT 1 FROM sys.columns WHERE object_id=OBJECT_ID(N'dbo.EventScoreCorrection') AND name=N'ApplyUserId' AND is_nullable=0
)
ALTER TABLE dbo.EventScoreCorrection ALTER COLUMN ApplyUserId BIGINT NULL;
/* ====================================================================================
[1/9] 新增表 · 创建二期业务表(共 19 张;IF OBJECT_ID 判空,可重复执行)
说明:新表外键只引用一期已有表主键(Id),不依赖 [2/9] 新增列,因此置于“改表结构”之前。
表清单(按业务域):
裁判库 :Referee / RefereeApplication / EventReferee
检录 :CheckinTask / CheckinRecord
编排场次:EventVenue / EventSession / EventSessionEntry / EventSessionEntryRematch
评分 :EventJudgeAssignment / EventJudgeTask / EventJudgeMessage / EventJudgeScoreSheet / EventJudgeScoreDetail
计分规则:ScoreRule / ScoreRuleItem
成绩 :EventResultVersion / EventScoreCorrection / EventResultScreenCast
公共字段:Status(0启用/1禁用)、DeleteMark(软删除)、CreatedUserId/CreatedTime、UpdatedUserId/UpdatedTime;字段行尾 -- 后为中文注释
==================================================================================== */
PRINT N'[1/9] 新增表:创建二期业务表';
/* RefereeApplication:裁判通过小程序报名执裁及审核状态。 */
IF OBJECT_ID(N'dbo.[RefereeApplication]','U') IS NULL
BEGIN
CREATE TABLE dbo.[RefereeApplication] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_RefereeApplication] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id(EventInfo.Id)
[RefereeUserId] BIGINT NOT NULL, -- 报名执裁的小程序用户Id(AppUser.Id,账户角色为裁判)
[ApplicationStatus] INT NOT NULL CONSTRAINT [DF_RefereeApplication_ApplicationStatus] DEFAULT (1), -- 报名状态:1-处理中(历史数据),2-报名成功,3-报名失败,4-已取消
[Remark] NVARCHAR(512) NULL, -- 备注
[Status] INT NOT NULL CONSTRAINT [DF_RefereeApplication_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_RefereeApplication_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* CheckinTask:赛事一检、二检、三检任务和当前检录进度。 */
IF OBJECT_ID(N'dbo.[CheckinTask]','U') IS NULL
BEGIN
CREATE TABLE dbo.[CheckinTask] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_CheckinTask] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id(EventInfo.Id)
[CheckinNo] INT NOT NULL CONSTRAINT [DF_CheckinTask_CheckinNo] DEFAULT (1), -- 负责的检次:1-一检,2-二检,3-三检
[CheckerUserId] BIGINT NULL, -- 关联检录员用户Id(尚未绑定检录员时为空)
[TotalRounds] INT NOT NULL CONSTRAINT [DF_CheckinTask_TotalRounds] DEFAULT (1), -- 赛事检录总次数
[CurrentRound] INT NOT NULL CONSTRAINT [DF_CheckinTask_CurrentRound] DEFAULT (1), -- 当前检录轮次(与CheckinNo保持一致)
[CurrentSessionKey] NVARCHAR(64) NULL, -- 当前秩序册列标识
[CurrentSessionOrder] INT NOT NULL CONSTRAINT [DF_CheckinTask_CurrentSessionOrder] DEFAULT (0), -- 当前秩序册列的出场顺序
[CurrentSessionName] NVARCHAR(256) NULL, -- 当前秩序册列名称
[CurrentEventProjectId] BIGINT NULL, -- 当前检录的赛事项目Id
[CurrentSessionVenue] NVARCHAR(128) NULL, -- 当前秩序册列所在场地
[RoundName] NVARCHAR(64) NOT NULL CONSTRAINT [DF_CheckinTask_RoundName] DEFAULT (N'赛前检录'), -- 检次名称(由CheckinNo转换,如一检、二检)
[CurrentGroupId] BIGINT NULL, -- 当前检录的参赛组别Id(不限定组别时为空)
[CurrentGroupName] NVARCHAR(128) NOT NULL CONSTRAINT [DF_CheckinTask_CurrentGroupName] DEFAULT (N''), -- 当前检录的参赛组别名称
[GroupOrder] INT NOT NULL CONSTRAINT [DF_CheckinTask_GroupOrder] DEFAULT (0), -- 当前组别的顺序
[TotalGroups] INT NOT NULL CONSTRAINT [DF_CheckinTask_TotalGroups] DEFAULT (0), -- 本次检录的组别总数
[NextGroupName] NVARCHAR(128) NULL, -- 下一个待检录组别名称
[Venue] NVARCHAR(128) NULL, -- 检录场地
[TaskStatus] INT NOT NULL CONSTRAINT [DF_CheckinTask_TaskStatus] DEFAULT (0), -- 任务状态:0-未开始,1-进行中,2-已结束
[Status] INT NOT NULL CONSTRAINT [DF_CheckinTask_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_CheckinTask_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* CheckinRecord:参赛人员逐轮检录结果。 */
IF OBJECT_ID(N'dbo.[CheckinRecord]','U') IS NULL
BEGIN
CREATE TABLE dbo.[CheckinRecord] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_CheckinRecord] PRIMARY KEY, -- 主键Id(雪花Id)
[TaskId] BIGINT NOT NULL, -- 关联检录任务Id(CheckinTask.Id)
[Round] INT NOT NULL, -- 检次(与检录任务CheckinNo一致)
[SessionKey] NVARCHAR(64) NULL, -- 秩序册列标识
[SessionOrder] INT NOT NULL CONSTRAINT [DF_CheckinRecord_SessionOrder] DEFAULT (0), -- 秩序册列的出场顺序
[GroupId] BIGINT NULL, -- 参赛组别Id(不限定组别时为空)
[RegistrationPersonId] BIGINT NULL, -- 关联的报名人员Id;秩序册导入记录无报名人员时为空
[CheckerUserId] BIGINT NOT NULL, -- 执行检录的检录员用户Id
[Checked] BIT NOT NULL CONSTRAINT [DF_CheckinRecord_Checked] DEFAULT (0), -- 是否已检录(取消检录置为0)
[CheckedTime] DATETIME2(3) NULL, -- 检录时间(取消检录时置空)
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_CheckinRecord_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* Referee:裁判实名档案、等级、证书和可执裁角色。 */
IF OBJECT_ID(N'dbo.[Referee]','U') IS NULL
BEGIN
CREATE TABLE dbo.[Referee] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_Referee] PRIMARY KEY, -- 主键Id(雪花Id)
[Name] NVARCHAR(64) NOT NULL, -- 裁判姓名
[Mobile] NVARCHAR(16) NOT NULL, -- 联系电话(未删除数据中唯一)
[AppUserId] BIGINT NULL, -- 关联小程序用户Id(未关联小程序账号时为空)
[ProvinceCode] NVARCHAR(20) NOT NULL, -- 所属省份编码
[ProvinceName] NVARCHAR(64) NOT NULL, -- 所属省份名称
[CityCode] NVARCHAR(20) NOT NULL, -- 所属城市编码
[CityName] NVARCHAR(64) NOT NULL, -- 所属城市名称
[DistrictCode] NVARCHAR(20) NOT NULL, -- 所属区县编码
[DistrictName] NVARCHAR(64) NOT NULL, -- 所属区县名称
[Level] INT NOT NULL, -- 裁判等级:1-国际级,2-国家级,3-一级,4-二级,5-三级
[CertificateUrl] NVARCHAR(512) NOT NULL, -- 裁判证书图片URL
[Roles] INT NOT NULL, -- 可执裁角色(位标记,可多选,RefereeRole枚举组合)
[AuditStatus] INT NOT NULL CONSTRAINT [DF_Referee_AuditStatus] DEFAULT (0), -- 审核状态(AuditStatus枚举:待审核/通过/拒绝)
[AuditRemark] NVARCHAR(512) NULL, -- 审核备注
[AuditUserId] BIGINT NULL, -- 审核人(后台系统用户Id)
[AuditTime] DATETIME2(3) NULL, -- 审核时间
[Status] INT NOT NULL CONSTRAINT [DF_Referee_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_Referee_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventReferee:赛事与裁判档案的关联关系。 */
IF OBJECT_ID(N'dbo.[EventReferee]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventReferee] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventReferee] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id(Referee.Id)
[RefereeApplicationId] BIGINT NULL, -- 关联裁判报名记录Id(非小程序报名时为空)
[SourceType] INT NOT NULL CONSTRAINT [DF_EventReferee_SourceType] DEFAULT (0), -- 关联来源:1-后台添加,2-小程序报名,3-秩序册导入
[Status] INT NOT NULL CONSTRAINT [DF_EventReferee_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventReferee_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventJudgeAssignment:场次裁判席位分配。 */
IF OBJECT_ID(N'dbo.[EventJudgeAssignment]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeAssignment] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeAssignment] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id(EventSession.Id)
[EventRefereeId] BIGINT NOT NULL, -- 关联赛事裁判记录Id(EventReferee.Id)
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id(兼容历史查询的冗余字段)
[JudgeUserId] BIGINT NULL, -- 关联小程序用户Id(裁判未注册小程序时为空)
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码(取自计分规则席位配置,如T、DP1、P)
[JudgeRoleType] NVARCHAR(16) NULL, -- 裁判角色类别编码(如DP、DM、DR、P、T)
[AssignmentStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_AssignmentStatus] DEFAULT (0), -- 分配状态:0-草稿,1-已提交,2-已替换,9-已停用
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
[Remark] NVARCHAR(512) NULL, -- 备注
[Status] INT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventJudgeTask:面向裁判端下发的版本化评分任务。 */
IF OBJECT_ID(N'dbo.[EventJudgeTask]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeTask] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeTask] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
[EventRefereeId] BIGINT NOT NULL, -- 关联赛事裁判记录Id
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id
[JudgeUserId] BIGINT NULL, -- 关联小程序用户Id
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
[RuleVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_RuleVersion] DEFAULT (1), -- 计分规则版本号
[TaskSnapshotJson] NVARCHAR(MAX) NOT NULL, -- 任务快照(JSON)
[TaskType] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskType] DEFAULT (0), -- 任务类型:0-正常打分,1-成绩修正
[TaskStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskStatus] DEFAULT (0), -- 任务状态:0-待下发,10-已下发,20-已接收,30-评分中,40-已提交,50-需修正,60-已修正,80-已拒绝,90-已作废,99-已过期
[TaskVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskVersion] DEFAULT (1), -- 任务版本号
[DispatchedTime] DATETIME2(3) NULL, -- 下发时间
[AcceptedTime] DATETIME2(3) NULL, -- 接收时间
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
[ExpiresTime] DATETIME2(3) NULL, -- 任务截止时间
[OriginalTaskId] BIGINT NULL, -- 来源任务Id(修正/重发时)
[RejectReason] NVARCHAR(512) NULL, -- 拒绝原因
[Remark] NVARCHAR(512) NULL, -- 备注
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeTask_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventVenue:赛事比赛场地。 */
IF OBJECT_ID(N'dbo.[EventVenue]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventVenue] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventVenue] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[VenueCode] NVARCHAR(32) NOT NULL, -- 场地编码(同一赛事未删除数据中唯一,如V01)
[VenueName] NVARCHAR(128) NOT NULL, -- 场地名称
[Status] INT NOT NULL CONSTRAINT [DF_EventVenue_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[Sort] INT NOT NULL CONSTRAINT [DF_EventVenue_Sort] DEFAULT (0), -- 排序
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventVenue_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventSession:项目、组别、场地对应的比赛场次。 */
IF OBJECT_ID(N'dbo.[EventSession]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventSession] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSession] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[EventProjectId] BIGINT NOT NULL, -- 关联赛事项目Id
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id(多组别混合时为空)
[VenueId] BIGINT NOT NULL, -- 关联比赛场地Id(EventVenue.Id)
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id(取自项目配置)
[SessionNo] NVARCHAR(32) NOT NULL, -- 场次编号(同一赛事未删除数据中唯一)
[SessionName] NVARCHAR(128) NULL, -- 场次名称
[StartTime] DATETIME2(3) NULL, -- 场次开始时间
[EndTime] DATETIME2(3) NULL, -- 场次结束时间
[CurrentEntryId] BIGINT NULL, -- 当前出场记录Id
[SessionStatus] INT NOT NULL CONSTRAINT [DF_EventSession_SessionStatus] DEFAULT (0), -- 场次状态:0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
[Version] INT NOT NULL CONSTRAINT [DF_EventSession_Version] DEFAULT (1), -- 版本号(场次内容变更时递增)
[Status] INT NOT NULL CONSTRAINT [DF_EventSession_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSession_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventSessionEntry:场次出场顺序、状态和重赛标识。 */
IF OBJECT_ID(N'dbo.[EventSessionEntry]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventSessionEntry] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSessionEntry] PRIMARY KEY, -- 主键Id(雪花Id)
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
[ParticipationRecordId] BIGINT NULL, -- 关联赛事参赛记录Id(未匹配到参赛记录时为空)
[RegistrationItemId] BIGINT NULL, -- 关联报名项目明细Id
[SourceType] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_SourceType] DEFAULT (0), -- 出场数据来源:0-报名平台编排,1-秩序册导入
[EntryNo] NVARCHAR(32) NOT NULL, -- 出场编号(项目序号+场地序号+出场顺序)
[PlayOrder] INT NOT NULL, -- 出场顺序(同一场次未删除数据中唯一)
[EntryStatus] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_EntryStatus] DEFAULT (0), -- 出场状态:0-待出场,10-已检录,20-已叫号,30-进行中,40-已完成,80-退赛,90-取消比赛资格
[CallTime] DATETIME2(3) NULL, -- 叫号时间
[StartTime] DATETIME2(3) NULL, -- 开始比赛时间
[FinishTime] DATETIME2(3) NULL, -- 结束比赛时间
[IsRematch] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_IsRematch] DEFAULT (0), -- 是否为重赛产生的出场记录
[RematchFromEntryId] BIGINT NULL, -- 重赛来源出场记录Id
[IsVoided] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_IsVoided] DEFAULT (0), -- 成绩是否已作废
[VoidReason] NVARCHAR(512) NULL, -- 成绩作废原因
[ParticipantName] NVARCHAR(128) NOT NULL, -- 参赛人员姓名
[TeamName] NVARCHAR(128) NULL, -- 参赛队伍名称(个人项目为空)
[GroupName] NVARCHAR(128) NOT NULL, -- 参赛组别名称
[Version] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_Version] DEFAULT (1), -- 版本号(出场信息变更时递增)
[Status] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventSessionEntryRematch:重赛申请、安排和完成记录。 */
IF OBJECT_ID(N'dbo.[EventSessionEntryRematch]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventSessionEntryRematch] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSessionEntryRematch] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[EventProjectId] BIGINT NOT NULL, -- 关联赛事项目Id
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id
[OriginalSessionId] BIGINT NOT NULL, -- 原比赛场次Id
[OriginalSessionEntryId] BIGINT NOT NULL, -- 原场次出场记录Id
[NewSessionId] BIGINT NULL, -- 重赛场次Id
[NewSessionEntryId] BIGINT NULL, -- 重赛出场记录Id
[ReasonCode] NVARCHAR(64) NOT NULL, -- 重赛原因编码
[RematchReason] NVARCHAR(512) NOT NULL, -- 重赛原因说明
[ApplyUserId] BIGINT NOT NULL, -- 申请人Id
[RematchStatus] INT NOT NULL CONSTRAINT [DF_EventSessionEntryRematch_RematchStatus] DEFAULT (0), -- 重赛状态:0-已申请,10-已安排,20-已完成,90-已取消
[CompletedTime] DATETIME2(3) NULL, -- 完成时间
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSessionEntryRematch_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventJudgeMessage:裁判端业务通知与已读状态。 */
IF OBJECT_ID(N'dbo.[EventJudgeMessage]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeMessage] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeMessage] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[ReceiverUserId] BIGINT NOT NULL, -- 接收用户Id
[RefereeId] BIGINT NOT NULL, -- 接收裁判Id
[MessageType] INT NOT NULL, -- 消息类型:1-成绩修正提醒,2-评分任务下发,3-重赛通知,9-系统通知
[Title] NVARCHAR(128) NOT NULL, -- 消息标题
[Content] NVARCHAR(512) NOT NULL, -- 消息内容
[RelationType] NVARCHAR(32) NULL, -- 关联业务类型
[RelationId] BIGINT NULL, -- 关联业务Id
[IsRead] BIT NOT NULL CONSTRAINT [DF_EventJudgeMessage_IsRead] DEFAULT (0), -- 是否已读
[ReadTime] DATETIME2(3) NULL, -- 阅读时间
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeMessage_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* ScoreRule:项目计分规则及裁判席位JSON配置。 */
IF OBJECT_ID(N'dbo.[ScoreRule]','U') IS NULL
BEGIN
CREATE TABLE dbo.[ScoreRule] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_ScoreRule] PRIMARY KEY, -- 主键Id(雪花Id)
[RuleCode] NVARCHAR(64) NOT NULL, -- 规则编码(未删除数据中唯一,如ROPE_PRESCRIBED/ROPE_PRESCRIBED_SINGLE)
[RuleName] NVARCHAR(128) NOT NULL, -- 规则名称
[JudgeRoleSchemaJson] NVARCHAR(2000) NOT NULL, -- 裁判席位配置(JSON,按裁判组描述所需角色席位)
[RuleConfigJson] NVARCHAR(4000) NULL, -- 计分参数配置(JSON,扣分项/权重等扩展参数)
[RuleVersion] INT NOT NULL CONSTRAINT [DF_ScoreRule_RuleVersion] DEFAULT (1), -- 规则版本号
[Status] INT NOT NULL CONSTRAINT [DF_ScoreRule_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
[Sort] INT NOT NULL CONSTRAINT [DF_ScoreRule_Sort] DEFAULT (0), -- 排序
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_ScoreRule_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* ScoreRuleItem:计分规则的标准化评分项字典。 */
IF OBJECT_ID(N'dbo.[ScoreRuleItem]','U') IS NULL
BEGIN
CREATE TABLE dbo.[ScoreRuleItem] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_ScoreRuleItem] PRIMARY KEY, -- 主键Id(雪花Id)
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id(ScoreRule.Id)
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
[ItemCode] NVARCHAR(64) NOT NULL, -- 评分项编码
[ItemName] NVARCHAR(128) NOT NULL, -- 评分项名称
[ItemType] INT NOT NULL, -- 评分项类型:1-难度等级计数,2-规定元素计数,3-表现维度,4-扣分项,5-取消资格原因,6-规定赛评分项
[ParentItemCode] NVARCHAR(64) NULL, -- 父级评分项编码
[UnitValue] DECIMAL(18,4) NULL, -- 单位分值
[MinValue] DECIMAL(18,4) NULL, -- 最小值
[MaxValue] DECIMAL(18,4) NULL, -- 最大值
[StepValue] DECIMAL(18,4) NULL, -- 录入步长
[DefaultValue] DECIMAL(18,4) NULL, -- 默认值
[CalcMode] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_CalcMode] DEFAULT (0), -- 计算方式:0-数量×单位分值累加,1-直接取录入值,2-仅记录不参与合计
[ScoreDimension] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_ScoreDimension] DEFAULT (0), -- 计入得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
[IsRequired] BIT NOT NULL CONSTRAINT [DF_ScoreRuleItem_IsRequired] DEFAULT (0), -- 是否必填
[ExtensionJson] NVARCHAR(2000) NULL, -- 扩展配置(JSON)
[Sort] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_Sort] DEFAULT (0), -- 排序
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_ScoreRuleItem_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventJudgeScoreSheet:裁判提交的版本化评分单主表。 */
IF OBJECT_ID(N'dbo.[EventJudgeScoreSheet]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeScoreSheet] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreSheet] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
[JudgeTaskId] BIGINT NOT NULL, -- 关联裁判评分任务Id
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id
[JudgeUserId] BIGINT NULL, -- 提交用户Id
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
[RuleVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RuleVersion] DEFAULT (1), -- 计分规则版本号
[SheetVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_SheetVersion] DEFAULT (1), -- 评分单版本号
[SheetStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_SheetStatus] DEFAULT (0), -- 评分单状态:0-草稿,10-已提交,20-已确认,30-已被修正,90-已作废
[IsCurrent] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_IsCurrent] DEFAULT (1), -- 是否为当前有效版本
[DifficultyScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DifficultyScore] DEFAULT (0), -- 难度分
[PerformanceScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_PerformanceScore] DEFAULT (0), -- 表现分
[RequiredScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredScore] DEFAULT (0), -- 规定分
[DeductionScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DeductionScore] DEFAULT (0), -- 扣分
[RequiredCompletedCount] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredCompletedCount] DEFAULT (0), -- 规定元素完成数量
[RequiredMissingCount] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredMissingCount] DEFAULT (0), -- 规定元素缺失数量
[TotalScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_TotalScore] DEFAULT (0), -- 合计得分
[IsDisqualified] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_IsDisqualified] DEFAULT (0), -- 是否取消比赛资格
[DisqualifyReasonCode] NVARCHAR(64) NULL, -- 取消比赛资格原因编码
[DisqualifyRemark] NVARCHAR(512) NULL, -- 取消比赛资格补充说明
[CalculationJson] NVARCHAR(MAX) NULL, -- 计算明细(JSON)
[IdempotencyKey] NVARCHAR(64) NOT NULL, -- 提交幂等键
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
[OriginalSheetId] BIGINT NULL, -- 来源评分单Id(成绩修正时)
[CorrectionReason] NVARCHAR(512) NULL, -- 修正原因
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventJudgeScoreAttachment:评分单记录画板,按上传版本留档。 */
IF OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeScoreAttachment] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreAttachment] PRIMARY KEY,
[EventId] BIGINT NOT NULL,
[SessionId] BIGINT NOT NULL,
[SessionEntryId] BIGINT NOT NULL,
[ScoreSheetId] BIGINT NOT NULL,
[JudgeAssignmentId] BIGINT NOT NULL,
[RefereeId] BIGINT NOT NULL,
[AttachmentType] NVARCHAR(32) NOT NULL,
[FileName] NVARCHAR(128) NOT NULL,
[FileUrl] NVARCHAR(1000) NOT NULL,
[FileSize] BIGINT NOT NULL,
[ContentType] NVARCHAR(64) NOT NULL,
[IdempotencyKey] NVARCHAR(64) NOT NULL,
[IsCurrent] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreAttachment_IsCurrent] DEFAULT (1),
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreAttachment_DeleteMark] DEFAULT (0),
[CreatedUserId] BIGINT NOT NULL,
[CreatedTime] DATETIME2(3) NOT NULL,
[UpdatedUserId] BIGINT NULL,
[UpdatedTime] DATETIME2(3) NULL
);
END;
/* EventJudgeScoreDetail:评分单逐项录入和计算明细。 */
IF OBJECT_ID(N'dbo.[EventJudgeScoreDetail]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventJudgeScoreDetail] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreDetail] PRIMARY KEY, -- 主键Id(雪花Id)
[ScoreSheetId] BIGINT NOT NULL, -- 关联裁判评分单Id
[ScoreRuleItemId] BIGINT NULL, -- 关联计分规则明细Id
[ItemCode] NVARCHAR(64) NOT NULL, -- 评分项编码
[ItemName] NVARCHAR(128) NOT NULL, -- 评分项名称(快照)
[SubjectCode] NVARCHAR(32) NULL, -- 评分对象编码(如A、B)
[ItemType] INT NOT NULL, -- 评分项类型:1-难度计数,2-规定元素,3-表现维度,4-扣分项,5-取消资格,6-规定赛评分项
[ScoreDimension] INT NOT NULL, -- 得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
[CountValue] DECIMAL(18,4) NULL, -- 录入数量
[InputValue] DECIMAL(18,4) NULL, -- 录入分值
[UnitValue] DECIMAL(18,4) NULL, -- 单位分值
[Subtotal] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_Subtotal] DEFAULT (0), -- 本项小计
[IsAutoGenerated] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_IsAutoGenerated] DEFAULT (0), -- 是否自动生成
[ParentItemCode] NVARCHAR(64) NULL, -- 来源评分项编码
[ExtensionJson] NVARCHAR(1000) NULL, -- 扩展信息(JSON)
[Sort] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_Sort] DEFAULT (0), -- 排序
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventResultVersion:正式成绩的不可变版本快照。 */
IF OBJECT_ID(N'dbo.[EventResultVersion]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventResultVersion] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventResultVersion] PRIMARY KEY, -- 主键Id(雪花Id)
[EventResultId] BIGINT NOT NULL, -- 关联赛事成绩Id(EventResult.Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
[ResultVersion] INT NOT NULL, -- 成绩版本号
[DifficultyScore] DECIMAL(18,4) NOT NULL, -- 难度分
[PerformanceScore] DECIMAL(18,4) NOT NULL, -- 表现分
[RequiredScore] DECIMAL(18,4) NOT NULL, -- 规定分
[DeductionScore] DECIMAL(18,4) NOT NULL, -- 扣分
[TotalScore] DECIMAL(18,4) NOT NULL, -- 正式总分
[Rank] INT NULL, -- 名次
[IsDisqualified] BIT NOT NULL, -- 是否取消比赛资格
[DisqualifyReasonCode] NVARCHAR(64) NULL, -- 取消比赛资格原因编码
[ResultStatus] INT NOT NULL, -- 成绩状态:0-计算中,10-待复核,20-已确认,30-已投屏,40-已更正,90-已作废
[SourceType] INT NOT NULL, -- 版本来源:0-正常聚合,1-成绩修正,2-重赛
[ScoreCorrectionId] BIGINT NULL, -- 关联成绩修正申请Id
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
[RuleVersion] INT NOT NULL, -- 计分规则版本号
[CalculationJson] NVARCHAR(MAX) NULL, -- 聚合计算明细(JSON)
[Remark] NVARCHAR(512) NULL, -- 版本说明
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventResultVersion_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventScoreCorrection:成绩修正申请及审批闭环。 */
IF OBJECT_ID(N'dbo.[EventScoreCorrection]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventScoreCorrection] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventScoreCorrection] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
[OriginalScoreSheetId] BIGINT NOT NULL, -- 被修正的原评分单Id
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
[CorrectionTaskId] BIGINT NULL, -- 修正任务Id
[NewScoreSheetId] BIGINT NULL, -- 修正完成后产生的新评分单Id
[ApplyUserId] BIGINT NULL, -- 后台申请人Id(SysUser),裁判端申请时为空
[ApplyRefereeId] BIGINT NULL, -- 裁判端申请人Id(Referee),后台发起时为空
[ApplyReason] NVARCHAR(512) NOT NULL, -- 申请修正原因
[ApproveUserId] BIGINT NULL, -- 审批人Id
[ApproveRemark] NVARCHAR(512) NULL, -- 审批意见
[ApproveTime] DATETIME2(3) NULL, -- 审批时间
[CorrectionStatus] INT NOT NULL CONSTRAINT [DF_EventScoreCorrection_CorrectionStatus] DEFAULT (0), -- 修正状态:0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
[CompletedTime] DATETIME2(3) NULL, -- 完成时间
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventScoreCorrection_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* EventResultScreenCast:成绩投屏载荷、发布与撤回审计。 */
IF OBJECT_ID(N'dbo.[EventResultScreenCast]','U') IS NULL
BEGIN
CREATE TABLE dbo.[EventResultScreenCast] (
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventResultScreenCast] PRIMARY KEY, -- 主键Id(雪花Id)
[EventId] BIGINT NOT NULL, -- 关联赛事Id
[CastType] INT NOT NULL, -- 投屏类型:1-成绩,2-排名
[VenueId] BIGINT NULL, -- 投屏场地Id
[EventProjectId] BIGINT NULL, -- 关联赛事项目Id
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id
[SessionId] BIGINT NULL, -- 关联比赛场次Id
[SessionEntryId] BIGINT NULL, -- 关联场次出场记录Id
[EventResultId] BIGINT NULL, -- 关联赛事成绩Id
[ResultVersion] INT NULL, -- 投屏时的成绩版本号
[PayloadJson] NVARCHAR(MAX) NOT NULL, -- 投屏内容快照(JSON)
[CastStatus] INT NOT NULL CONSTRAINT [DF_EventResultScreenCast_CastStatus] DEFAULT (0), -- 投屏状态:0-已投出,10-已撤回,20-已被新投屏替换
[CastTime] DATETIME2(3) NOT NULL, -- 投屏时间
[RevokedTime] DATETIME2(3) NULL, -- 撤回时间
[RevokedUserId] BIGINT NULL, -- 撤回人Id
[Remark] NVARCHAR(512) NULL, -- 备注
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventResultScreenCast_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
);
END;
/* ====================================================================================
[2/9] 改表结构 · 扩展一期已有表(IF COL_LENGTH 判空,列已存在则跳过,可重复执行)
按目标表分组:AppUser / Referee / Merchant / MerchantCertification / CertificateTemplate /
CertificatePlaceholder / EventInfo / EventRegistrationLimit / Project / SysUser / EventResult
==================================================================================== */
PRINT N'[2/9] 改表结构:扩展一期表新增列';
/* AppUser 小程序用户:角色身份 MiniProgramRole,1-参赛者 2-裁判 3-检录员(独立于报名人员类型 PersonType),默认1 */
IF COL_LENGTH('dbo.AppUser','MiniProgramRole') IS NULL ALTER TABLE dbo.AppUser ADD MiniProgramRole INT NOT NULL CONSTRAINT DF_AppUser_MiniProgramRole DEFAULT(1) WITH VALUES; -- 小程序角色身份:1-参赛者,2-裁判,3-检录员(独立于报名人员类型PersonType),默认1
IF COL_LENGTH('dbo.AppUser','AuditUserId') IS NULL ALTER TABLE dbo.AppUser ADD AuditUserId BIGINT NULL;
IF COL_LENGTH('dbo.AppUser','AuditTime') IS NULL ALTER TABLE dbo.AppUser ADD AuditTime DATETIME NULL;
/* 审核留痕:裁判、商户及商户认证 */
IF COL_LENGTH('dbo.Referee','AuditUserId') IS NULL ALTER TABLE dbo.Referee ADD AuditUserId BIGINT NULL;
IF COL_LENGTH('dbo.Referee','AuditTime') IS NULL ALTER TABLE dbo.Referee ADD AuditTime DATETIME2(3) NULL;
IF OBJECT_ID(N'dbo.MerchantCertification','U') IS NOT NULL AND COL_LENGTH('dbo.MerchantCertification','AuditUserId') IS NULL ALTER TABLE dbo.MerchantCertification ADD AuditUserId BIGINT NULL;
IF OBJECT_ID(N'dbo.MerchantCertification','U') IS NOT NULL AND COL_LENGTH('dbo.MerchantCertification','AuditTime') IS NULL ALTER TABLE dbo.MerchantCertification ADD AuditTime DATETIME NULL;
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditUserId') IS NULL ALTER TABLE dbo.Merchant ADD AuditUserId BIGINT NULL;
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditTime') IS NULL ALTER TABLE dbo.Merchant ADD AuditTime DATETIME NULL;
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditStatus') IS NOT NULL
BEGIN
EXEC sys.sp_executesql N'UPDATE dbo.Merchant SET AuditStatus=1 WHERE AuditStatus IS NULL;';
EXEC sys.sp_executesql N'ALTER TABLE dbo.Merchant ALTER COLUMN AuditStatus INT NOT NULL;';
END;
/* 证书模板与占位符通用字段 */
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL AND COL_LENGTH('dbo.CertificateTemplate','UpdatedUserId') IS NULL ALTER TABLE dbo.CertificateTemplate ADD UpdatedUserId BIGINT NULL;
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL AND COL_LENGTH('dbo.CertificateTemplate','UpdatedTime') IS NULL ALTER TABLE dbo.CertificateTemplate ADD UpdatedTime DATETIME NULL;
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','CreatedUserId') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD CreatedUserId BIGINT NULL;
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','CreatedTime') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD CreatedTime DATETIME NULL;
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','UpdatedUserId') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD UpdatedUserId BIGINT NULL;
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','UpdatedTime') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD UpdatedTime DATETIME NULL;
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL
BEGIN
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL
EXEC sys.sp_executesql N'UPDATE p SET CreatedUserId=COALESCE(p.CreatedUserId,t.CreatedUserId,0),CreatedTime=COALESCE(p.CreatedTime,t.CreatedTime,GETDATE()) FROM dbo.CertificatePlaceholder p LEFT JOIN dbo.CertificateTemplate t ON t.Id=p.TemplateId WHERE p.CreatedUserId IS NULL OR p.CreatedTime IS NULL;';
ELSE
EXEC sys.sp_executesql N'UPDATE dbo.CertificatePlaceholder SET CreatedUserId=COALESCE(CreatedUserId,0),CreatedTime=COALESCE(CreatedTime,GETDATE()) WHERE CreatedUserId IS NULL OR CreatedTime IS NULL;';
EXEC sys.sp_executesql N'ALTER TABLE dbo.CertificatePlaceholder ALTER COLUMN CreatedUserId BIGINT NOT NULL;';
EXEC sys.sp_executesql N'ALTER TABLE dbo.CertificatePlaceholder ALTER COLUMN CreatedTime DATETIME NOT NULL;';
END;
/* EventInfo 赛事:裁判报名邀请码 RefereeRegistrationCode */
IF COL_LENGTH('dbo.EventInfo','RefereeRegistrationCode') IS NULL ALTER TABLE dbo.EventInfo ADD RefereeRegistrationCode NVARCHAR(32) NULL; -- 裁判报名邀请码
/* EventRegistrationLimit 报名限额:裁判名额 RefereeLimit,默认0 */
IF COL_LENGTH('dbo.EventRegistrationLimit','RefereeLimit') IS NULL ALTER TABLE dbo.EventRegistrationLimit ADD RefereeLimit INT NOT NULL CONSTRAINT DF_EventRegistrationLimit_RefereeLimit DEFAULT(0) WITH VALUES; -- 裁判名额限制(默认0)
/* EventRegistrationItem 报名项目明细:支持一个单位在同一报名订单中选择多个来源团队。 */
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamId') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamId BIGINT NULL;
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamName') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamName NVARCHAR(64) NULL;
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamIndex') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamIndex INT NULL;
;WITH TeamCandidates AS (
SELECT item.Id AS RegistrationItemId,team.Id AS TeamId,
COUNT_BIG(1) OVER(PARTITION BY item.Id) AS CandidateCount
FROM dbo.EventRegistrationItem item
INNER JOIN dbo.EventRegistration registration ON registration.Id=item.RegistrationId
INNER JOIN dbo.Team team
ON LTRIM(RTRIM(team.Name))=LTRIM(RTRIM(registration.TeamName))
AND ((registration.MerchantCertificationId IS NOT NULL AND team.MerchantCertificationId=registration.MerchantCertificationId)
OR team.CreatedUserId=registration.CreatedUserId)
WHERE item.TeamId IS NULL AND registration.RegistrationMode=2
AND NULLIF(LTRIM(RTRIM(registration.TeamName)),N'') IS NOT NULL
)
UPDATE item SET TeamId=candidate.TeamId
FROM dbo.EventRegistrationItem item
INNER JOIN TeamCandidates candidate ON candidate.RegistrationItemId=item.Id AND candidate.CandidateCount=1;
UPDATE item SET TeamName=LEFT(COALESCE(NULLIF(LTRIM(RTRIM(registration.TeamName)),N''),team.Name),64)
FROM dbo.EventRegistrationItem item
INNER JOIN dbo.EventRegistration registration ON registration.Id=item.RegistrationId
LEFT JOIN dbo.Team team ON team.Id=item.TeamId
WHERE item.TeamName IS NULL
AND (NULLIF(LTRIM(RTRIM(registration.TeamName)),N'') IS NOT NULL OR team.Id IS NOT NULL);
;WITH OrderedTeamItems AS (
SELECT item.Id,ROW_NUMBER() OVER(PARTITION BY item.RegistrationId,item.ProjectId,
ISNULL(item.EventProjectGroupId,0),ISNULL(item.TeamId,0) ORDER BY item.CreatedTime,item.Id) AS RepairedTeamIndex
FROM dbo.EventRegistrationItem item
LEFT JOIN dbo.EventProject eventProject ON eventProject.Id=item.ProjectId
LEFT JOIN dbo.Project project ON project.Id=eventProject.ProjectId
WHERE item.TeamIndex IS NULL AND (project.ProjectType IN(1005,1006) OR item.ProjectTypeName LIKE N'%团队%')
)
UPDATE item SET TeamIndex=ordered.RepairedTeamIndex
FROM dbo.EventRegistrationItem item INNER JOIN OrderedTeamItems ordered ON ordered.Id=item.Id;
/* Project 项目:绑定计分规则 ScoreRuleId -> ScoreRule.Id */
IF COL_LENGTH('dbo.Project','ScoreRuleId') IS NULL ALTER TABLE dbo.Project ADD ScoreRuleId BIGINT NULL; -- 项目绑定的计分规则Id(ScoreRule.Id)
/* SysUser 扩展为“单位账号”:UnitName 单位名称;UnitPlatform 所属平台 0-系统用户 1-报名平台 2-打分系统,默认0 */
IF COL_LENGTH('dbo.SysUser','UnitName') IS NULL ALTER TABLE dbo.SysUser ADD UnitName NVARCHAR(128) NULL; -- 单位名称(单位账号扩展)
IF COL_LENGTH('dbo.SysUser','UnitPlatform') IS NULL ALTER TABLE dbo.SysUser ADD UnitPlatform INT NOT NULL CONSTRAINT DF_SysUser_UnitPlatform DEFAULT(0) WITH VALUES; -- 所属平台:0-赛事系统用户,1-报名平台,2-打分系统,默认0
/* EventResult 成绩表:关联场次/出场 SessionId、SessionEntryId */
IF COL_LENGTH('dbo.EventResult','SessionId') IS NULL ALTER TABLE dbo.EventResult ADD SessionId BIGINT NULL; -- 关联比赛场次Id(EventSession.Id)
IF COL_LENGTH('dbo.EventResult','SessionEntryId') IS NULL ALTER TABLE dbo.EventResult ADD SessionEntryId BIGINT NULL; -- 关联场次出场记录Id
/* 成绩四类分值与总分:难度/表现/规定/扣分 DECIMAL(18,4) 默认0,TotalScore 允许为空 */
IF COL_LENGTH('dbo.EventResult','DifficultyScore') IS NULL ALTER TABLE dbo.EventResult ADD DifficultyScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_DifficultyScore DEFAULT(0) WITH VALUES; -- 难度分 DECIMAL(18,4),默认0
IF COL_LENGTH('dbo.EventResult','PerformanceScore') IS NULL ALTER TABLE dbo.EventResult ADD PerformanceScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_PerformanceScore DEFAULT(0) WITH VALUES; -- 表现分 DECIMAL(18,4),默认0
IF COL_LENGTH('dbo.EventResult','RequiredScore') IS NULL ALTER TABLE dbo.EventResult ADD RequiredScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_RequiredScore DEFAULT(0) WITH VALUES; -- 规定分 DECIMAL(18,4),默认0
IF COL_LENGTH('dbo.EventResult','DeductionScore') IS NULL ALTER TABLE dbo.EventResult ADD DeductionScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_DeductionScore DEFAULT(0) WITH VALUES; -- 扣分 DECIMAL(18,4),默认0
IF COL_LENGTH('dbo.EventResult','TotalScore') IS NULL ALTER TABLE dbo.EventResult ADD TotalScore DECIMAL(18,4) NULL; -- 合计总分(允许为空)
/* 取消资格标记 IsDisqualified(默认0) 与原因码 DisqualifyReasonCode */
IF COL_LENGTH('dbo.EventResult','IsDisqualified') IS NULL ALTER TABLE dbo.EventResult ADD IsDisqualified BIT NOT NULL CONSTRAINT DF_EventResult_IsDisqualified DEFAULT(0) WITH VALUES; -- 是否取消比赛资格(默认0)
IF COL_LENGTH('dbo.EventResult','DisqualifyReasonCode') IS NULL ALTER TABLE dbo.EventResult ADD DisqualifyReasonCode NVARCHAR(64) NULL; -- 取消比赛资格原因编码
/* 成绩状态机 ResultStatus(0草稿/10待确认/20已确认/30已发布/40已投屏/90作废) 与版本号 ResultVersion(默认1) */
IF COL_LENGTH('dbo.EventResult','ResultStatus') IS NULL ALTER TABLE dbo.EventResult ADD ResultStatus INT NOT NULL CONSTRAINT DF_EventResult_ResultStatus DEFAULT(0) WITH VALUES; -- 成绩状态:0-草稿,10-待确认,20-已确认,30-已发布,40-已投屏,90-作废
IF COL_LENGTH('dbo.EventResult','ResultVersion') IS NULL ALTER TABLE dbo.EventResult ADD ResultVersion INT NOT NULL CONSTRAINT DF_EventResult_ResultVersion DEFAULT(1) WITH VALUES; -- 成绩版本号(默认1)
IF COL_LENGTH('dbo.EventResult','ReviewUserId') IS NULL ALTER TABLE dbo.EventResult ADD ReviewUserId BIGINT NULL; -- 成绩复核人
IF COL_LENGTH('dbo.EventResult','ReviewTime') IS NULL ALTER TABLE dbo.EventResult ADD ReviewTime DATETIME NULL; -- 成绩复核时间
/* 成绩计算过程快照 CalculationJson(NVARCHAR MAX),用于追溯与复算 */
IF COL_LENGTH('dbo.EventResult','CalculationJson') IS NULL ALTER TABLE dbo.EventResult ADD CalculationJson NVARCHAR(MAX) NULL; -- 成绩计算过程快照(JSON),用于追溯复算
/* ====================================================================================
[3/9] 改表结构 · 校验约束 / 外键 / 索引(均判空后创建,可重复执行)
3.1 CHECK 域值约束;3.2 外键(WITH CHECK 强校验存量);3.3 索引(UX_唯一/IX_非聚集,过滤索引仅约束未删除数据)
==================================================================================== */
PRINT N'[3/9] 改表结构:创建校验约束、外键与索引';
/* 3.1 CHECK 域值约束:限定枚举取值(含一期新增列 MiniProgramRole/UnitPlatform 与二期新表) */
IF OBJECT_ID('CK_AppUser_MiniProgramRole','C') IS NULL ALTER TABLE dbo.AppUser WITH CHECK ADD CONSTRAINT CK_AppUser_MiniProgramRole CHECK(MiniProgramRole IN(1,2,3));
IF OBJECT_ID('CK_SysUser_UnitPlatform','C') IS NULL ALTER TABLE dbo.SysUser WITH CHECK ADD CONSTRAINT CK_SysUser_UnitPlatform CHECK(UnitPlatform IN(0,1,2));
IF OBJECT_ID('CK_CheckinTask_CheckinNo','C') IS NULL ALTER TABLE dbo.CheckinTask WITH CHECK ADD CONSTRAINT CK_CheckinTask_CheckinNo CHECK(CheckinNo BETWEEN 1 AND 3 AND TotalRounds BETWEEN 1 AND 3 AND CurrentRound BETWEEN 1 AND 3);
IF OBJECT_ID('CK_EventSession_Time','C') IS NULL ALTER TABLE dbo.EventSession WITH CHECK ADD CONSTRAINT CK_EventSession_Time CHECK(EndTime IS NULL OR StartTime IS NULL OR EndTime>=StartTime);
IF OBJECT_ID('CK_ScoreRule_Version','C') IS NULL ALTER TABLE dbo.ScoreRule WITH CHECK ADD CONSTRAINT CK_ScoreRule_Version CHECK(RuleVersion>=1);
IF OBJECT_ID('CK_EventJudgeScoreSheet_Version','C') IS NULL ALTER TABLE dbo.EventJudgeScoreSheet WITH CHECK ADD CONSTRAINT CK_EventJudgeScoreSheet_Version CHECK(RuleVersion>=1 AND SheetVersion>=1);
IF OBJECT_ID('CK_EventScoreCorrection_Applicant','C') IS NULL ALTER TABLE dbo.EventScoreCorrection WITH CHECK ADD CONSTRAINT CK_EventScoreCorrection_Applicant CHECK((ApplyUserId IS NOT NULL AND ApplyRefereeId IS NULL) OR (ApplyUserId IS NULL AND ApplyRefereeId IS NOT NULL));
IF OBJECT_ID(N'dbo.CK_EventRegistrationItem_TeamIndex',N'C') IS NULL ALTER TABLE dbo.EventRegistrationItem WITH CHECK ADD CONSTRAINT CK_EventRegistrationItem_TeamIndex CHECK(TeamIndex IS NULL OR TeamIndex>0);
IF EXISTS(SELECT 1 FROM dbo.EventRegistrationItem item LEFT JOIN dbo.Team team ON team.Id=item.TeamId WHERE item.TeamId IS NOT NULL AND team.Id IS NULL) THROW 51024,N'EventRegistrationItem 存在无效 TeamId,停止升级。',1;
/* 3.2 外键:二期表引用一期表主键、以及二期表之间的引用关系 */
IF OBJECT_ID(N'dbo.[FK_RefereeApplication_Event]','F') IS NULL ALTER TABLE dbo.[RefereeApplication] WITH CHECK ADD CONSTRAINT [FK_RefereeApplication_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
IF OBJECT_ID(N'dbo.[FK_RefereeApplication_AppUser]','F') IS NULL ALTER TABLE dbo.[RefereeApplication] WITH CHECK ADD CONSTRAINT [FK_RefereeApplication_AppUser] FOREIGN KEY([RefereeUserId]) REFERENCES dbo.[AppUser]([Id]);
IF OBJECT_ID(N'dbo.[FK_CheckinTask_Event]','F') IS NULL ALTER TABLE dbo.[CheckinTask] WITH CHECK ADD CONSTRAINT [FK_CheckinTask_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
IF OBJECT_ID(N'dbo.[FK_CheckinRecord_Task]','F') IS NULL ALTER TABLE dbo.[CheckinRecord] WITH CHECK ADD CONSTRAINT [FK_CheckinRecord_Task] FOREIGN KEY([TaskId]) REFERENCES dbo.[CheckinTask]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventRegistrationItem_Team]','F') IS NULL ALTER TABLE dbo.[EventRegistrationItem] WITH CHECK ADD CONSTRAINT [FK_EventRegistrationItem_Team] FOREIGN KEY([TeamId]) REFERENCES dbo.[Team]([Id]);
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventRegistrationItem]') AND name=N'IX_EventRegistrationItem_RegistrationId_TeamId') CREATE NONCLUSTERED INDEX [IX_EventRegistrationItem_RegistrationId_TeamId] ON dbo.[EventRegistrationItem]([RegistrationId],[TeamId]) INCLUDE([EventProjectGroupId],[TeamIndex]) WHERE [TeamId] IS NOT NULL;
IF EXISTS(SELECT 1 FROM dbo.EventRegistrationItem WHERE TeamId IS NOT NULL AND TeamIndex IS NOT NULL AND DeleteMark=0 GROUP BY RegistrationId,ProjectId,EventProjectGroupId,TeamId,TeamIndex HAVING COUNT_BIG(1)>1) THROW 51025,N'EventRegistrationItem 存在重复的来源团队队伍序号,停止创建唯一索引。',1;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventRegistrationItem]') AND name=N'UX_EventRegistrationItem_SourceTeamSquad_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventRegistrationItem_SourceTeamSquad_Active] ON dbo.[EventRegistrationItem]([RegistrationId],[ProjectId],[EventProjectGroupId],[TeamId],[TeamIndex]) WHERE [TeamId] IS NOT NULL AND [TeamIndex] IS NOT NULL AND [DeleteMark]=0;
IF OBJECT_ID(N'dbo.[FK_Referee_AppUser]','F') IS NULL ALTER TABLE dbo.[Referee] WITH CHECK ADD CONSTRAINT [FK_Referee_AppUser] FOREIGN KEY([AppUserId]) REFERENCES dbo.[AppUser]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventReferee_Event]','F') IS NULL ALTER TABLE dbo.[EventReferee] WITH CHECK ADD CONSTRAINT [FK_EventReferee_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventReferee_Referee]','F') IS NULL ALTER TABLE dbo.[EventReferee] WITH CHECK ADD CONSTRAINT [FK_EventReferee_Referee] FOREIGN KEY([RefereeId]) REFERENCES dbo.[Referee]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeAssignment_Session]','F') IS NULL ALTER TABLE dbo.[EventJudgeAssignment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeAssignment_Session] FOREIGN KEY([SessionId]) REFERENCES dbo.[EventSession]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeAssignment_EventReferee]','F') IS NULL ALTER TABLE dbo.[EventJudgeAssignment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeAssignment_EventReferee] FOREIGN KEY([EventRefereeId]) REFERENCES dbo.[EventReferee]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventVenue_Event]','F') IS NULL ALTER TABLE dbo.[EventVenue] WITH CHECK ADD CONSTRAINT [FK_EventVenue_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventSession_Venue]','F') IS NULL ALTER TABLE dbo.[EventSession] WITH CHECK ADD CONSTRAINT [FK_EventSession_Venue] FOREIGN KEY([VenueId]) REFERENCES dbo.[EventVenue]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventSession_ScoreRule]','F') IS NULL ALTER TABLE dbo.[EventSession] WITH CHECK ADD CONSTRAINT [FK_EventSession_ScoreRule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventSessionEntry_Session]','F') IS NULL ALTER TABLE dbo.[EventSessionEntry] WITH CHECK ADD CONSTRAINT [FK_EventSessionEntry_Session] FOREIGN KEY([SessionId]) REFERENCES dbo.[EventSession]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_Entry]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_Assignment]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_Assignment] FOREIGN KEY([JudgeAssignmentId]) REFERENCES dbo.[EventJudgeAssignment]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_ScoreRule]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_ScoreRule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
IF OBJECT_ID(N'dbo.[FK_ScoreRuleItem_Rule]','F') IS NULL ALTER TABLE dbo.[ScoreRuleItem] WITH CHECK ADD CONSTRAINT [FK_ScoreRuleItem_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Task]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Task] FOREIGN KEY([JudgeTaskId]) REFERENCES dbo.[EventJudgeTask]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Entry]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Rule]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreAttachment_Sheet]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreAttachment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreAttachment_Sheet] FOREIGN KEY([ScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreDetail_Sheet]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreDetail] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreDetail_Sheet] FOREIGN KEY([ScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Result]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Result] FOREIGN KEY([EventResultId]) REFERENCES dbo.[EventResult]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Entry]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Rule]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_Entry]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_OriginalSheet]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_OriginalSheet] FOREIGN KEY([OriginalScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_ApplyReferee]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_ApplyReferee] FOREIGN KEY([ApplyRefereeId]) REFERENCES dbo.[Referee]([Id]);
IF OBJECT_ID(N'dbo.[FK_EventResultScreenCast_Event]','F') IS NULL ALTER TABLE dbo.[EventResultScreenCast] WITH CHECK ADD CONSTRAINT [FK_EventResultScreenCast_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
/* 3.3 索引:UX_ 唯一索引 / IX_ 非聚集索引;WHERE DeleteMark=0 的过滤索引仅约束有效数据 */
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[Referee]') AND name=N'UX_Referee_Mobile_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_Referee_Mobile_Active] ON dbo.[Referee]([Mobile]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[Referee]') AND name=N'IX_Referee_AppUserId') CREATE NONCLUSTERED INDEX [IX_Referee_AppUserId] ON dbo.[Referee]([AppUserId]) WHERE [AppUserId] IS NOT NULL AND [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventReferee]') AND name=N'UX_EventReferee_Event_Referee_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventReferee_Event_Referee_Active] ON dbo.[EventReferee]([EventId],[RefereeId]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[RefereeApplication]') AND name=N'IX_RefereeApplication_Event_Status') CREATE NONCLUSTERED INDEX [IX_RefereeApplication_Event_Status] ON dbo.[RefereeApplication]([EventId],[ApplicationStatus],[DeleteMark]);
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinTask]') AND name=N'UX_CheckinTask_Event_Checkin_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinTask_Event_Checkin_Active] ON dbo.[CheckinTask]([EventId],[CheckinNo]) WHERE [DeleteMark]=0;
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Round_Person_Active' AND REPLACE(REPLACE(filter_definition,'[',''),']','') NOT LIKE N'%RegistrationPersonId IS NOT NULL%') DROP INDEX [UX_CheckinRecord_Task_Round_Person_Active] ON dbo.[CheckinRecord];
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Session_Person_Active') DROP INDEX [UX_CheckinRecord_Task_Session_Person_Active] ON dbo.[CheckinRecord];
IF COLUMNPROPERTY(OBJECT_ID(N'dbo.[CheckinRecord]'),N'RegistrationPersonId','AllowsNull')=0 ALTER TABLE dbo.[CheckinRecord] ALTER COLUMN [RegistrationPersonId] BIGINT NULL;
UPDATE dbo.[CheckinRecord] SET [RegistrationPersonId]=NULL WHERE [RegistrationPersonId]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Round_Person_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinRecord_Task_Round_Person_Active] ON dbo.[CheckinRecord]([TaskId],[Round],[RegistrationPersonId]) WHERE [DeleteMark]=0 AND [RegistrationPersonId] IS NOT NULL;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Session_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinRecord_Task_Session_Active] ON dbo.[CheckinRecord]([TaskId],[SessionKey]) WHERE [DeleteMark]=0 AND [SessionKey] IS NOT NULL;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventVenue]') AND name=N'UX_EventVenue_Event_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventVenue_Event_Code_Active] ON dbo.[EventVenue]([EventId],[VenueCode]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSession]') AND name=N'UX_EventSession_Event_No_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSession_Event_No_Active] ON dbo.[EventSession]([EventId],[SessionNo]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSession]') AND name=N'IX_EventSession_Event_Status') CREATE NONCLUSTERED INDEX [IX_EventSession_Event_Status] ON dbo.[EventSession]([EventId],[SessionStatus],[StartTime]);
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSessionEntry]') AND name=N'UX_EventSessionEntry_Session_Order_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSessionEntry_Session_Order_Active] ON dbo.[EventSessionEntry]([SessionId],[PlayOrder]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSessionEntry]') AND name=N'UX_EventSessionEntry_Session_No_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSessionEntry_Session_No_Active] ON dbo.[EventSessionEntry]([SessionId],[EntryNo]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeAssignment]') AND name=N'UX_EventJudgeAssignment_Session_Role_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeAssignment_Session_Role_Active] ON dbo.[EventJudgeAssignment]([SessionId],[JudgeRole]) WHERE [DeleteMark]=0 AND [Status]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeTask]') AND name=N'IX_EventJudgeTask_User_Status') CREATE NONCLUSTERED INDEX [IX_EventJudgeTask_User_Status] ON dbo.[EventJudgeTask]([JudgeUserId],[TaskStatus],[ExpiresTime]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeTask]') AND name=N'UX_EventJudgeTask_Business_Version') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeTask_Business_Version] ON dbo.[EventJudgeTask]([SessionEntryId],[JudgeAssignmentId],[TaskVersion]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventScoreCorrection]') AND name=N'UX_EventScoreCorrection_OriginalSheet_Open') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventScoreCorrection_OriginalSheet_Open] ON dbo.[EventScoreCorrection]([OriginalScoreSheetId]) WHERE [DeleteMark]=0 AND [CorrectionStatus]>=0 AND [CorrectionStatus]<=30 AND [CorrectionStatus]<>20;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[ScoreRule]') AND name=N'UX_ScoreRule_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_ScoreRule_Code_Active] ON dbo.[ScoreRule]([RuleCode]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[ScoreRuleItem]') AND name=N'UX_ScoreRuleItem_Rule_Role_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_ScoreRuleItem_Rule_Role_Code_Active] ON dbo.[ScoreRuleItem]([ScoreRuleId],[JudgeRoleType],[ItemCode]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreSheet]') AND name=N'UX_EventJudgeScoreSheet_Idempotency') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreSheet_Idempotency] ON dbo.[EventJudgeScoreSheet]([IdempotencyKey]);
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreSheet]') AND name=N'UX_EventJudgeScoreSheet_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreSheet_Current] ON dbo.[EventJudgeScoreSheet]([SessionEntryId],[JudgeAssignmentId]) WHERE [IsCurrent]=1 AND [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]') AND name=N'UX_EventJudgeScoreAttachment_Idempotency') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreAttachment_Idempotency] ON dbo.[EventJudgeScoreAttachment]([ScoreSheetId],[IdempotencyKey]);
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]') AND name=N'UX_EventJudgeScoreAttachment_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreAttachment_Current] ON dbo.[EventJudgeScoreAttachment]([ScoreSheetId],[AttachmentType]) WHERE [IsCurrent]=1 AND [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreDetail]') AND name=N'IX_EventJudgeScoreDetail_Sheet') CREATE NONCLUSTERED INDEX [IX_EventJudgeScoreDetail_Sheet] ON dbo.[EventJudgeScoreDetail]([ScoreSheetId],[Sort]);
/* 集体项目按队员分别保存成绩;旧版仅以 SessionEntryId 唯一会导致第二名队员写入失败。 */
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResult]') AND name=N'UX_EventResult_SessionEntry_Active'
AND (INDEX_COL(N'dbo.EventResult',N'UX_EventResult_SessionEntry_Active',1)<>N'SessionEntryId'
OR ISNULL(INDEX_COL(N'dbo.EventResult',N'UX_EventResult_SessionEntry_Active',2),N'')<>N'RegistrationPersonId'))
DROP INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult];
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResult]') AND name=N'UX_EventResult_SessionEntry_Active')
CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult]([SessionEntryId],[RegistrationPersonId]) WHERE [SessionEntryId] IS NOT NULL AND [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultVersion]') AND name=N'UX_EventResultVersion_Result_Version') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResultVersion_Result_Version] ON dbo.[EventResultVersion]([EventResultId],[ResultVersion]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeMessage]') AND name=N'IX_EventJudgeMessage_Receiver_Unread') CREATE NONCLUSTERED INDEX [IX_EventJudgeMessage_Receiver_Unread] ON dbo.[EventJudgeMessage]([ReceiverUserId],[IsRead],[CreatedTime]) WHERE [DeleteMark]=0;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultScreenCast]') AND name=N'IX_EventResultScreenCast_Event_Time') CREATE NONCLUSTERED INDEX [IX_EventResultScreenCast_Event_Time] ON dbo.[EventResultScreenCast]([EventId],[CastTime]) WHERE [DeleteMark]=0;
/* 同一赛事同一场地只允许保留一条投出中的投屏:先把重复的历史投屏置为“已替换(20)”,再创建唯一筛选索引兜底 */
;WITH ActiveCast AS (
SELECT Id,ROW_NUMBER() OVER(PARTITION BY EventId,VenueId ORDER BY CastTime DESC,Id DESC) AS rn
FROM dbo.EventResultScreenCast WHERE CastStatus=0 AND DeleteMark=0
)
UPDATE sc SET CastStatus=20,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.EventResultScreenCast sc JOIN ActiveCast a ON a.Id=sc.Id WHERE a.rn>1;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultScreenCast]') AND name=N'UX_EventResultScreenCast_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResultScreenCast_Current] ON dbo.[EventResultScreenCast]([EventId],[VenueId]) WHERE [CastStatus]=0 AND [DeleteMark]=0;
/* ====================================================================================
[4/9] 插入数据 · 初始化种子(统一“存在则更新、缺失才插入”的幂等写法,可重复执行)
顺序:4.1 计分规则(8条) -> 规则Id映射 -> 4.2 规则明细(505条,其中503条启用) -> 4.3 角色 -> 4.4 账号管理按钮 -> 4.5 角色菜单授权
==================================================================================== */
PRINT N'[4/9] 插入数据:初始化计分规则、规则明细、角色与菜单';
/* 4.1 八条计分规则(固定Id:3000规定赛/3100个人花样/3200两人同步花样/3300四人同步花样/3400两人车轮跳花样/3500三人交互绳花样/3600四人交互绳花样/3700表演赛):先按 RuleCode 更新,再插入缺失,Id冲突则报错 */
CREATE TABLE #RuleSeed(SourceId BIGINT PRIMARY KEY,RuleCode NVARCHAR(64),RuleName NVARCHAR(128),JudgeRoleSchemaJson NVARCHAR(2000),RuleConfigJson NVARCHAR(4000),RuleVersion INT,Status INT,Sort INT,DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
INSERT #RuleSeed VALUES (3000,N'ROPE_PRESCRIBED',N'规定赛',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判","min":1,"max":1}]},{"title":"创意编排裁判","slots":[{"code":"CJ","name":"创意编排裁判","min":1,"max":3}]},{"title":"完成质量裁判","slots":[{"code":"CQ","name":"完成质量裁判","min":1,"max":3}]}]',N'{"ruleType":"PRESCRIBED","baseScore":100,"scoreDecimals":2,"deductionUnit":5,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"CJ","symbol":"T1","label":"创意分","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1},{"roleType":"CQ","symbol":"T2","label":"完成分","sourceField":"RequiredScore","targetField":"RequiredScore","aggregate":"avg","sign":1},{"roleType":"T","symbol":"T3","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1}],"tieBreakers":["TotalScore","RequiredScore","PerformanceScore"]}',1,0,1,0,1000,N'2026-08-19T00:00:00'),
(3100,N'ROPE_FREESTYLE_SINGLE',N'个人花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_SINGLE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,2,0,1000,N'2026-08-19T00:00:00'),
(3200,N'ROPE_FREESTYLE_DOUBLE_SYNC',N'两人同步花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_DOUBLE_SYNC","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,3,0,1000,N'2026-08-19T00:00:00'),
(3300,N'ROPE_FREESTYLE_QUAD_SYNC',N'四人同步花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_QUAD_SYNC","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,4,0,1000,N'2026-08-19T00:00:00'),
(3400,N'ROPE_FREESTYLE_WHEEL_PAIR',N'两人车轮跳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DA","name":"难度裁判-DA(运动员A难度裁判)","min":1,"max":2},{"code":"DB","name":"难度裁判-DB(运动员B难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WHEEL","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":2,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DA","symbol":"dA","label":"运动员A难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DB","symbol":"dB","label":"运动员B难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"Q","label":"规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"max","sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,5,0,1000,N'2026-08-19T00:00:00'),
(3500,N'ROPE_FREESTYLE_WIRE_TRIPLE',N'三人交互绳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DJ","name":"难度裁判-DJ(跳绳运动员难度裁判)","min":1,"max":2},{"code":"DT","name":"难度裁判-DT(摇绳运动员难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WIRE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":1,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DJ","symbol":"dJ","label":"跳绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1.4},{"roleType":"DT","symbol":"dT","label":"摇绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.033},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","PerformanceScore","DifficultyScore"]}',1,0,6,0,1000,N'2026-08-19T00:00:00'),
(3600,N'ROPE_FREESTYLE_WIRE_QUAD',N'四人交互绳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DJ","name":"难度裁判-DJ(跳绳运动员难度裁判)","min":1,"max":2},{"code":"DT","name":"难度裁判-DT(摇绳运动员难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WIRE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":1,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DJ","symbol":"dJ","label":"跳绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1.4},{"roleType":"DT","symbol":"dT","label":"摇绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.033},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","PerformanceScore","DifficultyScore"]}',1,0,7,0,1000,N'2026-08-19T00:00:00'),
(3700,N'ROPE_SHOWCASE',N'表演赛(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DGA","name":"难度裁判-A组裁判","min":1,"max":3,"categories":["DP+DM (个人绳)","DA (车轮跳)","DT (交互绳)","DT (旅行跳)"]},{"code":"DGB","name":"难度裁判-B组裁判","min":1,"max":3,"categories":["DR (个人绳)","DB (车轮跳)","DJ (交互绳)","DL (长绳)"]}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":3}]}]',N'{"ruleType":"SHOWCASE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":2,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DGA","symbol":"A","label":"A组难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DGB","symbol":"B","label":"B组难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"Q","label":"规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"max","sign":1,"factor":"Q","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,8,0,1000,N'2026-08-19T00:00:00');
-- 两人/四人同步花样由主裁录入互动配合,缺失数 qI 与 DP/DM/DR 一同参与 Q。
UPDATE #RuleSeed
SET RuleConfigJson=JSON_MODIFY(
RuleConfigJson,
N'append $.roleAggregations',
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","sign":1,"factor":"Q","factorWeight":0.025}'))
WHERE RuleCode IN (N'ROPE_FREESTYLE_DOUBLE_SYNC',N'ROPE_FREESTYLE_QUAD_SYNC');
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,
RuleVersion=s.RuleVersion,Status=s.Status,Sort=s.Sort,DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.ScoreRule r JOIN #RuleSeed s ON s.RuleCode=r.RuleCode AND r.DeleteMark=0
WHERE EXISTS(SELECT r.RuleName,r.JudgeRoleSchemaJson,r.RuleConfigJson,r.RuleVersion,r.Status,r.Sort,r.DeleteMark
EXCEPT SELECT s.RuleName,s.JudgeRoleSchemaJson,s.RuleConfigJson,s.RuleVersion,s.Status,s.Sort,CONVERT(BIT,0));
INSERT dbo.ScoreRule(Id,RuleCode,RuleName,JudgeRoleSchemaJson,RuleConfigJson,RuleVersion,Status,Sort,DeleteMark,CreatedUserId,CreatedTime)
SELECT s.SourceId,s.RuleCode,s.RuleName,s.JudgeRoleSchemaJson,s.RuleConfigJson,s.RuleVersion,s.Status,s.Sort,s.DeleteMark,s.CreatedUserId,s.CreatedTime
FROM #RuleSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.RuleCode=s.RuleCode AND r.DeleteMark=0)
AND NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.Id=s.SourceId);
IF EXISTS(SELECT 1 FROM #RuleSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.RuleCode=s.RuleCode AND r.DeleteMark=0))
THROW 51003,N'计分规则种子ID被占用且规则编码不存在,无法安全初始化。',1;
/* 规则“源Id->实际Id”映射:兼容目标库 Id 被占用时按 RuleCode 对齐,供规则明细写入外键 ScoreRuleId */
CREATE TABLE #RuleMap(SourceId BIGINT PRIMARY KEY,TargetId BIGINT NOT NULL);
INSERT #RuleMap SELECT s.SourceId,r.Id FROM #RuleSeed s JOIN dbo.ScoreRule r ON r.RuleCode=s.RuleCode AND r.DeleteMark=0;
/* 4.2 计分规则评分项明细(505 条种子,其中 503 条启用;Id段 30xx规定赛/31xx个人花样/32xx两人同步花样/33xx四人同步花样/34xx两人车轮跳花样/35xx三人交互绳花样/36xx四人交互绳花样/37xx表演赛):同样先更新后插入 */
CREATE TABLE #ItemSeed(Id BIGINT PRIMARY KEY,SourceRuleId BIGINT,JudgeRoleType NVARCHAR(16),ItemCode NVARCHAR(64),ItemName NVARCHAR(128),ItemType INT,ParentItemCode NVARCHAR(64),UnitValue DECIMAL(18,4),MinValue DECIMAL(18,4),MaxValue DECIMAL(18,4),StepValue DECIMAL(18,4),DefaultValue DECIMAL(18,4),CalcMode INT,ScoreDimension INT,IsRequired BIT,ExtensionJson NVARCHAR(2000),Sort INT,DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
INSERT #ItemSeed VALUES (3001,3000,N'CJ',N'CJ_ARRANGE',N'过渡连接、成套创编、场地运用',6,NULL,1,0,10,1,0,1,2,1,N'{"inputMode":"score","fineTuneStep":0.5}',1,0,1000,N'2026-08-19T00:00:00'),
(3002,3000,N'CJ',N'CJ_EFFECT',N'现场表现效果',6,NULL,1,0,10,1,0,1,2,1,N'{"inputMode":"score","fineTuneStep":0.5}',2,0,1000,N'2026-08-19T00:00:00'),
(3003,3000,N'CQ',N'CQ_ACCURACY',N'动作的准确性',6,NULL,1,0,30,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":30,"team":20}}',1,0,1000,N'2026-08-19T00:00:00'),
(3004,3000,N'CQ',N'CQ_PROFICIENCY',N'动作的熟练性',6,NULL,1,0,20,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":20,"team":15}}',2,0,1000,N'2026-08-19T00:00:00'),
(3005,3000,N'CQ',N'CQ_SYNCHRONY',N'动作的合拍性',6,NULL,1,0,30,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":30,"team":15}}',3,0,1000,N'2026-08-19T00:00:00'),
(3006,3000,N'CQ',N'CQ_ABILITY_CONSISTENCY',N'运动能力一致性',6,NULL,1,0,15,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"scopes":["team"],"maxByScope":{"team":15}}',4,0,1000,N'2026-08-19T00:00:00'),
(3007,3000,N'CQ',N'CQ_SKILL_CONSISTENCY',N'表演技巧一致性',6,NULL,1,0,15,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"scopes":["team"],"maxByScope":{"team":15}}',5,0,1000,N'2026-08-19T00:00:00'),
(3008,3000,N'T',N'T_DED_ROPE_SALUTE',N'赛前或赛后未行绳礼(每队)',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',1,0,1000,N'2026-08-19T00:00:00'),
(3009,3000,N'T',N'T_DED_APPEARANCE',N'运动员的头发、着装、仪容不符合规定,佩戴饰物、饰物掉落',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',2,0,1000,N'2026-08-19T00:00:00'),
(3010,3000,N'T',N'T_DED_CHANGE_1X8',N'更改1×8拍规定元素内容',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',3,0,1000,N'2026-08-19T00:00:00'),
(3011,3000,N'T',N'T_DED_INTERRUPT',N'套路中断4秒以上',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',4,0,1000,N'2026-08-19T00:00:00'),
(3012,3000,N'T',N'T_DED_AREA_FOUL',N'场地犯规(踩线、出界)',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',5,0,1000,N'2026-08-19T00:00:00'),
(3013,3000,N'T',N'T_DQ_CALL_TIMEOUT',N'运动员(队)被叫超过60秒未上场',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',1,0,1000,N'2026-08-19T00:00:00'),
(3014,3000,N'T',N'T_DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',2,0,1000,N'2026-08-19T00:00:00'),
(3015,3000,N'T',N'T_DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',3,0,1000,N'2026-08-19T00:00:00'),
(3016,3000,N'T',N'T_DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',4,0,1000,N'2026-08-19T00:00:00'),
(3017,3000,N'T',N'T_DQ_MISCONDUCT',N'比赛中嚼口香糖、不文明用语等',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',5,0,1000,N'2026-08-19T00:00:00'),
(3018,3000,N'T',N'T_DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',6,0,1000,N'2026-08-19T00:00:00'),
(3019,3000,N'T',N'T_DQ_CHANGE_4X8',N'更改4×8拍规定元素内容',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',7,0,1000,N'2026-08-19T00:00:00'),
(3101,3100,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
(3102,3100,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
(3103,3100,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
(3104,3100,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
(3105,3100,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
(3106,3100,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
(3107,3100,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
(3108,3100,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
(3109,3100,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
(3110,3100,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
(3111,3100,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3112,3100,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3113,3100,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
(3114,3100,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
(3115,3100,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
(3116,3100,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
(3117,3100,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
(3118,3100,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
(3119,3100,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
(3120,3100,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
(3121,3100,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
(3122,3100,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
(3123,3100,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
(3124,3100,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
(3125,3100,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
(3126,3100,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
(3127,3100,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
(3128,3100,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
(3129,3100,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
(3130,3100,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
(3131,3100,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
(3132,3100,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
(3133,3100,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
(3134,3100,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
(3135,3100,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
(3136,3100,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
(3137,3100,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
(3138,3100,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
(3139,3100,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
(3140,3100,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
(3141,3100,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
(3142,3100,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
(3143,3100,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
(3144,3100,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
(3145,3100,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
(3146,3100,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
(3147,3100,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
(3148,3100,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
(3149,3100,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
(3150,3100,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3151,3100,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3152,3100,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3154,3100,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3155,3100,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,54,0,1000,N'2026-08-19T00:00:00'),
(3156,3100,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
(3157,3100,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
(3158,3100,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
(3159,3100,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
(3160,3100,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
(3161,3100,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
(3162,3100,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
(3163,3100,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3164,3100,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3165,3100,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3166,3100,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3167,3100,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3201,3200,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
(3202,3200,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
(3203,3200,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
(3204,3200,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
(3205,3200,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
(3206,3200,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
(3207,3200,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
(3208,3200,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
(3209,3200,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
(3210,3200,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
(3211,3200,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3212,3200,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3213,3200,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
(3214,3200,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
(3215,3200,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
(3216,3200,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
(3217,3200,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
(3218,3200,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
(3219,3200,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
(3220,3200,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
(3221,3200,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
(3222,3200,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
(3223,3200,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
(3224,3200,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
(3225,3200,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
(3226,3200,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
(3227,3200,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
(3228,3200,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
(3229,3200,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
(3230,3200,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
(3231,3200,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
(3232,3200,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
(3233,3200,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
(3234,3200,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
(3235,3200,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
(3236,3200,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
(3237,3200,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
(3238,3200,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
(3239,3200,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
(3240,3200,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
(3241,3200,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
(3242,3200,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
(3243,3200,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
(3244,3200,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
(3245,3200,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
(3246,3200,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
(3247,3200,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
(3248,3200,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
(3249,3200,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
(3250,3200,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3251,3200,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3252,3200,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3253,3200,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',53,1,1000,N'2026-08-19T00:00:00'),
(3254,3200,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3255,3200,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
(3256,3200,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
(3257,3200,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
(3258,3200,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
(3259,3200,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
(3260,3200,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
(3261,3200,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
(3262,3200,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,62,0,1000,N'2026-08-19T00:00:00'),
(3263,3200,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3264,3200,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3265,3200,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3266,3200,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3267,3200,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3268,3200,N'T',N'REQUIRED_MISSING',N'互动配合规定元素缺失(个)',2,NULL,NULL,0,4,0.5,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',55,0,1000,N'2026-08-19T00:00:00'),
(3269,3200,N'T',N'REQ_INTERACTION_N3_PLUS',N'互动配合(3级及以上)',2,NULL,1,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',53,0,1000,N'2026-08-19T00:00:00'),
(3270,3200,N'T',N'REQ_INTERACTION_N2_MINUS',N'互动配合(2级及以下)',2,NULL,0.5,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',54,0,1000,N'2026-08-19T00:00:00'),
(3301,3300,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
(3302,3300,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
(3303,3300,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
(3304,3300,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
(3305,3300,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
(3306,3300,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
(3307,3300,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
(3308,3300,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
(3309,3300,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
(3310,3300,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
(3311,3300,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3312,3300,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3313,3300,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
(3314,3300,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
(3315,3300,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
(3316,3300,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
(3317,3300,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
(3318,3300,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
(3319,3300,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
(3320,3300,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
(3321,3300,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
(3322,3300,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
(3323,3300,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
(3324,3300,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
(3325,3300,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
(3326,3300,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
(3327,3300,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
(3328,3300,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
(3329,3300,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
(3330,3300,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
(3331,3300,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
(3332,3300,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
(3333,3300,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
(3334,3300,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
(3335,3300,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
(3336,3300,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
(3337,3300,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
(3338,3300,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
(3339,3300,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
(3340,3300,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
(3341,3300,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
(3342,3300,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
(3343,3300,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
(3344,3300,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
(3345,3300,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
(3346,3300,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
(3347,3300,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
(3348,3300,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
(3349,3300,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
(3350,3300,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3351,3300,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3352,3300,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3353,3300,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',53,1,1000,N'2026-08-19T00:00:00'),
(3354,3300,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3355,3300,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
(3356,3300,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
(3357,3300,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
(3358,3300,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
(3359,3300,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
(3360,3300,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
(3361,3300,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
(3362,3300,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,62,0,1000,N'2026-08-19T00:00:00'),
(3363,3300,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3364,3300,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3365,3300,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
(3366,3300,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
(3367,3300,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
(3368,3300,N'T',N'REQUIRED_MISSING',N'互动配合规定元素缺失(个)',2,NULL,NULL,0,4,0.5,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',55,0,1000,N'2026-08-19T00:00:00'),
(3369,3300,N'T',N'REQ_INTERACTION_N3_PLUS',N'互动配合(3级及以上)',2,NULL,1,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',53,0,1000,N'2026-08-19T00:00:00'),
(3370,3300,N'T',N'REQ_INTERACTION_N2_MINUS',N'互动配合(2级及以下)',2,NULL,0.5,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',54,0,1000,N'2026-08-19T00:00:00'),
(3401,3400,N'DA',N'DIFF_LEVEL_0',N'0 级',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',1,0,1000,N'2026-08-19T00:00:00'),
(3402,3400,N'DA',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',2,0,1000,N'2026-08-19T00:00:00'),
(3403,3400,N'DA',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',3,0,1000,N'2026-08-19T00:00:00'),
(3404,3400,N'DA',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',4,0,1000,N'2026-08-19T00:00:00'),
(3405,3400,N'DA',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',5,0,1000,N'2026-08-19T00:00:00'),
(3406,3400,N'DA',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',6,0,1000,N'2026-08-19T00:00:00'),
(3407,3400,N'DA',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',7,0,1000,N'2026-08-19T00:00:00'),
(3408,3400,N'DA',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',8,0,1000,N'2026-08-19T00:00:00'),
(3409,3400,N'DA',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',9,0,1000,N'2026-08-19T00:00:00'),
(3410,3400,N'DA',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',10,0,1000,N'2026-08-19T00:00:00'),
(3411,3400,N'DB',N'DIFF_LEVEL_0',N'0 级',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',11,0,1000,N'2026-08-19T00:00:00'),
(3412,3400,N'DB',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',12,0,1000,N'2026-08-19T00:00:00'),
(3413,3400,N'DB',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',13,0,1000,N'2026-08-19T00:00:00'),
(3414,3400,N'DB',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',14,0,1000,N'2026-08-19T00:00:00'),
(3415,3400,N'DB',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',15,0,1000,N'2026-08-19T00:00:00'),
(3416,3400,N'DB',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',16,0,1000,N'2026-08-19T00:00:00'),
(3417,3400,N'DB',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',17,0,1000,N'2026-08-19T00:00:00'),
(3418,3400,N'DB',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',18,0,1000,N'2026-08-19T00:00:00'),
(3419,3400,N'DB',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',19,0,1000,N'2026-08-19T00:00:00'),
(3420,3400,N'DB',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',20,0,1000,N'2026-08-19T00:00:00'),
(3421,3400,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
(3422,3400,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
(3423,3400,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
(3424,3400,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
(3425,3400,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
(3426,3400,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
(3427,3400,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
(3428,3400,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
(3429,3400,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
(3430,3400,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
(3431,3400,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
(3432,3400,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
(3433,3400,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
(3434,3400,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
(3435,3400,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
(3436,3400,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
(3437,3400,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
(3438,3400,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
(3439,3400,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
(3440,3400,N'T',N'REQ_STRENGTH_GYMNASTICS',N'力量和体操',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',40,0,1000,N'2026-08-19T00:00:00'),
(3441,3400,N'T',N'REQ_MULTIPLE_ROPE',N'多摇',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',41,0,1000,N'2026-08-19T00:00:00'),
(3442,3400,N'T',N'REQ_ROPE_MANIPULATION',N'绳子运用',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',42,0,1000,N'2026-08-19T00:00:00'),
(3443,3400,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',43,0,1000,N'2026-08-19T00:00:00'),
(3444,3400,N'T',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',44,0,1000,N'2026-08-19T00:00:00'),
(3445,3400,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
(3446,3400,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
(3447,3400,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
(3448,3400,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,48,0,1000,N'2026-08-19T00:00:00'),
(3449,3400,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,49,0,1000,N'2026-08-19T00:00:00'),
(3450,3400,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,50,0,1000,N'2026-08-19T00:00:00'),
(3451,3400,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,51,0,1000,N'2026-08-19T00:00:00'),
(3452,3400,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,52,0,1000,N'2026-08-19T00:00:00'),
(3501,3500,N'DJ',N'DIFF_LEVEL_0',N'0 级(间歇)',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',1,0,1000,N'2026-08-19T00:00:00'),
(3502,3500,N'DJ',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',2,0,1000,N'2026-08-19T00:00:00'),
(3503,3500,N'DJ',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',3,0,1000,N'2026-08-19T00:00:00'),
(3504,3500,N'DJ',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',4,0,1000,N'2026-08-19T00:00:00'),
(3505,3500,N'DJ',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',5,0,1000,N'2026-08-19T00:00:00'),
(3506,3500,N'DJ',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',6,0,1000,N'2026-08-19T00:00:00'),
(3507,3500,N'DJ',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',7,0,1000,N'2026-08-19T00:00:00'),
(3508,3500,N'DJ',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',8,0,1000,N'2026-08-19T00:00:00'),
(3509,3500,N'DJ',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',9,0,1000,N'2026-08-19T00:00:00'),
(3510,3500,N'DJ',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',10,0,1000,N'2026-08-19T00:00:00'),
(3511,3500,N'DJ',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',11,0,1000,N'2026-08-19T00:00:00'),
(3512,3500,N'DJ',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',12,0,1000,N'2026-08-19T00:00:00'),
(3513,3500,N'DJ',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',13,0,1000,N'2026-08-19T00:00:00'),
(3514,3500,N'DJ',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',14,0,1000,N'2026-08-19T00:00:00'),
(3515,3500,N'DJ',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',15,0,1000,N'2026-08-19T00:00:00'),
(3516,3500,N'DJ',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',16,0,1000,N'2026-08-19T00:00:00'),
(3517,3500,N'DT',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',17,0,1000,N'2026-08-19T00:00:00'),
(3518,3500,N'DT',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',18,0,1000,N'2026-08-19T00:00:00'),
(3519,3500,N'DT',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',19,0,1000,N'2026-08-19T00:00:00'),
(3520,3500,N'DT',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',20,0,1000,N'2026-08-19T00:00:00'),
(3521,3500,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
(3522,3500,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
(3523,3500,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
(3524,3500,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
(3525,3500,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
(3526,3500,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
(3527,3500,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
(3528,3500,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
(3529,3500,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
(3530,3500,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
(3531,3500,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
(3532,3500,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
(3533,3500,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
(3534,3500,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
(3535,3500,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
(3536,3500,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
(3537,3500,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
(3538,3500,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
(3539,3500,N'T',N'T_SPACE_VIOLATION',N'空间违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
(3540,3500,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,40,0,1000,N'2026-08-19T00:00:00'),
(3541,3500,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,41,0,1000,N'2026-08-19T00:00:00'),
(3542,3500,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,42,0,1000,N'2026-08-19T00:00:00'),
(3543,3500,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,43,0,1000,N'2026-08-19T00:00:00'),
(3544,3500,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,44,0,1000,N'2026-08-19T00:00:00'),
(3545,3500,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
(3546,3500,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
(3547,3500,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
(3548,3500,N'DT',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',21,0,1000,N'2026-08-19T00:00:00'),
(3549,3500,N'DT',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',22,0,1000,N'2026-08-19T00:00:00'),
(3550,3500,N'DT',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',23,0,1000,N'2026-08-19T00:00:00'),
(3551,3500,N'DT',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',24,0,1000,N'2026-08-19T00:00:00'),
(3552,3500,N'DT',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',25,0,1000,N'2026-08-19T00:00:00'),
(3553,3500,N'DT',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',26,0,1000,N'2026-08-19T00:00:00'),
(3554,3500,N'DT',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',27,0,1000,N'2026-08-19T00:00:00'),
(3555,3500,N'DT',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',28,0,1000,N'2026-08-19T00:00:00'),
(3556,3500,N'DT',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',29,0,1000,N'2026-08-19T00:00:00'),
(3557,3500,N'DT',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',30,0,1000,N'2026-08-19T00:00:00'),
(3558,3500,N'DT',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',31,0,1000,N'2026-08-19T00:00:00'),
(3601,3600,N'DJ',N'DIFF_LEVEL_0',N'0 级(间歇)',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',1,0,1000,N'2026-08-19T00:00:00'),
(3602,3600,N'DJ',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',2,0,1000,N'2026-08-19T00:00:00'),
(3603,3600,N'DJ',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',3,0,1000,N'2026-08-19T00:00:00'),
(3604,3600,N'DJ',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',4,0,1000,N'2026-08-19T00:00:00'),
(3605,3600,N'DJ',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',5,0,1000,N'2026-08-19T00:00:00'),
(3606,3600,N'DJ',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',6,0,1000,N'2026-08-19T00:00:00'),
(3607,3600,N'DJ',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',7,0,1000,N'2026-08-19T00:00:00'),
(3608,3600,N'DJ',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',8,0,1000,N'2026-08-19T00:00:00'),
(3609,3600,N'DJ',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',9,0,1000,N'2026-08-19T00:00:00'),
(3610,3600,N'DJ',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',10,0,1000,N'2026-08-19T00:00:00'),
(3611,3600,N'DJ',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',11,0,1000,N'2026-08-19T00:00:00'),
(3612,3600,N'DJ',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',12,0,1000,N'2026-08-19T00:00:00'),
(3613,3600,N'DJ',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',13,0,1000,N'2026-08-19T00:00:00'),
(3614,3600,N'DJ',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',14,0,1000,N'2026-08-19T00:00:00'),
(3615,3600,N'DJ',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',15,0,1000,N'2026-08-19T00:00:00'),
(3616,3600,N'DJ',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',16,0,1000,N'2026-08-19T00:00:00'),
(3617,3600,N'DT',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',17,0,1000,N'2026-08-19T00:00:00'),
(3618,3600,N'DT',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',18,0,1000,N'2026-08-19T00:00:00'),
(3619,3600,N'DT',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',19,0,1000,N'2026-08-19T00:00:00'),
(3620,3600,N'DT',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',20,0,1000,N'2026-08-19T00:00:00'),
(3621,3600,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
(3622,3600,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
(3623,3600,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
(3624,3600,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
(3625,3600,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
(3626,3600,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
(3627,3600,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
(3628,3600,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
(3629,3600,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
(3630,3600,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
(3631,3600,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
(3632,3600,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
(3633,3600,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
(3634,3600,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
(3635,3600,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
(3636,3600,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
(3637,3600,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
(3638,3600,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
(3639,3600,N'T',N'T_SPACE_VIOLATION',N'空间违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
(3640,3600,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,40,0,1000,N'2026-08-19T00:00:00'),
(3641,3600,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,41,0,1000,N'2026-08-19T00:00:00'),
(3642,3600,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,42,0,1000,N'2026-08-19T00:00:00'),
(3643,3600,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,43,0,1000,N'2026-08-19T00:00:00'),
(3644,3600,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,44,0,1000,N'2026-08-19T00:00:00'),
(3645,3600,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
(3646,3600,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
(3647,3600,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
(3648,3600,N'DT',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',21,0,1000,N'2026-08-19T00:00:00'),
(3649,3600,N'DT',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',22,0,1000,N'2026-08-19T00:00:00'),
(3650,3600,N'DT',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',23,0,1000,N'2026-08-19T00:00:00'),
(3651,3600,N'DT',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',24,0,1000,N'2026-08-19T00:00:00'),
(3652,3600,N'DT',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',25,0,1000,N'2026-08-19T00:00:00'),
(3653,3600,N'DT',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',26,0,1000,N'2026-08-19T00:00:00'),
(3654,3600,N'DT',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',27,0,1000,N'2026-08-19T00:00:00'),
(3655,3600,N'DT',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',28,0,1000,N'2026-08-19T00:00:00'),
(3656,3600,N'DT',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',29,0,1000,N'2026-08-19T00:00:00'),
(3657,3600,N'DT',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',30,0,1000,N'2026-08-19T00:00:00'),
(3658,3600,N'DT',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',31,0,1000,N'2026-08-19T00:00:00'),
(3701,3700,N'DGA',N'DP_DM_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',1,0,1000,N'2026-08-19T00:00:00'),
(3702,3700,N'DGA',N'DP_DM_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',2,0,1000,N'2026-08-19T00:00:00'),
(3703,3700,N'DGA',N'DP_DM_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',3,0,1000,N'2026-08-19T00:00:00'),
(3704,3700,N'DGA',N'DP_DM_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',4,0,1000,N'2026-08-19T00:00:00'),
(3705,3700,N'DGA',N'DP_DM_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',5,0,1000,N'2026-08-19T00:00:00'),
(3706,3700,N'DGA',N'DP_DM_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',6,0,1000,N'2026-08-19T00:00:00'),
(3707,3700,N'DGA',N'DP_DM_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',7,0,1000,N'2026-08-19T00:00:00'),
(3708,3700,N'DGA',N'DP_DM_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',8,0,1000,N'2026-08-19T00:00:00'),
(3709,3700,N'DGA',N'DP_DM_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',9,0,1000,N'2026-08-19T00:00:00'),
(3710,3700,N'DGA',N'DP_DM_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',10,0,1000,N'2026-08-19T00:00:00'),
(3711,3700,N'DGA',N'DA_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',11,0,1000,N'2026-08-19T00:00:00'),
(3712,3700,N'DGA',N'DA_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',12,0,1000,N'2026-08-19T00:00:00'),
(3713,3700,N'DGA',N'DA_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',13,0,1000,N'2026-08-19T00:00:00'),
(3714,3700,N'DGA',N'DA_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',14,0,1000,N'2026-08-19T00:00:00'),
(3715,3700,N'DGA',N'DA_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',15,0,1000,N'2026-08-19T00:00:00'),
(3716,3700,N'DGA',N'DA_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',16,0,1000,N'2026-08-19T00:00:00'),
(3717,3700,N'DGA',N'DA_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',17,0,1000,N'2026-08-19T00:00:00'),
(3718,3700,N'DGA',N'DA_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',18,0,1000,N'2026-08-19T00:00:00'),
(3719,3700,N'DGA',N'DA_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',19,0,1000,N'2026-08-19T00:00:00'),
(3720,3700,N'DGA',N'DA_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',20,0,1000,N'2026-08-19T00:00:00'),
(3721,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',21,0,1000,N'2026-08-19T00:00:00'),
(3722,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',22,0,1000,N'2026-08-19T00:00:00'),
(3723,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',23,0,1000,N'2026-08-19T00:00:00'),
(3724,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',24,0,1000,N'2026-08-19T00:00:00'),
(3725,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',25,0,1000,N'2026-08-19T00:00:00'),
(3726,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',26,0,1000,N'2026-08-19T00:00:00'),
(3727,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',27,0,1000,N'2026-08-19T00:00:00'),
(3728,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',28,0,1000,N'2026-08-19T00:00:00'),
(3729,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',29,0,1000,N'2026-08-19T00:00:00'),
(3730,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',30,0,1000,N'2026-08-19T00:00:00'),
(3731,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_0',N'0 级',1,NULL,1.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',31,0,1000,N'2026-08-19T00:00:00'),
(3732,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,1.2247,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',32,0,1000,N'2026-08-19T00:00:00'),
(3733,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_1',N'1 级',1,NULL,1.5,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',33,0,1000,N'2026-08-19T00:00:00'),
(3734,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_2',N'2 级',1,NULL,2.25,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',34,0,1000,N'2026-08-19T00:00:00'),
(3735,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_3',N'3 级',1,NULL,3.375,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',35,0,1000,N'2026-08-19T00:00:00'),
(3736,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',36,0,1000,N'2026-08-19T00:00:00'),
(3737,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',37,0,1000,N'2026-08-19T00:00:00'),
(3738,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_6',N'6 级',1,NULL,11.3906,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',38,0,1000,N'2026-08-19T00:00:00'),
(3739,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_7',N'7 级',1,NULL,17.0859,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',39,0,1000,N'2026-08-19T00:00:00'),
(3740,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_8',N'8 级',1,NULL,25.6289,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',40,0,1000,N'2026-08-19T00:00:00'),
(3741,3700,N'DGB',N'DR_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',41,0,1000,N'2026-08-19T00:00:00'),
(3742,3700,N'DGB',N'DR_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',42,0,1000,N'2026-08-19T00:00:00'),
(3743,3700,N'DGB',N'DR_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',43,0,1000,N'2026-08-19T00:00:00'),
(3744,3700,N'DGB',N'DR_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',44,0,1000,N'2026-08-19T00:00:00'),
(3745,3700,N'DGB',N'DR_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',45,0,1000,N'2026-08-19T00:00:00'),
(3746,3700,N'DGB',N'DR_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',46,0,1000,N'2026-08-19T00:00:00'),
(3747,3700,N'DGB',N'DR_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',47,0,1000,N'2026-08-19T00:00:00'),
(3748,3700,N'DGB',N'DR_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',48,0,1000,N'2026-08-19T00:00:00'),
(3749,3700,N'DGB',N'DR_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',49,0,1000,N'2026-08-19T00:00:00'),
(3750,3700,N'DGB',N'DR_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',50,0,1000,N'2026-08-19T00:00:00'),
(3751,3700,N'DGB',N'DB_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',51,0,1000,N'2026-08-19T00:00:00'),
(3752,3700,N'DGB',N'DB_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',52,0,1000,N'2026-08-19T00:00:00'),
(3753,3700,N'DGB',N'DB_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',53,0,1000,N'2026-08-19T00:00:00'),
(3754,3700,N'DGB',N'DB_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',54,0,1000,N'2026-08-19T00:00:00'),
(3755,3700,N'DGB',N'DB_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',55,0,1000,N'2026-08-19T00:00:00'),
(3756,3700,N'DGB',N'DB_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',56,0,1000,N'2026-08-19T00:00:00'),
(3757,3700,N'DGB',N'DB_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',57,0,1000,N'2026-08-19T00:00:00'),
(3758,3700,N'DGB',N'DB_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',58,0,1000,N'2026-08-19T00:00:00'),
(3759,3700,N'DGB',N'DB_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',59,0,1000,N'2026-08-19T00:00:00'),
(3760,3700,N'DGB',N'DB_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',60,0,1000,N'2026-08-19T00:00:00'),
(3761,3700,N'DGB',N'DJ_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',61,0,1000,N'2026-08-19T00:00:00'),
(3762,3700,N'DGB',N'DJ_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',62,0,1000,N'2026-08-19T00:00:00'),
(3763,3700,N'DGB',N'DJ_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',63,0,1000,N'2026-08-19T00:00:00'),
(3764,3700,N'DGB',N'DJ_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',64,0,1000,N'2026-08-19T00:00:00'),
(3765,3700,N'DGB',N'DJ_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',65,0,1000,N'2026-08-19T00:00:00'),
(3766,3700,N'DGB',N'DJ_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',66,0,1000,N'2026-08-19T00:00:00'),
(3767,3700,N'DGB',N'DJ_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',67,0,1000,N'2026-08-19T00:00:00'),
(3768,3700,N'DGB',N'DJ_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',68,0,1000,N'2026-08-19T00:00:00'),
(3769,3700,N'DGB',N'DJ_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',69,0,1000,N'2026-08-19T00:00:00'),
(3770,3700,N'DGB',N'DJ_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',70,0,1000,N'2026-08-19T00:00:00'),
(3771,3700,N'DGB',N'DL_DIFF_LEVEL_0',N'0 级',1,NULL,1.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',71,0,1000,N'2026-08-19T00:00:00'),
(3772,3700,N'DGB',N'DL_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,1.2247,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',72,0,1000,N'2026-08-19T00:00:00'),
(3773,3700,N'DGB',N'DL_DIFF_LEVEL_1',N'1 级',1,NULL,1.5,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',73,0,1000,N'2026-08-19T00:00:00'),
(3774,3700,N'DGB',N'DL_DIFF_LEVEL_2',N'2 级',1,NULL,2.25,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',74,0,1000,N'2026-08-19T00:00:00'),
(3775,3700,N'DGB',N'DL_DIFF_LEVEL_3',N'3 级',1,NULL,3.375,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',75,0,1000,N'2026-08-19T00:00:00'),
(3776,3700,N'DGB',N'DL_DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',76,0,1000,N'2026-08-19T00:00:00'),
(3777,3700,N'DGB',N'DL_DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',77,0,1000,N'2026-08-19T00:00:00'),
(3778,3700,N'DGB',N'DL_DIFF_LEVEL_6',N'6 级',1,NULL,11.3906,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',78,0,1000,N'2026-08-19T00:00:00'),
(3779,3700,N'DGB',N'DL_DIFF_LEVEL_7',N'7 级',1,NULL,17.0859,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',79,0,1000,N'2026-08-19T00:00:00'),
(3780,3700,N'DGB',N'DL_DIFF_LEVEL_8',N'8 级',1,NULL,25.6289,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',80,0,1000,N'2026-08-19T00:00:00'),
(3781,3700,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',81,0,1000,N'2026-08-19T00:00:00'),
(3782,3700,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',82,0,1000,N'2026-08-19T00:00:00'),
(3783,3700,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',83,0,1000,N'2026-08-19T00:00:00'),
(3784,3700,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',84,0,1000,N'2026-08-19T00:00:00'),
(3785,3700,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',85,0,1000,N'2026-08-19T00:00:00'),
(3786,3700,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',86,0,1000,N'2026-08-19T00:00:00'),
(3787,3700,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',87,0,1000,N'2026-08-19T00:00:00'),
(3788,3700,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',88,0,1000,N'2026-08-19T00:00:00'),
(3789,3700,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',89,0,1000,N'2026-08-19T00:00:00'),
(3790,3700,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',90,0,1000,N'2026-08-19T00:00:00'),
(3791,3700,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',91,0,1000,N'2026-08-19T00:00:00'),
(3792,3700,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',92,0,1000,N'2026-08-19T00:00:00'),
(3793,3700,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',93,0,1000,N'2026-08-19T00:00:00'),
(3794,3700,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',94,0,1000,N'2026-08-19T00:00:00'),
(3795,3700,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',95,0,1000,N'2026-08-19T00:00:00'),
(3796,3700,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1.0,0.0,50.0,1.0,0.0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',96,0,1000,N'2026-08-19T00:00:00'),
(3797,3700,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0.0,50.0,1.0,0.0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',97,0,1000,N'2026-08-19T00:00:00'),
(3798,3700,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0.0,50.0,1.0,0.0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',98,0,1000,N'2026-08-19T00:00:00'),
(3799,3700,N'T',N'REQ_SINGLE_ROPE',N'个人绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',99,0,1000,N'2026-08-19T00:00:00'),
(3800,3700,N'T',N'REQ_WHEEL',N'车轮跳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',100,0,1000,N'2026-08-19T00:00:00'),
(3801,3700,N'T',N'REQ_WIRE',N'交互绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',101,0,1000,N'2026-08-19T00:00:00'),
(3802,3700,N'T',N'REQ_LONG_ROPE',N'长绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',102,0,1000,N'2026-08-19T00:00:00'),
(3803,3700,N'T',N'REQ_TRAVEL',N'旅行跳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',103,0,1000,N'2026-08-19T00:00:00'),
(3804,3700,N'T',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0.0,5.0,1.0,0.0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":5.0}',104,0,1000,N'2026-08-19T00:00:00'),
(3805,3700,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,105,0,1000,N'2026-08-19T00:00:00'),
(3806,3700,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,106,0,1000,N'2026-08-19T00:00:00'),
(3807,3700,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,107,0,1000,N'2026-08-19T00:00:00'),
(3808,3700,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,108,0,1000,N'2026-08-19T00:00:00'),
(3809,3700,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,109,0,1000,N'2026-08-19T00:00:00'),
(3810,3700,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,110,0,1000,N'2026-08-19T00:00:00'),
(3811,3700,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,111,0,1000,N'2026-08-19T00:00:00'),
(3812,3700,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,112,0,1000,N'2026-08-19T00:00:00');
UPDATE i SET ItemName=s.ItemName,ItemType=s.ItemType,ParentItemCode=s.ParentItemCode,UnitValue=s.UnitValue,MinValue=s.MinValue,
MaxValue=s.MaxValue,StepValue=s.StepValue,DefaultValue=s.DefaultValue,CalcMode=s.CalcMode,ScoreDimension=s.ScoreDimension,
IsRequired=s.IsRequired,ExtensionJson=s.ExtensionJson,Sort=s.Sort,DeleteMark=s.DeleteMark,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.ScoreRuleItem i JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId
JOIN #ItemSeed s ON s.SourceRuleId=m.SourceId AND s.JudgeRoleType=i.JudgeRoleType AND s.ItemCode=i.ItemCode
WHERE EXISTS(SELECT i.ItemName,i.ItemType,i.ParentItemCode,i.UnitValue,i.MinValue,i.MaxValue,i.StepValue,i.DefaultValue,i.CalcMode,i.ScoreDimension,i.IsRequired,i.ExtensionJson,i.Sort,i.DeleteMark
EXCEPT SELECT s.ItemName,s.ItemType,s.ParentItemCode,s.UnitValue,s.MinValue,s.MaxValue,s.StepValue,s.DefaultValue,s.CalcMode,s.ScoreDimension,s.IsRequired,s.ExtensionJson,s.Sort,s.DeleteMark);
INSERT dbo.ScoreRuleItem(Id,ScoreRuleId,JudgeRoleType,ItemCode,ItemName,ItemType,ParentItemCode,UnitValue,MinValue,MaxValue,StepValue,DefaultValue,CalcMode,ScoreDimension,IsRequired,ExtensionJson,Sort,DeleteMark,CreatedUserId,CreatedTime)
SELECT s.Id,m.TargetId,s.JudgeRoleType,s.ItemCode,s.ItemName,s.ItemType,s.ParentItemCode,s.UnitValue,s.MinValue,s.MaxValue,s.StepValue,s.DefaultValue,s.CalcMode,s.ScoreDimension,s.IsRequired,s.ExtensionJson,s.Sort,s.DeleteMark,s.CreatedUserId,s.CreatedTime
FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId
WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode)
AND NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.Id=s.Id);
IF EXISTS(SELECT 1 FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=s.DeleteMark))
THROW 51004,N'计分规则明细种子ID被占用且业务键不存在,无法安全初始化。',1;
-- 若重复执行初始化脚本,先保留历史评分快照并解除规则项引用,再物理删除旧交互绳难度项。
IF OBJECT_ID(N'dbo.EventJudgeScoreDetail',N'U') IS NOT NULL
BEGIN
UPDATE detail
SET ScoreRuleItemId=NULL,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.EventJudgeScoreDetail detail
JOIN dbo.ScoreRuleItem item ON item.Id=detail.ScoreRuleItemId
JOIN #RuleMap map ON map.TargetId=item.ScoreRuleId AND map.SourceId IN (3500,3600)
WHERE item.JudgeRoleType IN (N'DJ',N'DT')
AND item.ItemType=1
AND NOT EXISTS(SELECT 1 FROM #ItemSeed seed WHERE seed.SourceRuleId=map.SourceId AND seed.JudgeRoleType=item.JudgeRoleType AND seed.ItemCode=item.ItemCode);
END;
DELETE i
FROM dbo.ScoreRuleItem i
JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId AND m.SourceId IN (3500,3600)
WHERE i.JudgeRoleType IN (N'DJ',N'DT')
AND i.ItemType=1
AND NOT EXISTS(SELECT 1 FROM #ItemSeed s WHERE s.SourceRuleId=m.SourceId AND s.JudgeRoleType=i.JudgeRoleType AND s.ItemCode=i.ItemCode);
/* 4.2.1 交互绳基础项目必须绑定交互绳规则,避免新编排场次继承到无评分项的旧规则。 */
DECLARE @WireRuleId BIGINT = (SELECT TOP 1 Id FROM dbo.ScoreRule WHERE RuleCode LIKE N'ROPE_FREESTYLE_WIRE_%' AND DeleteMark=0 ORDER BY Id);
IF @WireRuleId IS NULL THROW 51012,N'未找到交互绳花样计分规则(ROPE_FREESTYLE_WIRE_*)。',1;
UPDATE dbo.Project
SET ScoreRuleId=@WireRuleId,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
WHERE Name IN (N'2人交互绳',N'3人交互绳')
AND DeleteMark=0
AND ISNULL(ScoreRuleId,0)<>@WireRuleId;
/* 4.3 角色:Id=1003 “打分系统单位(scoringunit)”;若该Id被其他编码占用则报错终止 */
IF EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003 AND Code<>N'scoringunit') THROW 51005,N'SysRole.Id=1003 已被其他角色占用。',1;
IF NOT EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003)
INSERT dbo.SysRole(Id,Name,Code,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime) VALUES(1003,N'打分系统单位',N'scoringunit',0,4,N'打分系统单位账号',0,1000,'2023-06-01');
ELSE UPDATE dbo.SysRole SET Name=N'打分系统单位',Code=N'scoringunit',Status=0,Sort=4,Remark=N'打分系统单位账号',DeleteMark=0 WHERE Id=1003;
/* 4.4 菜单/按钮:独立单位管理、打分系统工作台及模块、2010裁判管理 */
IF NOT EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1047 AND Code=N'permission:account' AND DeleteMark=0)
THROW 51006,N'未找到权限管理-账号管理菜单(Id=1047,Code=permission:account)。',1;
IF EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1080 AND ISNULL(Code,N'')<>N'system:unit')
THROW 51006,N'SysMenu.Id=1080 已被其他菜单占用。',1;
/* 保留独立单位管理菜单,账号管理仅维护后台系统账号。 */
CREATE TABLE #MenuSeed(Id BIGINT PRIMARY KEY,Name NVARCHAR(32),Type INT,Code NVARCHAR(128),ParentId BIGINT,RouteName NVARCHAR(32),Path NVARCHAR(128),Component NVARCHAR(128),Redirect NVARCHAR(128),Icon NVARCHAR(64),IsIframe BIT,Link NVARCHAR(256),IsVisible BIT,IsKeepAlive BIT,IsFixed BIT,Status INT,Sort INT,Remark NVARCHAR(256),DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
INSERT #MenuSeed VALUES
(1080,N'单位管理',1,N'system:unit',1070,N'systemunit',N'/system/unit',N'system/unit/index',N'',N'ele-OfficeBuilding',0,N'',1,1,0,0,4,N'单位管理',0,1000,N'2023-06-01'),
(1081,N'打分账号-新增',2,N'system:unit:add',1080,N'btn_system_unit_add',N'',N'',N'',N'',0,N'',0,1,0,0,1,N'单位管理:账号新增',0,1000,N'2023-06-01'),
(1082,N'打分账号-编辑',2,N'system:unit:edit',1080,N'btn_system_unit_edit',N'',N'',N'',N'',0,N'',0,1,0,0,2,N'单位管理:账号编辑',0,1000,N'2023-06-01'),
(1083,N'打分账号-删除',2,N'system:unit:delete',1080,N'btn_system_unit_delete',N'',N'',N'',N'',0,N'',0,1,0,0,3,N'单位管理:账号删除',0,1000,N'2023-06-01'),
(1084,N'打分账号-启用禁用',2,N'system:unit:status',1080,N'btn_system_unit_status',N'',N'',N'',N'',0,N'',0,1,0,0,4,N'单位管理:账号状态',0,1000,N'2023-06-01'),
(1085,N'打分账号-重置密码',2,N'system:unit:resetpwd',1080,N'btn_system_unit_resetpwd',N'',N'',N'',N'',0,N'',0,1,0,0,5,N'单位管理:重置密码',0,1000,N'2023-06-01'),
(1086,N'打分系统工作台',0,N'scoring',NULL,N'scoring',N'/scoring',N'Layout',N'/scoring/launcher',N'ele-Trophy',0,N'',1,1,0,0,190,N'打分系统工作台',0,1000,N'2023-06-01'),
(1087,N'工作台',1,N'scoring:launcher',1086,N'scoringLauncher',N'/scoring/launcher',N'scoring/launcher/index',N'',N'ele-Monitor',0,N'',1,1,0,0,1,N'选择计分模式和赛事',0,1000,N'2023-06-01'),
(1088,N'秩序册',1,N'scoring:orderbook',1086,N'scoringOrderBook',N'/scoring/orderbook',N'scoring/orderbook/index',N'',N'ele-Notebook',0,N'',1,1,0,0,2,N'秩序册导入',0,1000,N'2023-06-01'),
(1089,N'成绩管理',1,N'scoring:workbench',1086,N'scoringWorkbench',N'/scoring/workbench',N'scoring/workbench/index',N'',N'ele-Management',0,N'',1,1,0,0,3,N'成绩管理',0,1000,N'2023-06-01'),
(1090,N'成绩投屏',1,N'scoring:cast',1086,N'scoringCast',N'/scoring/cast',N'scoring/workbench/index',N'',N'ele-DataLine',0,N'',1,1,0,0,4,N'成绩投屏操作台',0,1000,N'2023-06-01'),
(2010,N'裁判管理',1,N'referee',NULL,N'referee',N'/referee',N'match/referee/index',N'',N'ele-UserFilled',0,N'',1,1,0,0,245,N'裁判库管理',0,1000,N'2023-06-01');
IF EXISTS(SELECT 1 FROM #MenuSeed s JOIN dbo.SysMenu m ON m.Id=s.Id WHERE ISNULL(m.Code,N'')<>ISNULL(s.Code,N'')) THROW 51006,N'二期菜单ID已被其他菜单占用。',1;
UPDATE m SET Name=s.Name,Type=s.Type,Code=s.Code,ParentId=s.ParentId,RouteName=s.RouteName,Path=s.Path,Component=s.Component,Redirect=s.Redirect,Icon=s.Icon,IsIframe=s.IsIframe,Link=s.Link,IsVisible=s.IsVisible,IsKeepAlive=s.IsKeepAlive,IsFixed=s.IsFixed,Status=s.Status,Sort=s.Sort,Remark=s.Remark,DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.SysMenu m JOIN #MenuSeed s ON s.Id=m.Id
WHERE EXISTS(SELECT m.Name,m.Type,m.Code,m.ParentId,m.RouteName,m.Path,m.Component,m.Redirect,m.Icon,m.IsIframe,m.Link,m.IsVisible,m.IsKeepAlive,m.IsFixed,m.Status,m.Sort,m.Remark,m.DeleteMark
EXCEPT SELECT s.Name,s.Type,s.Code,s.ParentId,s.RouteName,s.Path,s.Component,s.Redirect,s.Icon,s.IsIframe,s.Link,s.IsVisible,s.IsKeepAlive,s.IsFixed,s.Status,s.Sort,s.Remark,CONVERT(BIT,0));
INSERT dbo.SysMenu(Id,Name,Type,Code,ParentId,RouteName,Path,Component,Redirect,Icon,IsIframe,Link,IsVisible,IsKeepAlive,IsFixed,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime)
SELECT Id,Name,Type,Code,ParentId,RouteName,Path,Component,Redirect,Icon,IsIframe,Link,IsVisible,IsKeepAlive,IsFixed,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime FROM #MenuSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.SysMenu m WHERE m.Id=s.Id);
/* 4.5 角色-菜单授权:按角色和菜单匹配已有关系,缺失关系自动生成新Id */
DECLARE @RoleMenuSeed TABLE(Id BIGINT NULL,RoleId BIGINT,MenuId BIGINT,SeedOrder INT IDENTITY(1,1),PRIMARY KEY(RoleId,MenuId));
INSERT @RoleMenuSeed(RoleId,MenuId) VALUES
(1000,1080),(1000,1081),(1000,1082),(1000,1083),(1000,1084),(1000,1085),(1000,1086),(1000,1087),(1000,1088),(1000,1089),(1000,1090),(1000,2010),
(1003,1086),(1003,1087),(1003,1088),(1003,1089),(1003,1090),
(1001,1086),(1001,1089),(1001,1090);
DECLARE @RoleMenuNextId BIGINT;
SELECT @RoleMenuNextId=ISNULL(MAX(Id),0) FROM dbo.SysRoleMenu WITH (UPDLOCK,HOLDLOCK);
UPDATE s SET Id=rm.Id
FROM @RoleMenuSeed s
JOIN dbo.SysRoleMenu rm ON rm.RoleId=s.RoleId AND rm.MenuId=s.MenuId;
UPDATE @RoleMenuSeed SET Id=@RoleMenuNextId+SeedOrder WHERE Id IS NULL;
INSERT dbo.SysRoleMenu(Id,RoleId,MenuId,CreatedUserId,CreatedTime,DeleteMark)
SELECT s.Id,s.RoleId,s.MenuId,1000,'2023-06-01',0
FROM @RoleMenuSeed s
WHERE NOT EXISTS(SELECT 1 FROM dbo.SysRoleMenu rm WHERE rm.RoleId=s.RoleId AND rm.MenuId=s.MenuId);
UPDATE rm SET DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
FROM dbo.SysRoleMenu rm JOIN @RoleMenuSeed s ON s.RoleId=rm.RoleId AND s.MenuId=rm.MenuId;
/* ====================================================================================
[5/9] 可编程对象 · 标量函数 / 视图 / 存储过程(CREATE OR ALTER,可重复执行;用 EXEC 包裹规避批处理分隔)
1个标量函数 + 3个视图 + 2个存储过程
==================================================================================== */
PRINT N'[5/9] 可编程对象:创建函数、视图与存储过程';
/* 标量函数:成绩状态码 -> 中文名(0计算中/10待复核/20已确认/30已投屏/40已更正/90作废) */
EXEC(N'CREATE OR ALTER FUNCTION dbo.fn_Phase2_ResultStatusName(@ResultStatus INT)
RETURNS NVARCHAR(32) AS BEGIN RETURN CASE @ResultStatus WHEN 0 THEN N''计算中'' WHEN 10 THEN N''待复核'' WHEN 20 THEN N''已确认'' WHEN 30 THEN N''已投屏'' WHEN 40 THEN N''已更正'' WHEN 90 THEN N''已作废'' ELSE N''未知'' END END');
/* 视图:裁判席位分配明细(关联场次/场地/裁判档案) */
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_JudgeAssignment AS
SELECT a.Id AS AssignmentId,a.EventId,a.SessionId,s.SessionNo,s.SessionName,v.VenueCode,v.VenueName,
a.EventRefereeId,a.RefereeId,r.Name AS RefereeName,r.Mobile,a.JudgeUserId,a.JudgeRole,a.JudgeRoleType,
a.AssignmentStatus,a.SubmittedTime,a.Status,a.DeleteMark
FROM dbo.EventJudgeAssignment a
JOIN dbo.EventSession s ON s.Id=a.SessionId
JOIN dbo.EventVenue v ON v.Id=s.VenueId
JOIN dbo.Referee r ON r.Id=a.RefereeId');
/* 视图:场次内每个出场的应收/已收评分单进度 */
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_SessionScoreProgress AS
SELECT e.SessionId,e.Id AS SessionEntryId,e.EntryNo,e.PlayOrder,e.ParticipantName,
COUNT(DISTINCT CASE WHEN a.DeleteMark=0 AND a.Status=0 THEN a.Id END) AS ExpectedJudgeCount,
COUNT(DISTINCT CASE WHEN sh.DeleteMark=0 AND sh.IsCurrent=1 AND sh.SheetStatus>=10 THEN sh.JudgeAssignmentId END) AS SubmittedJudgeCount,
MAX(sh.SubmittedTime) AS LastSubmittedTime
FROM dbo.EventSessionEntry e
LEFT JOIN dbo.EventJudgeAssignment a ON a.SessionId=e.SessionId
LEFT JOIN dbo.EventJudgeScoreSheet sh ON sh.SessionEntryId=e.Id AND sh.JudgeAssignmentId=a.Id
WHERE e.DeleteMark=0
GROUP BY e.SessionId,e.Id,e.EntryNo,e.PlayOrder,e.ParticipantName');
/* 视图:对外公开成绩(仅已确认/已发布/已投屏且未作废的出场) */
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_PublicResult AS
SELECT r.Id,r.EventId,r.SessionId,r.SessionEntryId,e.EntryNo,e.ParticipantName,e.TeamName,e.GroupName,
r.DifficultyScore,r.PerformanceScore,r.RequiredScore,r.DeductionScore,r.TotalScore,r.[Rank],
r.IsDisqualified,r.DisqualifyReasonCode,r.ResultStatus,r.ResultVersion,
dbo.fn_Phase2_ResultStatusName(r.ResultStatus) AS ResultStatusName
FROM dbo.EventResult r
JOIN dbo.EventSessionEntry e ON e.Id=r.SessionEntryId
WHERE r.DeleteMark=0 AND r.Status=0 AND e.DeleteMark=0 AND e.IsVoided=0 AND r.ResultStatus IN(20,30,40)');
/* 存储过程:查询指定场次评分进度(按出场顺序) */
EXEC(N'CREATE OR ALTER PROCEDURE dbo.usp_Phase2_GetSessionScoreProgress @SessionId BIGINT AS
BEGIN SET NOCOUNT ON; SELECT * FROM dbo.vw_Phase2_SessionScoreProgress WHERE SessionId=@SessionId ORDER BY PlayOrder; END');
/* 存储过程:部署自检(二期表/视图/例程清单 + 各规则明细条数) */
EXEC(N'CREATE OR ALTER PROCEDURE dbo.usp_Phase2_ValidateDeployment AS
BEGIN SET NOCOUNT ON;
SELECT N''Table'' AS ObjectType,t.name AS ObjectName FROM sys.tables t WHERE t.name IN
(''RefereeApplication'',''CheckinTask'',''CheckinRecord'',''Referee'',''EventReferee'',''EventJudgeAssignment'',''EventJudgeTask'',''EventVenue'',''EventSession'',''EventSessionEntry'',''EventSessionEntryRematch'',''EventJudgeMessage'',''ScoreRule'',''ScoreRuleItem'',''EventJudgeScoreSheet'',''EventJudgeScoreAttachment'',''EventJudgeScoreDetail'',''EventResultVersion'',''EventScoreCorrection'',''EventResultScreenCast'')
UNION ALL SELECT N''View'',name FROM sys.views WHERE name LIKE ''vw_Phase2[_]%''
UNION ALL SELECT N''Routine'',name FROM sys.objects WHERE type IN(''P'',''FN'') AND (name LIKE ''usp_Phase2[_]%'' OR name LIKE ''fn_Phase2[_]%'');
SELECT r.RuleCode,COUNT(i.Id) AS ItemCount FROM dbo.ScoreRule r LEFT JOIN dbo.ScoreRuleItem i ON i.ScoreRuleId=r.Id AND i.DeleteMark=0 WHERE r.RuleCode IN(''ROPE_PRESCRIBED'',''ROPE_FREESTYLE_SINGLE'',''ROPE_FREESTYLE_DOUBLE_SYNC'',''ROPE_FREESTYLE_QUAD_SYNC'',''ROPE_FREESTYLE_WHEEL_PAIR'',''ROPE_FREESTYLE_WIRE_TRIPLE'',''ROPE_FREESTYLE_WIRE_QUAD'',''ROPE_SHOWCASE'') AND r.DeleteMark=0 GROUP BY r.RuleCode; END');
/* ====================================================================================
[6/9] 权限 · 创建三个最小权限数据库角色并授权
yd_phase2_app_rw 应用读写:业务表 SELECT/INSERT/UPDATE + 视图查询 + 例程执行,关键留痕表禁止 DELETE
yd_phase2_app_ro 只读:业务表/视图 SELECT;yd_phase2_executor 执行器:仅执行自检/进度存储过程
==================================================================================== */
PRINT N'[6/9] 权限:配置最小权限数据库角色';
/* 6.1 创建三个数据库角色(已存在则跳过) */
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_app_rw') IS NULL CREATE ROLE [yd_phase2_app_rw] AUTHORIZATION [dbo];
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_app_ro') IS NULL CREATE ROLE [yd_phase2_app_ro] AUTHORIZATION [dbo];
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_executor') IS NULL CREATE ROLE [yd_phase2_executor] AUTHORIZATION [dbo];
/* 6.2 视图授权:只读角色、读写角色均可 SELECT */
PRINT N' - grants: views -> read-only';
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_JudgeAssignment TO [yd_phase2_app_ro];');
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_SessionScoreProgress TO [yd_phase2_app_ro];');
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_PublicResult TO [yd_phase2_app_ro];');
PRINT N' - grants: views -> app-rw';
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_JudgeAssignment TO [yd_phase2_app_rw];');
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_SessionScoreProgress TO [yd_phase2_app_rw];');
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_PublicResult TO [yd_phase2_app_rw];');
PRINT N' - grants: procedures';
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_GetSessionScoreProgress TO [yd_phase2_app_rw];');
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_GetSessionScoreProgress TO [yd_phase2_executor];');
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_ValidateDeployment TO [yd_phase2_executor];');
PRINT N' - grants: function';
EXEC(N'GRANT EXECUTE, REFERENCES ON OBJECT::dbo.fn_Phase2_ResultStatusName TO [yd_phase2_app_rw];');
EXEC(N'GRANT EXECUTE, REFERENCES ON OBJECT::dbo.fn_Phase2_ResultStatusName TO [yd_phase2_app_ro];');
/* 6.3 业务表授权:游标逐表 GRANT(rw=查增改,ro=查) */
DECLARE @BusinessTable SYSNAME,@PermissionSql NVARCHAR(MAX);
DECLARE business_tables CURSOR LOCAL FAST_FORWARD FOR SELECT [Name] FROM (VALUES
(N'RefereeApplication'),(N'CheckinTask'),(N'CheckinRecord'),(N'Referee'),(N'EventReferee'),(N'EventJudgeAssignment'),
(N'EventJudgeTask'),(N'EventVenue'),(N'EventSession'),(N'EventSessionEntry'),(N'EventSessionEntryRematch'),
(N'EventJudgeMessage'),(N'ScoreRule'),(N'ScoreRuleItem'),(N'EventJudgeScoreSheet'),(N'EventJudgeScoreAttachment'),(N'EventJudgeScoreDetail'),
(N'EventResultVersion'),(N'EventScoreCorrection'),(N'EventResultScreenCast'))x([Name]);
OPEN business_tables; FETCH NEXT FROM business_tables INTO @BusinessTable;
WHILE @@FETCH_STATUS=0
BEGIN
SET @PermissionSql=N'GRANT SELECT,INSERT,UPDATE ON OBJECT::dbo.'+QUOTENAME(@BusinessTable)+N' TO [yd_phase2_app_rw]; GRANT SELECT ON OBJECT::dbo.'+QUOTENAME(@BusinessTable)+N' TO [yd_phase2_app_ro];';
EXEC sys.sp_executesql @PermissionSql;
FETCH NEXT FROM business_tables INTO @BusinessTable;
END
CLOSE business_tables; DEALLOCATE business_tables;
/* 6.4 关键留痕表对读写角色 DENY DELETE,只允许软删除(DeleteMark) */
DENY DELETE ON OBJECT::dbo.EventJudgeScoreSheet TO [yd_phase2_app_rw];
DENY DELETE ON OBJECT::dbo.EventJudgeScoreDetail TO [yd_phase2_app_rw];
DENY DELETE ON OBJECT::dbo.EventResultVersion TO [yd_phase2_app_rw];
DENY DELETE ON OBJECT::dbo.EventScoreCorrection TO [yd_phase2_app_rw];
PRINT N'[7/9] 执行后置校验';
DECLARE @Validation TABLE([Category] NVARCHAR(32),[Item] NVARCHAR(128),[Passed] BIT,[Actual] NVARCHAR(1000));
DECLARE @ExpectedTables TABLE(Name SYSNAME);
INSERT @ExpectedTables VALUES(N'RefereeApplication'),(N'CheckinTask'),(N'CheckinRecord'),(N'Referee'),(N'EventReferee'),(N'EventJudgeAssignment'),(N'EventJudgeTask'),(N'EventVenue'),(N'EventSession'),(N'EventSessionEntry'),(N'EventSessionEntryRematch'),(N'EventJudgeMessage'),(N'ScoreRule'),(N'ScoreRuleItem'),(N'EventJudgeScoreSheet'),(N'EventJudgeScoreAttachment'),(N'EventJudgeScoreDetail'),(N'EventResultVersion'),(N'EventScoreCorrection'),(N'EventResultScreenCast');
INSERT @Validation SELECT N'TABLE',Name,CASE WHEN OBJECT_ID(N'dbo.'+QUOTENAME(Name),'U') IS NOT NULL THEN 1 ELSE 0 END,N'dbo.'+Name FROM @ExpectedTables;
DECLARE @ExpectedColumns TABLE(TableName SYSNAME,ColumnName SYSNAME);
INSERT @ExpectedColumns VALUES
(N'AppUser',N'MiniProgramRole'),(N'AppUser',N'AuditUserId'),(N'AppUser',N'AuditTime'),
(N'Referee',N'AuditUserId'),(N'Referee',N'AuditTime'),
(N'MerchantCertification',N'AuditUserId'),(N'MerchantCertification',N'AuditTime'),
(N'Merchant',N'AuditUserId'),(N'Merchant',N'AuditTime'),
(N'CertificateTemplate',N'UpdatedUserId'),(N'CertificateTemplate',N'UpdatedTime'),
(N'CertificatePlaceholder',N'CreatedUserId'),(N'CertificatePlaceholder',N'CreatedTime'),(N'CertificatePlaceholder',N'UpdatedUserId'),(N'CertificatePlaceholder',N'UpdatedTime'),
(N'EventInfo',N'RefereeRegistrationCode'),(N'EventRegistrationLimit',N'RefereeLimit'),
(N'EventRegistrationItem',N'TeamId'),(N'EventRegistrationItem',N'TeamName'),(N'EventRegistrationItem',N'TeamIndex'),
(N'Project',N'ScoreRuleId'),(N'SysUser',N'UnitName'),(N'SysUser',N'UnitPlatform'),
(N'EventResult',N'SessionId'),(N'EventResult',N'SessionEntryId'),(N'EventResult',N'TotalScore'),(N'EventResult',N'ResultVersion'),(N'EventResult',N'ReviewUserId'),(N'EventResult',N'ReviewTime'),
(N'EventReferee',N'RefereeApplicationId'),(N'EventVenue',N'VenueCode'),(N'EventJudgeMessage',N'ReceiverUserId'),
(N'EventJudgeScoreDetail',N'ScoreRuleItemId'),(N'EventResultVersion',N'EventResultId'),(N'EventScoreCorrection',N'OriginalScoreSheetId');
INSERT @Validation SELECT N'COLUMN',TableName+N'.'+ColumnName,CASE WHEN COL_LENGTH(N'dbo.'+TableName,ColumnName) IS NOT NULL THEN 1 ELSE 0 END,N'dbo.'+TableName+N'.'+ColumnName FROM @ExpectedColumns;
INSERT @Validation VALUES
(N'OBJECT',N'二期视图',CASE WHEN (SELECT COUNT(*) FROM sys.views WHERE name LIKE 'vw_Phase2[_]%')=3 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.views WHERE name LIKE 'vw_Phase2[_]%'))),
(N'OBJECT',N'二期存储过程',CASE WHEN (SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'usp_Phase2[_]%')=2 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'usp_Phase2[_]%'))),
(N'OBJECT',N'二期函数',CASE WHEN OBJECT_ID('dbo.fn_Phase2_ResultStatusName','FN') IS NOT NULL THEN 1 ELSE 0 END,N'fn_Phase2_ResultStatusName'),
(N'INDEX',N'二期索引',CASE WHEN (SELECT COUNT(*) FROM sys.indexes WHERE name IN(N'UX_Referee_Mobile_Active',N'UX_EventReferee_Event_Referee_Active',N'UX_EventVenue_Event_Code_Active',N'UX_EventSession_Event_No_Active',N'UX_EventJudgeScoreSheet_Idempotency',N'UX_EventResultVersion_Result_Version'))=6 THEN 1 ELSE 0 END,N'6个关键索引'),
(N'CONSTRAINT',N'二期外键',CASE WHEN (SELECT COUNT(*) FROM sys.foreign_keys WHERE name LIKE 'FK[_]%' AND parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables))>=20 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.foreign_keys WHERE name LIKE 'FK[_]%' AND parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables)))),
(N'SEED',N'计分规则',CASE WHEN (SELECT COUNT(DISTINCT r.RuleCode) FROM dbo.ScoreRule r JOIN #RuleSeed s ON s.RuleCode=r.RuleCode WHERE r.DeleteMark=0)=8 THEN 1 ELSE 0 END,N'期望8条'),
(N'SEED',N'计分规则明细',CASE WHEN (SELECT COUNT(*) FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId JOIN dbo.ScoreRuleItem i ON i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=0 WHERE s.DeleteMark=0)=(SELECT COUNT(*) FROM #ItemSeed WHERE DeleteMark=0) THEN 1 ELSE 0 END,CONCAT(N'期望',(SELECT COUNT(*) FROM #ItemSeed WHERE DeleteMark=0),N'条启用评分项')),
(N'SEED',N'角色与菜单',CASE WHEN EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003 AND Code='scoringunit' AND DeleteMark=0)
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,2010) AND DeleteMark=0)=12
AND EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1080 AND Code='system:unit' AND ParentId=1070 AND DeleteMark=0)
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1081,1082,1083,1084,1085) AND ParentId=1080 AND DeleteMark=0)=5
AND EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1086 AND Code='scoring' AND DeleteMark=0)
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1087,1088,1089,1090) AND ParentId=1086 AND DeleteMark=0)=4
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1000 AND MenuId IN(1080,1086,1087,1088,1089,1090) AND DeleteMark=0)=6
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1003 AND MenuId IN(1086,1087,1088,1089,1090) AND DeleteMark=0)=5
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1001 AND MenuId IN(1086,1089,1090) AND DeleteMark=0)=3
THEN 1 ELSE 0 END,N'单位管理、工作台及三个业务模块、三类角色菜单授权'),
(N'PERMISSION',N'最小权限角色',CASE WHEN (SELECT COUNT(*) FROM sys.database_principals WHERE name IN('yd_phase2_app_rw','yd_phase2_app_ro','yd_phase2_executor') AND type='R')=3 THEN 1 ELSE 0 END,N'期望3个数据库角色');
SELECT N'POSTCHECK' AS [Stage],[Category],[Item],CASE WHEN Passed=1 THEN N'PASS' ELSE N'FAIL' END AS [Result],[Actual] FROM @Validation ORDER BY Passed,[Category],[Item];
IF EXISTS(SELECT 1 FROM @Validation WHERE Passed=0)
BEGIN
DECLARE @FailedValidation NVARCHAR(2048);
SELECT TOP 1 @FailedValidation=N'二期部署后置校验失败:'+[Category]+N' / '+[Item]+N',实际值:'+ISNULL([Actual],N'') FROM @Validation WHERE Passed=0 ORDER BY [Category],[Item];
THROW 51008,@FailedValidation,1;
END;
PRINT N'[8/9] 生成部署摘要';
SELECT DB_NAME() AS DatabaseName,CONVERT(NVARCHAR(128),SERVERPROPERTY('ProductVersion')) AS SqlServerVersion,
(SELECT COUNT(*) FROM @ExpectedTables) AS Phase2TableCount,
(SELECT COUNT(*) FROM sys.indexes i JOIN sys.tables t ON t.object_id=i.object_id WHERE t.name IN(SELECT Name FROM @ExpectedTables) AND i.name IS NOT NULL) AS Phase2IndexCount,
(SELECT COUNT(*) FROM sys.foreign_keys f WHERE f.parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables)) AS Phase2ForeignKeyCount,
(SELECT COUNT(*) FROM #RuleSeed) AS RuleSeedCount,(SELECT COUNT(*) FROM #ItemSeed) AS RuleItemSeedCount;
PRINT N'[9/9] 提交事务';
COMMIT TRANSACTION;
PRINT N'二期数据库部署成功,事务已提交。';
END TRY
BEGIN CATCH
DECLARE @ErrorNumber INT=ERROR_NUMBER(),@ErrorLine INT=ERROR_LINE(),@ErrorMessage NVARCHAR(4000)=ERROR_MESSAGE();
IF XACT_STATE()<>0 ROLLBACK TRANSACTION;
SELECT N'FAILED' AS [Stage],@ErrorNumber AS ErrorNumber,@ErrorLine AS ErrorLine,@ErrorMessage AS ErrorMessage,N'所有未提交变更已回滚' AS RollbackStatus;
THROW;
END CATCH;