Appearance
第九章 数据字段定义
本章定义操盘列表涉及的所有数据字段,包括字段名称、数据类型、取值范围、来源及业务含义。
9.0 核心术语定义
本节定义操盘系统中的核心术语,全文统一使用以下口径:
| 术语 | 英文 | 定义 | 层级 | 示例 |
|---|---|---|---|---|
| 玩法 | BetType | IM数据源定义的投注类型 | 第二级 | 让球(BT1)、大小(BT2)、独赢(BT3) |
| 盘口线 | Marketline / Handicap | 同一玩法下的不同数值线 | 第三级(仅部分玩法有) | 让球-0.5、让球-1、大小2.5 |
| 选项 | Selection / Outcome | 可投注的具体结果 | 第四级 | 主队、客队、大、小、1:0、2:1 |
| 盘口 | Market | 本文档中"盘口"统一指代"玩法"层级,历史文档存在混用 | — | — |
控制层级:赛事 → 玩法 → 盘口线(若有) → 选项。详见第16章16.1.5节。
9.0.1 术语使用规范
| 场景 | 正确用法 | 错误用法 |
|---|---|---|
| 描述投注类型 | "让球玩法"、"独赢玩法" | "让球盘口"(历史遗留可接受) |
| 描述数值线 | "让球-0.5盘口线" | "让球-0.5盘口" |
| 描述投注选项 | "主队选项"、"大选项" | "主队盘口" |
| 统计开盘数量 | "开盘玩法数"或"盘口数"(沿用习惯) | — |
9.0.2 IM字段与本地字段映射说明
本章定义的字段分为两类:IM数据源原始字段和本地系统派生字段。两类字段的命名和取值必须严格区分,禁止混用。
9.0.3 字段分类原则
| 分类 | 定义 | 命名规范 | 示例 |
|---|---|---|---|
| IM原始字段 | 由IM数据源API直接推送的字段 | 保持IM原始字段名 | EventStatusId, MarketlineStatusId, RBTimeStatus |
| 本地派生字段 | 由本地系统根据业务规则计算或定义的字段 | 使用业务语义命名 | MatchPhase(比赛进程), ListingStatus(上架状态), SettlementStatus(结算状态) |
9.0.4 IM关键字段速查表
| IM字段名 | 数据类型 | 取值范围 | 业务含义 | 刷新方式 |
|---|---|---|---|---|
| EventStatusId | Int | 1=开盘, 2=关盘 | 赛事级盘口开关状态 | Delta推送 |
| MarketlineStatusId | Int | 1=开盘, 2=关盘 | 单个盘口开关状态 | Delta推送 |
| IsMaintenance | Bool | true/false | 赛事是否维护中 | Delta推送 |
| Market | Int | 1=早盘, 2=今日, 3=滚球 | 盘口时间分类 | Full Pull |
| EventPeriodId | Int | 10/20/25/30/40/45/50/60/100 | 比赛阶段 | Delta推送 |
| RBTime | String | 如"45:00" | 滚球比赛时间 | Delta推送 |
| RBTimeStatus | Int | 0=不适用, 1=开始, 2=进行中, 3=暂停 | 滚球时间状态 | Delta推送 |
| LiveStatusId | Int | 1=未开始, 2=滚球中, 3=完场, 4=延期, 5=取消等 | 赛事生命周期状态(与EventStatusId不同,本字段表示赛事进行状态,而非盘口开关状态) | Delta推送 |
9.0.5 IM三层状态字段关系说明
IM数据源推送三类独立的状态字段,各自控制不同层面,不可混淆:
| 字段 | 控制层面 | 取值含义 | 本地对应 |
|---|---|---|---|
| EventStatusId | 盘口开关(市场状态) | 1=开盘,2=关盘 | 盘口状态计算输入 |
| LiveStatusId | 赛事生命周期(进行状态) | 1=未开始,2=滚球中,3=完场,4=延期,5=取消等 | 比赛进程派生输入 |
| SettlementStatus | 结算状态(本地派生) | normal_end/cancelled/interrupted/abandoned/walkover/withdrawal | 结算管理流转依据 |
三层字段的独立性:
- EventStatusId=2(关盘) 不等于赛事结束,只表示该盘口市场关盘(包括玩法结算、提前关盘等)
- LiveStatusId=3(完场) 表示赛事生命周期结束,此时系统会同步触发盘口关盘
- SettlementStatus 是本地派生字段,由结算接口或人工标记确定,与IM字段独立
易混淆场景澄清:
| 场景 | EventStatusId | LiveStatusId | 系统行为 |
|---|---|---|---|
| 玩法提前结算 | 2(关盘) | 2(滚球中) | 该玩法关盘,赛事继续 |
| 比赛正常结束 | 2(关盘) | 3(完场) | 全部盘口关盘,流转结算 |
| 比赛延期 | 1或2 | 4(延期) | 盘口隐藏,保留在操盘列表 |
| 数据源维护 | 1(开盘) | 2(滚球中) | IsMaintenance=true时强制隐藏 |
9.1 赛事基础信息
| 字段名 | 数据类型 | 来源 | IM 对应字段 | 说明 |
|---|---|---|---|---|
| 赛事编号 | 字符串 | 本地生成 | — | 本地唯一标识,格式如 IM20250119001 |
| 数据源赛事编号 | 字符串 | 数据源 | EventId | 数据源原始编号 |
| 联赛编号 | 字符串 | 数据源 | CompetitionId | 所属联赛唯一标识 |
| 联赛名称 | 字符串 | 数据源 | CompetitionName | 联赛中文名称 |
| 联赛英文名称 | 字符串 | 数据源 | CompetitionNameEn | 联赛英文名称 |
| 联赛等级 | 枚举 | 本地配置 | — | S、A、B、C |
| 国家编号 | 字符串 | 数据源 | LocationId | 联赛所属国家 |
| 国家名称 | 字符串 | 数据源 | LocationName | 国家中文名称 |
| 主队编号 | 字符串 | 数据源 | HomeTeamId | 主队唯一标识 |
| 主队名称 | 字符串 | 数据源 | HomeTeam | 主队中文名称 |
| 客队编号 | 字符串 | 数据源 | AwayTeamId | 客队唯一标识 |
| 客队名称 | 字符串 | 数据源 | AwayTeam | 客队中文名称 |
| 开赛时间 | 时间戳 | 数据源 | EventDate | 计划开赛时间,UTC 时区 |
| 实际开赛时间 | 时间戳 | 数据源 | — | 实际开球时间,滚球后有值 |
| 体育类型 | 枚举 | 数据源 | SportId | 支持 IM 所有运动类型,1=足球 |
| 中立场标识 | 布尔值 | 数据源 | GroundTypeId | 0=中立场, 1=主场 |
| 热门标识 | 布尔值 | 本地配置或数据源 | IsPopular | 是否为热门赛事 |
| 直播标识 | 布尔值 | 数据源 | LiveStreaming | 是否有视频直播 |
9.1.1 赛事编号生成规则
本地赛事编号采用以下格式:IM{YYYYMMDD}{序号}
| 部分 | 说明 | 示例 |
|---|---|---|
| IM | 固定前缀,标识数据源为 Inplay Matrix | IM |
| YYYYMMDD | 赛事创建日期(北京时间) | 20250119 |
| 序号 | 当日流水号,6 位数字,不足补零 | 000001 |
完整示例:IM20250119000001
9.1.2 联赛等级定义
联赛等级在联赛管理中配置(默认+等级1-10共11档),用于区分联赛重要程度和风控策略。等级与风控管理「联赛分组」的等级对应。
| 等级 | 说明 | 典型联赛 | 风控策略 |
|---|---|---|---|
| 等级1 | 顶级联赛 | 英超、西甲、德甲、意甲、法甲、欧冠、世界杯 | 最宽松,高限额 |
| 等级2 | 重要联赛 | 荷甲、葡超、巴甲、中超、欧联杯 | 较宽松 |
| 等级3 | 次要联赛 | 各国次级联赛 | 标准偏宽 |
| 等级4-7 | 普通联赛 | 各国杯赛、中游联赛 | 标准策略 |
| 等级8-9 | 低级联赛 | 低级别联赛 | 较严格 |
| 等级10 | 最低联赛 | 极低级别联赛、友谊赛 | 最严格,低限额 |
| 默认 | 未分配 | 未配置等级的联赛 | 使用默认档限额配置 |
9.2 比赛进程信息
术语区分:比赛进程 vs 比赛阶段
术语 英文 来源 用途 取值示例 比赛进程 MatchPhase 本地派生字段 本地Tab筛选、状态显示 赛前、即将、滚球、中场、完场(共5种) 比赛阶段 EventPeriod IM原始字段 标识具体比赛阶段 足球:上半场/下半场;电竞:第一局/第二局等 设计说明:比赛进程是本地统一的进程分类,用于操盘列表Tab筛选和状态展示;比赛阶段是IM数据源推送的原始字段,不同体育类型有不同取值(足球有上半场/下半场,电竞有第一局/第二局等)。两者不可混用。
| 字段名 | 数据类型 | 来源 | IM 对应字段 | 说明 |
|---|---|---|---|---|
| 比赛进程 | 枚举 | 计算 | — | 赛前、即将、滚球、中场、完场(共5种,见9.2.3节) |
| 比赛阶段 | 枚举 | 数据源 | EventPeriodId | 上半场、中场休息、下半场、加时上半场、加时中场、加时下半场、点球(足球);第一局、第二局等(电竞) |
| 比赛分钟 | 字符串 | 数据源 | RBTime | 当前比赛时间,如"45:00" |
| 补时分钟 | 整数 | 数据源 | — | 伤停补时分钟数(从RBTime解析) |
| 时间状态 | 枚举 | 数据源 | RBTimeStatus | 运行中、暂停、比赛暂停 |
| 主队比分 | 整数 | 数据源 | HomeScore | 主队当前得分 |
| 客队比分 | 整数 | 数据源 | AwayScore | 客队当前得分 |
| 主队红牌 | 整数 | 数据源 | HomeRedCard | 主队红牌数 |
| 客队红牌 | 整数 | 数据源 | AwayRedCard | 客队红牌数 |
| 盘口时间分类 | 枚举 | 数据源 | Market | 1=早盘, 2=今日, 3=滚球 |
| 最后更新时间 | 时间戳 | 数据源 | — | 数据最后更新时间 |
9.2.1 比赛阶段枚举(EventPeriodId)
| EventPeriodId | 英文名称 | 中文名称 | 对应比赛进程 |
|---|---|---|---|
| 10 | Not Started | 未开始 | 赛前/即将 |
| 20 | First Half | 上半场 | 滚球 |
| 25 | Half Time | 中场休息 | 中场 |
| 30 | Second Half | 下半场 | 滚球 |
| 40 | Extra Time First Half | 加时上半场 | 滚球 |
| 45 | Extra Time Half Time | 加时中场 | 中场 |
| 50 | Extra Time Second Half | 加时下半场 | 滚球 |
| 60 | Penalty Shootout | 点球大战 | 滚球 |
| 100 | Ended | 完场 | 完场 |
9.2.2 时间状态枚举(RBTimeStatus)
| RBTimeStatus | 英文名称 | 中文名称 | 说明 |
|---|---|---|---|
| 0 | Not Applicable | 不适用 | 非滚球状态 |
| 1 | Started | 开始 | 比赛刚开始 |
| 2 | Running | 进行中 | 比赛时间正常流逝 |
| 3 | Stopped | 暂停 | 比赛时间暂停(如犯规、换人、VAR) |
9.2.3 比赛进程计算规则
比赛进程(MatchPhase)是本地派生字段,根据IM多个字段计算得出:
| 条件 | 比赛进程值 | 说明 |
|---|---|---|
| Market ∈ (1, 2) 且 EventPeriodId = 10 且 距开赛 > 30 分钟 | 赛前 | 距离开赛较远 |
| Market ∈ (1, 2) 且 EventPeriodId = 10 且 距开赛≤ 30 分钟 | 即将 | 即将开赛 |
| Market = 3 且 EventPeriodId ∈ (20, 30, 40, 50, 60) | 滚球 | 比赛进行中 |
| Market = 3 且 EventPeriodId ∈ (25, 45) | 中场 | 中场休息 |
| EventPeriodId = 100 | 完场 | 比赛已结束 |
说明:「距开赛」= 开赛时间 - 服务器当前时间(北京时间)。
完场与盘口关盘的联动:当IM推送EventPeriodId=100(完场)时,系统自动将本地盘口状态流转为「关盘」,赛事从操盘列表移除并流转至结算管理模块。此规则与EventStatusId=2(数据源关盘)具有相同优先级,均为终态不可逆。详见第10章10.1.2节。
9.3 数据源盘口状态
SSOT声明:本节定义数据源状态的字段映射规则,完整的联动处理规则见第16章16.3节「数据源盘口状态联动」。
数据源盘口状态表示IM数据源推送的赛事/盘口开关状态,由IM多个字段组合判断。
9.3.1 IM字段组合与本地状态映射
| 本地状态值 | IM字段组合条件 | 业务含义 |
|---|---|---|
| 开盘 | EventStatusId=1 且 MarketlineStatusId=1 且 IsMaintenance=false | 数据源正常开盘,可接受投注 |
| 暂停 | MarketlineStatusId≠1 或 进球/红牌事件触发 | 数据源临时暂停推送 |
| 维护 | IsMaintenance=true | 数据源维护中 |
| 关盘 | EventStatusId=2 或 Delta Action=4/13 | 数据源关盘该赛事/玩法 |
一期依赖范围:系统仅对以下状态值做业务分支判断:OPEN(开盘1/4) / SUSPENDED(暂停) / LOCKED(锁定) / CLOSED(关盘2)。IM返回未识别取值时,前端展示原始值并打点告警;后端按"更保守"处理(不自动开盘)。
"更保守处理"定义:当IM返回未识别的状态值时,系统按以下规则处理:
场景 更保守处理方式 原因 未识别的EventStatusId 视为关盘,阻止开盘操作 防止在异常状态下接受投注 未识别的MarketlineStatusId 视为暂停,不自动开盘 等待人工确认后再处理 未识别的IsMaintenance 视为维护中,强制暂停 宁可误暂停,不可误开盘 SSOT:数据源状态的完整联动规则见第16章16.3节。
9.3.2 结算状态定义
结算状态(SettlementStatus)是本地派生字段,独立于数据源盘口状态,由结算接口或内部系统判定。
| 状态值 | 含义 | 触发来源 | 结算规则 |
|---|---|---|---|
| normal_end | 正常完场 | 结算接口(EventPeriodId=100触发查询) | 按结果结算 |
| cancelled | 取消 | 结算接口或人工标记 | 全额退款 |
| interrupted | 中断 | 结算接口或人工标记 | 待人工决策 |
| abandoned | 腰斩 | 结算接口或人工标记 | 部分结算+部分退款 |
| walkover | 弃权 | 人工标记 | 按弃权规则结算 |
| withdrawal | 退赛 | 人工标记 | 按退赛规则结算 |
9.3.3 数据源状态变更场景
| 变更 | 典型场景 | 持续时间 |
|---|---|---|
| 开盘 → 暂停 | 进球、红牌、VAR、比分变更 | 5-30 秒 |
| 暂停 → 开盘 | 事件处理完成,赔率更新后 | — |
| 开盘 → 维护 | 数据源系统维护、数据修正 | 分钟级 |
| 维护 → 开盘 | 维护完成 | — |
| 任意 → 关盘 | 玩法结算、赛事结束、提前关盘 | 永久 |
9.4 上架状态
上架状态表示赛事在本地系统的上架情况,由本地操作决定。
| 状态值 | 含义 | 客户端可见 | 接受投注 | 操盘列表筛选 |
|---|---|---|---|---|
| 待上架 | 数据源已下发,等待审核上架 | 否 | 否 | 「待上架」Tab |
| 已上架 | 已对外展示 | 是 | 由盘口状态决定 | 「全部」「滚球」「赛前」Tab |
| 已下架 | 人工隐藏 | 否 | 否 | 「全部」Tab |
9.4.1 上架状态与客户端可见性
| 上架状态 | 盘口状态 | 客户端是否可见 | 是否接受投注 |
|---|---|---|---|
| 待上架 | — | 否 | 否 |
| 已上架 | 开盘 | 是 | 是 |
| 已上架 | 隐藏 | 是 | 否 |
| 已上架 | 锁定 | 是 | 否 |
| 已上架 | 关盘 | 否 | 否 |
| 已下架 | — | 否 | 否 |
设计说明:已上架+关盘时客户端不可见。关盘表示玩法已结算或赛事已结束,此时即使赛事仍为"已上架"状态,客户端也不再展示该盘口/赛事。
9.5 盘口状态
盘口状态表示赛事下盘口的投注开关状态,由数据源状态和人工控制状态叠加计算。操盘列表显示的是该赛事所有盘口的汇总状态。
| 状态值 | 含义 | 触发方式 | 接受投注 | 客户端可见 |
|---|---|---|---|---|
| 开盘 | 可接受投注 | 人工取消隐藏或数据源恢复(需跟随配置为是) | 是 | 是 |
| 隐藏 | 临时隐藏投注 | 数据源推送(需跟随配置为是)、风控触发或人工隐藏,可自动恢复 | 否 | 是 |
| 锁定 | 人工锁定 | 仅人工操作,必须人工解锁 | 否 | 是 |
| 关盘 | 已关盘 | 玩法结算完成或赛事结束(数据源关盘强制执行) | 否 | 否 |
9.5.1 隐藏与锁定的区别
| 维度 | 隐藏 | 锁定 |
|---|---|---|
| 触发方式 | 系统/数据源/风控/人工 | 人工操作 |
| 恢复方式 | 可自动恢复(受跟随配置影响) | 必须人工解锁 |
| 典型场景 | 进球、红牌、数据延迟、下架联动 | 风险控制 |
| 数据源恢复时 | 可自动恢复(若跟随配置为是) | 保持锁定,需人工解锁 |
SSOT:隐藏来源枚举定义(manual/data_source/league_pause/risk_control等9种来源)见第16章16.1.4节。
9.5.2 盘口状态汇总规则
单个赛事包含多个盘口(让球、大小球、独赢等),操盘列表显示汇总状态的规则:
| 优先级 | 条件 | 显示状态 | 说明 |
|---|---|---|---|
| 1 | 存在任一盘口为锁定 | 锁定 | 锁定优先级最高 |
| 2 | 不存在锁定,存在隐藏 | 隐藏 | 部分盘口隐藏 |
| 3 | 全部盘口为开盘 | 开盘 | 全部可投注 |
| 4 | 全部盘口为关盘 | 关盘 | 全部已关盘 |
| — | 待上架或已下架 | 横杠(不显示) | 未上架赛事无盘口状态 |
设计说明:汇总状态只有四种(开盘/隐藏/锁定/关盘),不显示"部分关盘"。如需查看各盘口详细状态,可悬停查看分布或进入详情页。
9.5.3 数据源状态对盘口状态的影响
数据源(IM)会推送盘口状态,本地是否跟随由联赛管理中的「是否跟随数据源盘口状态」(默认值为「是」,联赛管理配置)决定。
| 数据源状态 | 跟随配置=是 | 跟随配置=否 | 备注 |
|---|---|---|---|
| 开盘 | 盘口可开盘 | 盘口可开盘 | 两种配置均可开盘 |
| 暂停 | C端显示暂停投注(本地状态不变) | 本地保持当前状态,告警列显示「数据源暂停」 | 不改变本地状态 |
| 恢复 | C端恢复投注(本地状态不变) | 本地保持当前状态,需人工取消隐藏 | 恢复不自动显示 |
| 维护 | 本地强制隐藏 | 本地强制隐藏 | 不受配置影响 |
| 关盘 | 本地强制关盘 | 本地强制关盘 | 不受配置影响,优先级最高 |
9.5.4 盘口最终状态计算规则
SSOT:状态覆盖优先级的完整定义见第16章16.3.11节。本节仅作简要说明。
盘口最终状态由多个触发源按优先级叠加计算(数字越小优先级越高):
| 优先级 | 触发源 | 说明 |
|---|---|---|
| 1 | 数据源关盘 | 终态,不可逆 |
| 2 | 人工锁定 | 必须人工解锁 |
| 3 | 风控自动隐藏 | 触发条件解除后可自动恢复 |
| 4 | 联赛暂停/关盘 | 联赛级控制 |
| 5 | 数据源暂停/恢复 | 受跟随配置控制 |
| 6 | 人工隐藏/取消隐藏 | 最低优先级 |
状态计算结果速查表:
| 人工控制状态 | 数据源状态 | 最终盘口状态 | 接受投注 |
|---|---|---|---|
| 锁定 | 任意 | 锁定 | 否 |
| 隐藏 | 任意(非关盘) | 隐藏 | 否 |
| 无 | 维护 | 隐藏(强制) | 否 |
| 无 | 暂停 | 开盘(C端暂停投注) | 否 |
| 无 | 关盘 | 关盘 | 否 |
| 无 | 开盘 | 开盘 | 是 |
9.6 跟随数据源配置
「是否跟随数据源盘口状态」是联赛级别的配置项,控制上架后盘口是否自动跟随 IM 开盘/暂停状态。
| 字段名 | 数据类型 | 配置位置 | 默认值 | 说明 |
|---|---|---|---|---|
| 是否跟随数据源盘口状态 | 布尔值 | 联赛管理页面 | 是 | 控制数据源暂停/恢复时本地是否跟随 |
9.6.1 配置影响范围
配置粒度为联赛级别,同一联赛下所有赛事共享此配置。配置变更后对该联赛下所有已上架赛事立即生效。数据源维护和关盘状态不受此配置影响,始终强制执行。
口径补充:
- 本节"立即生效"仅指【是否跟随数据源盘口状态】这一个跟随类配置。
- 其他配置项(例如默认操盘手、玩法启用列表等联赛管理配置,以及RTP范围等风控管理配置)在赛事【上架时固化为赛事快照】;配置变更仅对【新上架赛事】生效,已上架赛事不回刷。
- 统一规则详见:第16章16.8.7节「配置变更生效时机」。
9.6.2 跟随配置使用场景
| 配置值 | 适用场景 | 说明 |
|---|---|---|
| 是(默认) | 常规联赛、信任数据源的联赛 | 盘口状态完全跟随数据源,减少人工干预 |
| 否 | 低级别联赛、数据源不稳定的联赛 | 盘口状态由人工控制,数据源暂停时仅告警不自动隐藏 |
9.7 盘口数
盘口数展示当前赛事的盘口开盘情况。
| 显示格式 | 说明 | 示例 |
|---|---|---|
| X 开 / Y 总 | X 为开盘数,Y 为总盘口数 | 13 开 / 15 总 |
9.7.1 盘口数计算规则
| 字段 | 计算方式 | 说明 |
|---|---|---|
| 开盘盘口数 | COUNT(盘口状态 = 开盘) | 当前可投注的盘口数量 |
| 非开盘盘口数 | COUNT(盘口状态 IN (隐藏, 锁定, 关盘)) | 当前不可投注的盘口数量 |
| 总盘口数 | COUNT(所有盘口) | 该赛事所有盘口总数 |
9.7.2 盘口数显示格式
| 显示位置 | 显示格式 | 示例 |
|---|---|---|
| 操盘列表第五列「盘口数」 | X开/Y总 | 15开/18总 |
| 赛事操盘详情页 | X开/Y总 或 分类型详情 | 同上 |
格式说明:与07章7.2.5节保持一致,显示「开盘数/总数」而非「开盘数/关盘数」。
9.8 赔率类型
赔率类型展示当前赛事使用的赔率格式。
| 赔率类型 | 代码 | 显示颜色 | 说明 | 主要市场 |
|---|---|---|---|---|
| 马来盘 | MY | 绿色 | 亚洲主流 | 马来西亚、新加坡 |
| 欧洲盘 | EU | 蓝色 | 欧洲标准 | 欧洲、美国 |
| 香港盘 | HK | 橙色 | 港澳常用 | 香港、澳门 |
| 印尼盘 | ID | 紫色 | 东南亚常用 | 印尼、越南 |
赔率类型在联赛管理中配置,操盘列表仅展示。
9.8.1 赔率类型转换关系
| 原始类型 | 马来盘 | 香港盘 | 印尼盘 | 欧洲盘 |
|---|---|---|---|---|
| 马来盘正数 +0.5 | +0.5 | 0.5 | +0.5 | 1.5 |
| 马来盘负数 -0.5 | -0.5 | 2.0 | -2.0 | 3.0 |
说明:赔率转换公式详见数据接口文档。
9.9 投注统计字段
| 字段名 | 数据类型 | 计算公式 | 说明 |
|---|---|---|---|
| 投注总额 | 金额 | SUM(注单.投注金额) | 该赛事所有注单的投注金额合计 |
| 预计赔付 | 金额 | SUM(注单.投注金额 × 注单.赔率) | 按当前比分计算的预计赔付金额 |
| 预估盈亏 | 金额 | 投注总额 - 预计赔付 | 正数为盈利,负数为亏损 |
| 最高单边比例 | 百分比 | MAX(各玩法单边比例) | 所有玩法中单边比例最高的值 |
| 最高单边方向 | 字符串 | — | 最高单边比例对应的投注方向 |
| 最高单边玩法 | 字符串 | — | 最高单边比例对应的玩法名称 |
| 开盘玩法数 | 整数 | COUNT(玩法状态 = 开盘) | 当前开盘的玩法数量 |
9.9.1 单边比例计算规则
单边比例用于衡量某个玩法的投注分布是否失衡。
| 字段 | 计算公式 | 示例 |
|---|---|---|
| 单边比例 | MAX(某方向投注额 / 该玩法总投注额) × 100% | 让主投注 82 万,让客投注 18 万,单边比例 = 82% |
| 单边方向 | 投注额最高的方向 | 让主 |
9.9.2 投注统计字段更新频率
| 字段 | 更新频率 | 说明 |
|---|---|---|
| 投注总额 | 实时 | 每笔注单确认后立即更新 |
| 预计赔付 | 实时 | 每笔注单确认后立即更新 |
| 预估盈亏 | 实时 | 每笔注单确认后立即更新 |
| 最高单边比例 | 实时 | 每笔注单确认后立即更新 |
| 开盘玩法数 | 实时 | 盘口状态变更后立即更新 |
9.10 操盘手分配
| 字段名 | 数据类型 | 说明 | 是否必填 |
|---|---|---|---|
| 主操盘手编号 | 字符串 | 主要负责的操盘手 | 上架时必填 |
| 主操盘手姓名 | 字符串 | 主要负责的操盘手姓名 | — |
| 协助操盘手列表 | 数组 | 协助操盘的其他操盘手 | 选填 |
| 分配时间 | 时间戳 | 最后一次分配时间 | 自动记录 |
| 分配人 | 字符串 | 执行分配操作的主管 | 自动记录 |
9.10.1 操盘手分配规则
| 场景 | 分配方式 | 说明 |
|---|---|---|
| 上架时 | 必须分配 | 上架确认弹窗中选择操盘手 |
| 批量上架 | 可选择统一分配或按联赛默认 | 批量操作时提供选项 |
| 已上架赛事 | 主管可更换 | 点击操盘手列更换 |
9.10.2 联赛默认操盘手
联赛管理中定义联赛默认操盘手(默认值为空,联赛管理配置),批量上架时选择「按联赛默认」自动分配。
| 字段名 | 数据类型 | 配置位置 | 说明 |
|---|---|---|---|
| 联赛默认操盘手 | 字符串 | 联赛管理页面 | 该联赛赛事上架时的默认操盘手 |
9.11 告警类型枚举
告警类型用于标识赛事当前存在的异常或需关注的情况,在操盘列表的告警列中显示。
9.11.1 告警类型定义
| 告警代码 | 标签文案 | 样式 | 触发条件 | 优先级 |
|---|---|---|---|---|
| MOST_URGENT | 最紧急 | 红色闪烁 | 上架状态=待上架 且 比赛进程=滚球 | 1 |
| URGENT | 紧急 | 红色 | 上架状态=待上架 且 比赛进程=即将 且 距开赛≤10分钟 | 2 |
| ONE_SIDE_EXCEED | 单边超限 | 红色 | 最高单边比例超过告警阈值 | 3 |
| LARGE_BET | 大额 | 橙色 | 单笔或单场合计投注超过大额阈值 | 4 |
| POSTPONE_TIMEOUT | 延期超时 | 橙色/红色 | 结算状态=延期 且 延期时长超过阈值(80%橙色/100%红色/150%红色+置顶) | 5 |
| MATCH_PAUSED | 比赛暂停 | 橙色 | 比赛进程=滚球 且 RBTimeStatus=3(暂停) | 6 |
| SOURCE_PAUSED | 数据源暂停 | 橙色 | 数据源状态=暂停 且 跟随配置=否 | 7 |
| SOURCE_MAINT | 维护中 | 紫色 | IsMaintenance=true | 8 |
| DATA_DELAY | 数据延迟 | 蓝色 | 数据源最后推送时间距当前超过阈值(仅滚球赛事,默认5秒) | 9 |
| UNASSIGNED | 未分配 | 橙色 | 上架状态=已上架 且 操盘手未分配 且 比赛进程 IN (滚球, 即将) | 10 |
| NEUTRAL_GROUND | 中立场 | 蓝色 | GroundTypeId=0 且 比赛进程 IN (滚球, 即将) | 11 |
9.11.2 告警级别分类
| 级别 | 包含告警类型 | 显示特征 | 处理要求 |
|---|---|---|---|
| 严重 | 最紧急、紧急、单边超限、延期超时(100%+) | 红色/闪烁 | 需立即处理 |
| 警告 | 大额投注、延期超时(80%)、比赛暂停、数据源暂停 | 橙色 | 需尽快关注 |
| 提示 | 数据源维护、数据延迟、未分配、中立场 | 紫色/蓝色/橙色 | 需知晓 |
9.11.3 告警阈值配置
SSOT:告警阈值的完整定义见第16章16.5.0节「风控告警阈值定义」。
告警触发的具体阈值配置位置:
| 告警类型 | 阈值参数字段标识 | 配置位置 |
|---|---|---|
| 单边超限 | one_side_limit | 风控管理 |
| 大额投注(单笔) | large_bet_single | 风控管理 |
| 大额投注(累计) | large_bet_total | 风控管理 |
| 延期超时 | postpone_timeout | 联赛管理 |
| 数据延迟 | data_delay(固定值5秒) | 系统固定 |
| 即将开赛告警 | upcoming_alert | 联赛管理 |
各阈值的默认值与允许范围详见第16章16.5.0节。
9.11.4 告警显示规则
| 规则项 | 说明 |
|---|---|
| 多告警显示 | 垂直排列显示,最多显示3个,超出显示 +N |
| 显示优先级 | 按9.11.1表中优先级排序,优先级数值越小越优先显示 |
| 无告警 | 显示 — |
| 悬停交互 | 悬停告警标签显示详细信息(如大额投注显示具体金额和时间) |
9.11.5 告警与行置顶联动
特定告警类型触发行置顶,详见第7章7.3节「行样式规则」:
| 告警类型 | 是否触发置顶 | 置顶优先级 |
|---|---|---|
| 最紧急 | 是 | 1 |
| 紧急 | 是 | 2 |
| 单边超限、大额投注 | 是 | 3 |
| 延期超时(150%+) | 是 | 4 |
| 其他告警 | 否 | — |
9.11.6 延迟概念区分
系统中涉及多种"延迟"概念,需明确区分:
| 延迟类型 | 定义 | 检测方式 | 处理机制 | 相关章节 |
|---|---|---|---|---|
| 数据源推送延迟 | IM数据源最后一次推送赛事数据到当前的时间间隔 | 比较最后更新时间与服务器时间 | 触发DATA_DELAY告警 | 9.11、16.5 |
| WebSocket连接延迟 | WebSocket心跳响应超时 | 心跳机制(30秒间隔) | 触发断线重连 | 13.1 |
| 投注统计延迟 | 投注统计数据的更新滞后 | 实时推送机制 | 无告警,仅影响显示 | 13.4 |
说明:
- DATA_DELAY告警仅针对数据源推送延迟,阈值默认5秒(固定值),仅对滚球赛事生效
- WebSocket连接延迟是通信层面的健康检查,不产生告警,触发断线重连机制(详见数据通信机制相关文档)
- 投注统计延迟是正常的数据传输时差,通过WebSocket实时推送保证最小延迟
9.11.7 全局阈值速查表
系统中涉及多种阈值,本节汇总说明以避免混淆:
| 阈值名称 | 数值 | 用途 | 定义位置 |
|---|---|---|---|
| 数据源推送延迟告警 | 5秒(固定值) | DATA_DELAY告警触发 | 9.11.3/16.5.0 |
| WebSocket心跳间隔 | 30秒 | 心跳检测周期 | 13.1节 |
| WebSocket断线阈值 | 60秒 | 显示断线提示 | 13.6节 |
| 即将开赛(比赛进程) | ≤30分钟 | Tab筛选分类,本地派生字段 | 9.2.3 |
| 紧急(置顶/告警/一键锁盘) | ≤10分钟(固定值) | 置顶条件、一键锁盘范围、紧急告警 | 7.3.1/4.2.4 |
| 单边超限阈值 | 风控管理定义 | ONE_SIDE_EXCEED告警 | 16.5.0 |
| 大额投注阈值 | 风控管理定义 | LARGE_BET告警 | 16.5.0 |
| 延期超时阈值 | 24小时(默认) | POSTPONE_TIMEOUT告警 | 16.5.0 |
| 即将开赛告警阈值 | 10分钟(默认) | URGENT告警 | 16.5.0 |
阈值区分说明:
- 即将开赛(比赛进程):≤30分钟,用于Tab筛选分类,区分"赛前"和"即将"
- 紧急(一键锁盘/置顶):≤10分钟,用于置顶条件、一键锁盘范围、紧急告警触发
- 两者是不同概念,10分钟为固定值
- 延迟相关阈值见上方9.11.6节详细说明
9.12 状态组合约束
以下状态组合在业务上不应出现,系统需要进行校验:
| 状态组合 | 是否允许 | 说明 | 系统行为 |
|---|---|---|---|
| 已上架且未分配操盘手 | 允许但告警 | 滚球或即将状态触发未分配告警 | 告警列显示「未分配」 |
| 待上架且盘口开盘 | 不允许 | 待上架赛事盘口不应开盘 | 系统阻止,提示错误 |
| 已下架且盘口开盘 | 不允许 | 已下架赛事盘口不应开盘 | 下架时自动隐藏所有盘口 |
| 完场且盘口开盘 | 不允许 | 完场赛事盘口不应开盘 | 系统自动关闭 |
9.13 从操盘列表流转到结算管理的触发条件
| 触发条件 | 数据来源 | 系统行为 |
|---|---|---|
| EventPeriodId=100 | IM Delta推送 | 关盘所有盘口,创建结算记录,等待结算接口返回具体结算状态 |
| 结算接口返回cancelled/interrupted/abandoned | 结算系统 | 更新结算状态,执行对应结算规则,从操盘列表移除 |
| 人工标记walkover/withdrawal | 操盘手操作 | 更新结算状态,执行对应结算规则,从操盘列表移除 |
修订记录
| 版本 | 日期 | 修订内容 |
|---|---|---|
| v1.0 | 2026-01-19 | 初稿 |
| v2.0 | 2026-01-20 | 重构状态模型:区分IM数据源字段与本地派生字段;修正EventStatusId映射;新增9.0字段映射说明、9.3.2结算状态定义 |
| v2.1 | 2026-01-20 | 【审计修正】1) 9.4.1节修正关盘时客户端不可见;2) 9.5节增加客户端可见列;3) 9.5.2节移除"部分关盘"状态 |
| v2.2 | 2026-01-21 | 【字段覆盖检查】新增9.11告警类型枚举节(10种告警类型、级别分类、阈值配置、显示规则、置顶联动);原9.11-9.12改为9.12-9.13 |
| v2.3 | 2026-01-21 | 【告警一致性修正】9.11.1节新增POSTPONE_TIMEOUT(延期超时)告警,告警类型从10种增至11种;更新9.11.2级别分类、9.11.3阈值配置、9.11.5置顶联动 |
| v2.4 | 2026-01-27 | 【逻辑一致性修复】1) 9.2节比赛进程增加"中场";2) 9.2.1节EventPeriodId 25/45映射改为"中场";3) 9.11.1节DATA_DELAY改为"数据延迟"并明确阈值;4) 新增9.11.6节"延迟概念区分" |
| v2.5 | 2026-01-28 | 【全局审计修正】1) 新增9.0节核心术语定义(玩法/盘口线/选项/盘口);2) 9.5.4节状态覆盖优先级改为引用16.3.11 SSOT;3) 9.2.3节补充EventPeriodId=100关盘联动说明;4) 9.6.1节修正跨章节引用;5) 9.11.3节告警阈值改为引用16.5.0 SSOT;6) 全文"开盘"改为"开盘" |
| v2.6 | 2026-01-28 | 【术语一致性修复】1) 9.2节补充比赛进程/比赛阶段术语区分说明;2) 9.2.1节"已结束"统一为"完场";3) 9.3节补充SSOT声明引用16.3节;4) 9.3.1节补充"更保守处理"具体定义;5) 9.7.1节"关盘盘口数"改为"非开盘盘口数";6) 9.5.1节补充暂停来源SSOT引用;7) 9.0.4节LiveStatusId字段说明补充完整 |
| v2.7 | 2026-01-28 | 【审计修正】新增9.0.5节「IM三层状态字段关系说明」,澄清EventStatusId/LiveStatusId/SettlementStatus三层独立性 |
| v2.8 | 2026-01-28 | 【术语澄清】明确区分"即将开赛(比赛进程≤30分钟)"与"紧急(一键锁盘/置顶≤10分钟)"两个不同概念,补充阈值表区分说明 |
| v2.9 | 2026-01-29 | 【术语一致性】本地盘口状态"暂停"统一更名为"隐藏",与宪法v1.6保持一致;人工操作从"暂停/恢复"改为"隐藏/取消隐藏";9.0.4节延期/维护时"盘口暂停"→"盘口隐藏";数据源状态术语(IM暂停)保持不变 |
| v3.0 | 2026-02-11 | 【A1架构修正】IM暂停不再改变本地状态,仅影响C端展示:1)9.5.3节数据源状态行为修正:暂停改为"C端显示暂停投注(本地状态不变)";2)9.5.4节状态计算结果表暂停项改为"开盘(C端暂停投注)",明确本地保持当前状态 |