/* ======================================================================================== YD_Event 二期生产环境部署脚本 版本:3.1 | 基线提交:25830581d2add95f2d659e663f3d78b766ce0946 数据库:Microsoft SQL Server 2016+(兼容级别 130+) 执行示例: sqlcmd -S -d -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;