Appearance
第十二章 状态流转规则
关盘口径(2026-04-21 生效):关盘来源统一为数据源推送(唯一来源);关盘 = 绝对终态,操盘页与结算详情页均不提供人工开盘入口。
状态定义和流转图在结算列表和结算详情页中共用。完整的盘口状态流转见结算详情页第 18 章。
本期范围:本章生命周期图中涉及"L1 盘口自动结算 / L2 自动结算 / 串关母单自动派彩触发"等节点本期不实装(见第 1.1a 节 本期范围声明)。一期实装中,对应节点替换为"结算人员在对应盘口卡片手动确认结算";其他状态流转规则不变。
12.0 赛事结算生命周期
一场赛事从开赛到结算完成,在结算列表中经历以下阶段:
前置硬约束:赛前赛事(距开赛 > 30 分钟)不进入结算列表(对齐 01.5 分界规则)。结算列表生命周期从赛事进入即将开赛阶段(距开赛 ≤ 30 分钟)开始,到赛事级确认结算或归档终止。赛前赛事的盘口投注管理在操盘列表进行。
赛事进入即将开赛阶段(距开赛 ≤ 30 分钟,尚未开赛)
│
↓ 自动出现在结算列表(待结算,盘口进度 0/0)
│ ※ 盘口是否可结算取决于盘口是否已关盘,与赛事是否开赛无关
│
↓ 赛事开赛(比赛进程 = 滚球)
│
│ 比赛进行中(各类盘口按自身判定时机独立推进,5 类)
│ ├── 上半场类盘口(BT1-1H / BT2-1H / BT6-1H / BT9 半全场):半场结束后关盘 + 结算
│ ├── 15 分钟段类盘口(BT48 / BT179 / BT180 15 分钟段):该段结束后关盘 + 结算
│ ├── 事件触发类盘口(BT37 第 X 粒进球队伍 / BT159 角球第 X 粒):对应事件发生后关盘 + 结算(可能远早于终场)
│ ├── 比分变动触发类盘口(BT6 波胆赛中判输部分):比分变化时实时触发结算,无法中奖选项标记为输(注单状态=已结算,派彩=0)。二次结算时所有注单统一回退(含赛中已判输)
│ ├── IM推送阶段比分 → 本地判定 → L1盘口自动结算 → 进度更新(如 6/6)
│ └── L3/L4盘口 → 注单视图出现「人工结算」按钮
│
│ 详见[结算详情页 7.8.1 盘口按判定时机分类](/settlement-detail/07-盘口结算卡片#_7-8-1-盘口按判定时机分类)
│
↓ 比赛结束
│
│ ├── 全场类盘口(BT1 / BT2 / BT3 / BT5 / BT7 / BT8 / BT158 / BT160 / BT161 等)关盘 → 进度变化(如 6/22)
│ ├── IM推送终场比分 → 本地判定 → L1盘口自动结算 → 进度快速跳到(如 20/22)
│ └── 剩余L3/L4盘口 → 结算人员在注单视图人工结算
│
↓ 所有盘口结算完成(进度 22/22)
│
│ 串关母单自动结算(无需结算人员确认)
│
↓ 结算人员在结算详情页点击「确认结算」
│
↓ 赛事状态 → 已结算,从操盘列表移除
已结算赛事停留在结算列表的结算当天,不清理异常分支:
比赛进行中 → 腰斩暂缓/延期暂缓 → 赛事状态 → 异常态 → 立即批量关盘所有开盘中盘口
赛事取消 / 腰斩全额退款 / 延期超时退款 → 所有盘口退款 → 赛事状态 → 已取消
已结算后发现错误(含数据错误) → 赛事驳回(已结算→待结算,盘口不变)→ 赛事回到操盘列表 → 盘口二次结算 → 二次结算数据错误不进入异常态:赛事异常仅限于赛事级不可恢复情形(取消 / 延期 / 腰斩)。数据错误的实际修正走各自独立入口(操盘页调赔率 / 赛果录入页修正 / 盘口卡片 void / 盘口二次结算);第 16.5 节赛事异常处理 → 数据错误弹窗仅做审计标记(不下架、不关盘、不改赛事态、不动订单)。
关键说明:
- 刚开赛的赛事盘口进度为 0/0,正常展示在列表中,无需特殊处理
- 赛事变为「已结算」的条件 = 所有盘口结算完成 + 结算人员手动点击确认结算
- 已结算赛事不会从结算列表清理,按结算日期归档
- 赛事驳回(已结算→待结算)后,赛事重新出现在操盘列表,结算列表状态变为「待结算」
- 赛事驳回仅改赛事状态,不影响盘口/注单/母单。盘口二次结算需在赛事待结算时执行
- 驳回时间窗:仅在距赛事最新一次结算时间(UTC 时间戳)≤ 24h 内允许;每次重新确认结算时窗口向后滚动;超窗后终态永久化(详见 11.4 结算时间定义 和结算详情 15.3)
12.1 赛事状态流转
12.1b 盘口状态流转
盘口状态流转 主定义为结算详情页 18.2;本节为列表视角的简要呈现,供理解盘口进度分子/分母变化与注单联动。
列表侧影响:
| 盘口状态变化 | 列表赛事视图呈现 |
|---|---|
| 开盘 → 关盘 | 盘口进度分母 +1 |
| 关盘 → 已结算 | 盘口进度分子 +1 |
| 关盘 → 开盘(数据源推送开盘自动回滚) | 分母 -1(盘口退出统计) |
| 已结算 → 关盘(盘口二次结算) | 分子 -1,分母不变;该盘口下注单联动回退为待结算 |
| 关盘 → 已取消 | 分母 -1(取消盘口不计入进度统计) |
数据源推送开盘信号触发的自动回滚仅作用于可操盘盘口与非本地锁定态的数据源盘口;本地锁定态的数据源盘口对后续数据源推送一律拒收。详见结算详情页 18.2 和 15.6d 数据源推送开盘信号的自动回滚流程。
12.2 注单状态流转
状态流转触发条件(补 mermaid 图之外的文字说明):
| 从状态 | 到状态 | 触发条件 |
|---|---|---|
| [*] → 待结算 | 投注成功 | 用户下单成功,注单入库 |
| 待结算 → 已结算 | 所属盘口结算结果确定(L1 自动 / L2/L3/L4 人工) | 盘口结算完成后该盘口下所有注单联动变为已结算;配合 第 6.8 节 同基准分组联动规则(多组场景下按基准分组分别联动) |
| 已结算 → 待结算(关键触发) | 所属盘口被盘口二次结算(结算详情页触发) | 盘口结算结果撤销、盘口回退为关盘态;该盘口下所有已结算注单联动回退为待结算,等重新选择结算结果 |
| 待结算 → 已取消 | ① 赛事被标记取消(结算人员在结算详情页触发)/ ② 单个盘口被取消 | 注单直接变为已取消状态;投注额退还用户(通过 第 15.4 节 派彩回收机制) |
| 已结算 / 已取消 → [*] | 注单生命周期结束 | 持久化存储,仅作查询,不再参与流转(赛事驳回时先走"已结算 → 待结算"不走终态) |
注意:赛事驳回仅改变赛事状态,不触发注单状态变化;只有后续的"盘口二次结算"才真正联动回退注单。详见 settlement-detail 第 18.3.1 节。
12.3 串关母单结算触发
串关结算完整规则(含子单系数公式推导、复式串关降级、短路判定)见结算详情页第 14 章。以下为列表视角的简要说明。
母单结算全自动,无需结算人员确认。
短路结算(提前结算)(对齐 detail 第 14.2 节):任一子单判输即触发"短路结算"——母单派彩必为 0,系统立即结算母单为已结算·派彩 0,不等其余子单结算完成。分段子单(上半场类 / 15 分钟段)判输时同样触发短路。注单视图「串关」Tab 计数与短路后的真实状态同步。
子单系数定义
| 子单结算结果 | 系数 |
|---|---|
| 赢 | Decimal(HK + 1) |
| 输 | 0(母单派彩 = 0) |
| 赢半 | 0.5 × HK + 1 |
| 输半 | 0.5 |
| 走水 | 1.0 |
| 取消 | 1.0(子单降级,等同于移除) |
| 退款 | 1.0(子单降级,等同于移除) |
盘口二次结算对母单的影响
| 场景 | 行为 |
|---|---|
| 某子单对应盘口被二次结算 | 母单状态回退为待结算 |
| 母单已派彩 | 母单派彩待二次结算后差额处理(直接扣回 + 坏账) |
| 其他子单 | 不受影响 |
| 子单二次结算后 | 母单自动重新计算派彩 |