Skip to content
🚫 本页面不支持以下人工操作开盘 / 重新开盘 / 关盘 —— 统一由数据源推送触发(唯一来源)。关盘 = 绝对终态,无人工回退路径。
⚠️ 一期范围调整(2026-04-23) 已结算盘口赛果变化、VAR 改判等场景,一期不做自动重结算,系统仅在受影响的已结算盘口上标记提示"⚠️ 结算比分已发生变化,请检查盘口赛果",由结算人员主动发起「盘口二次结算」处理。正文相关章节规则保留作为二期设计参考。

第九章 弹窗交互

关盘口径(2026-04-21 生效):关盘来源统一为数据源推送(唯一来源);关盘 = 绝对终态,操盘页与结算详情页均不提供人工开盘入口。

9.1 赛果录入弹窗(4 个独立弹窗 + 全场扩展弹窗内 3 分区)

赛果录入 UI 设计(4 弹窗分治)

  • 顶部无统一「赛果录入」按钮;改为按时段分组,每组顶部有独立入口
  • 每个按钮打开独立弹窗,弹窗内仅录入该时段的赛果字段
  • 15 分钟段弹窗:单弹窗内 6 Tab(常规 90 分钟分 6 段),每 Tab 独立应用按钮
  • 全场赛果与扩展弹窗:弹窗内 3 分区(A 全场累计扩展 · B 加时赛 · C 点球大战),各分区独立应用按钮,按前置硬约束依次启用(A → B → C)
  • 冠军赛事 / 长期盘口(EventTypeId = 1)不在本弹窗范围,由独立的冠军赛事结算详情模块处理

9.1.0 弹窗总览(4 个按钮 / 4 个弹窗)

按钮位置启用条件弹窗内容
📝 上半场赛果录入(蓝)「上半场类盘口」分组顶部半场结束(半场盘口关盘 或 数据源已返回半场比分)半场比分(主/客)+ 上半场进球详情 + 半场扩展统计(半场角球 / 半场牌)+ 半场特殊事件(半场乌龙 / 点球)
📝 下半场赛果录入(青绿)「下半场类盘口」分组顶部上半场弹窗已应用 + 任一 2H 盘口已关盘 或 数据源已返回全场比分(下半场 = 全场 − 半场 预填)下半场比分(主/客)+ 下半场进球详情 + 下半场扩展统计(下半场角球 / 下半场牌)+ 下半场特殊事件
📝 15 分钟段赛果录入(紫)「15 分钟段类盘口」分组顶部至少一段结束6 Tab:0-15' / 15-30' / 30-45' / 45-60' / 60-75' / 75-90'(对应段结束后启用;每 Tab 独立应用)
📝 全场赛果与扩展(绿)「全场类盘口」分组顶部上半场 + 下半场均已应用(分区 A);赛事进入加时(分区 B);赛事进入点球大战(分区 C)分区 A(全场累计扩展):全场合计比分只读 + 全场累计角球/牌只读 + 射门/射正/越位/犯规;分区 B(加时赛):加时上/下比分 + 加时段进球/角球/牌;分区 C(点球大战):主/客点球进球数 + 晋级方

事件触发类盘口(BT37 / BT159):依赖进球明细 / 角球明细,这些字段在"全场赛果录入"弹窗的子模块中录入。当结算人员在全场弹窗录入某粒进球时,相关事件触发类盘口即可结算(不必等全场结束)。

BT6 波胆赛中判输:依赖实时比分推送,由系统自动判输扫描,无需任何录入按钮

一期无玩法级特殊录入

9.1.1 半场赛果录入弹窗

┌─ 📝 半场赛果录入 ──────────────────────────┐
│                                            │
│ 数据来源:[绿色 数据源 / 橙色 人工]          │
│                                            │
│ 主队半场得分: [  ]                          │
│ 客队半场得分: [  ]                          │
│                                            │
│ 校验:非负整数;半场 ≤ 全场(若全场已录入)  │
│                                            │
│ 影响盘口(上半场类):                         │
│ • BT1-1H 上半场让球                         │
│ • BT2-1H 上半场大小                         │
│ • BT6-1H 上半场波胆                         │
│ • BT9 半全场(依赖半场 + 全场结果组合)      │
│                                            │
│          [取消]   [应用半场赛果]              │
└────────────────────────────────────────────┘

前置条件

  • 任一上半场类盘口已关盘 或 数据源已返回半场比分
  • 未满足时按钮灰置,提示「半场尚未结束 / 赛果未到位」

字段归属:本弹窗录半场比分 + 上半场进球详情 + 半场扩展统计(半场角球 / 半场牌)+ 半场特殊事件(时间 ≤ 45 分钟 + 半场伤停,上限 50 分钟);不含下半场、15 分钟段、全场扩展字段。完整归属见第 11.2.2.1 节

应用后行为

  • 上半场类盘口(已关盘)按映射表(第 11.6 节)计算结算结果 → 预填到盘口卡片
  • 半场角球类 / 半场牌类盘口(若有)按半场扩展字段结算
  • BT159 半场相关 / BT37 半场相关按上半场进球详情逐粒触发结算
  • 已录入字段锁定,不可再修改(需先对 1H 类已结算盘口执行二次结算才能重新录入)

9.1.2 下半场赛果录入弹窗(新增)

┌─ 📝 下半场赛果录入 ────────────────────────────┐
│                                                │
│ 前置:✓ 上半场已应用(半场 1:0)                 │
│ 数据源:[绿色 数据源 / 橙色 人工]                │
│                                                │
│ ┌─ 基础层(必填)─────────────────────┐         │
│ │ 主队下半场得分: [  ] (预填 = 数据源│         │
│ │                      全场 − 半场)   │         │
│ │ 客队下半场得分: [  ]                  │         │
│ └─────────────────────────────────────┘         │
│                                                │
│ ┌─ 下半场进球详情(条件必填)───────────┐         │
│ │ 第 1 粒:[主/客] 时间[  ]分 球员[  ]  │         │
│ │ 第 2 粒:[主/客] 时间[  ]分 球员[  ]  │         │
│ │ ... (按「添加进球」动态增加行)         │         │
│ │ ※ 时间范围 46 ≤ t ≤ 90 + 伤停         │         │
│ │ ※ 行数 = 下半场总进球(主+客)         │         │
│ └─────────────────────────────────────┘         │
│                                                │
│ ┌─ 下半场扩展统计(条件必填)───────────┐         │
│ │ 角球:主[  ] 客[  ] + 首个角球        │         │
│ │ 红黄牌:主黄[  ]红[  ] 客黄[  ]红[  ] │         │
│ │       + 首张牌                       │         │
│ │ 乌龙球 / 点球进球(选填)             │         │
│ └─────────────────────────────────────┘         │
│                                                │
│ 校验:非负整数;行数与比分一致;跨弹窗一致性    │
│       (上+下 合计核对数据源全场,见 11.4.5)    │
│                                                │
│ 影响盘口:                                      │
│ • BT1-2H / BT2-2H / BT6-2H / BT24-30 / BT57   │
│ • 下半场角球类 / 下半场牌类                      │
│ • BT159 下半场相关 / BT37 下半场相关            │
│                                                │
│          [取消]   [应用下半场赛果]               │
└────────────────────────────────────────────────┘

前置条件(硬约束)

  • 上半场弹窗必须已应用(否则本按钮灰置,提示「请先录入并应用上半场赛果」)
  • 任一 2H 盘口已关盘 或 数据源已返回全场比分

字段归属:本弹窗录下半场比分 + 下半场进球详情 + 下半场扩展统计 + 下半场特殊事件(时间 46-90 + 全场伤停,上限 100);不含上半场、15 分钟段、全场扩展字段。完整归属见第 11.2.2.2 节

数据源预填:数据源开关 = 开 且数据源已推全场比分时,下半场比分字段预填 = 数据源全场比分 − 半场比分;结算人员可核对 / 修正。若数据源未推送全场比分,字段为空由结算人员人工录入。

应用后行为

  • 2H 类盘口立即按映射表计算结算结果 → 预填盘口卡片(不依赖全场扩展弹窗是否应用,独立结算)
  • 下半场角球类 / 下半场牌类盘口(若有)按下半场扩展字段结算
  • BT159 下半场相关 / BT37 下半场相关按下半场进球详情逐粒触发结算
  • 跨弹窗一致性校验:上+下 合计非负;若数据源已推全场,合计值需与数据源全场比分一致(不一致橙色提示,不阻塞)

9.1.3 15 分钟段赛果录入弹窗(6 Tab + 独立应用)

┌─ 📝 15 分钟段赛果录入 ──────────────────────────────────┐
│                                                          │
│ [0-15'] [15-30'] [30-45'] [45-60'] [60-75'] [75-90']   │
│   ✓ 已应用  ●当前  ○未结束  ○未结束  ○未结束  ○未结束   │
│                                                          │
│ 当前 Tab:15-30'  (已结束,可录入)                        │
│                                                          │
│ ┌────────────────────────────────────────┐               │
│ │ 主队 15-30' 得分: [  ]                  │               │
│ │ 客队 15-30' 得分: [  ]                  │               │
│ │                                         │               │
│ │ 段间递增校验:累计比分 ≥ 上一段累计比分   │               │
│ │                                         │               │
│ │                    [应用本段赛果]  ◄── 仅影响 15-30' 段 │
│ └────────────────────────────────────────┘               │
│                                                          │
│ ⚠️ 每个 Tab 独立应用;切换 Tab 不丢失已填值;             │
│    应用仅影响该段对应盘口(BT48 / BT179 / BT180 该段)     │
│                                                          │
│                              [关闭]                      │
└──────────────────────────────────────────────────────────┘

Tab 状态

状态标识说明
已应用该段赛果已录入并应用
当前当前选中的 Tab
未结束○(Tab 禁用)该段尚未结束(系统按时间判断)

应用后行为

  • 仅该段对应的 BT48/BT179/BT180 盘口按该段比分计算结算结果
  • 其他段盘口不受影响(不触发任何其他段的结算)
  • 切换 Tab 后 UI 状态切换,但已填值和已应用状态保留

字段归属:本弹窗只管常规 6 段(0-15' / 16-30' / 31-45' / 46-60' / 61-75' / 76-90')。加时段(91-120')不在本弹窗录入,改在全场赛果录入弹窗的加时字段中录入(见 9.1.3)。完整归属见第 11.2.2 节

9.1.4 全场赛果与扩展弹窗(3 分区,各分区独立应用按钮)

弹窗内 3 个独立分区(按前置硬约束依次启用:A → B → C),各分区独立应用按钮

┌─ 📝 全场赛果与扩展 ──────────────────────────────────┐
│                                                      │
│ 前置:✓ 上半场已应用(1:0)·✓ 下半场已应用(1:1)    │
│                                                      │
│ ━━━ 分区 A · 全场累计扩展 ━━━                          │
│ 全场合计(只读):2:1                                  │
│ 全场角球(只读合计):主 6 · 客 4                       │
│ 全场黄牌(只读合计):主 2 · 客 3                       │
│ 全场红牌(只读合计):主 0 · 客 0                       │
│ 射门:主[  ] 客[  ]   射正:主[  ] 客[  ]              │
│ 越位:主[  ] 客[  ]   犯规:主[  ] 客[  ]              │
│                            [应用全场扩展]              │
│                                                      │
│ ━━━ 分区 B · 加时赛(仅赛事进入加时才启用)━━━         │
│ [此赛事未进入加时,本分区禁用]                          │
│ (进入加时时启用:加时上 / 加时下比分 + 加时进球 + 加时  │
│  角球 / 牌 + [应用加时赛])                            │
│                                                      │
│ ━━━ 分区 C · 点球大战(仅赛事进入点球才启用)━━━       │
│ [此赛事未进入点球大战,本分区禁用]                      │
│ (进入点球时启用:主/客点球进球数 + 晋级方 +           │
│  [应用点球大战])                                      │
│                                                      │
│                             [关闭]                    │
└──────────────────────────────────────────────────────┘

前置条件(3 分区依次硬约束)

  • 分区 A:上半场弹窗 + 下半场弹窗均已应用(全场合计值才有意义);打开弹窗时若任一未应用,分区 A 禁用并提示"请先应用上半场 + 下半场赛果"
  • 分区 B:分区 A 已应用 + 赛事进入加时(业务判断:FT 合计平局 + 杯赛/淘汰赛阶段);常规 90 分钟分胜负的赛事分区 B 保持禁用
  • 分区 C:分区 B 已应用 + 加时全场平局;常规加时分胜负的赛事分区 C 保持禁用

字段归属

  • 分区 A:射门 / 射正 / 越位 / 犯规(全场累计)+ 全场合计字段只读展示
  • 分区 B:加时上比分 / 加时下比分 / 加时全场自动合计 / 加时段进球详情 / 加时段角球 / 加时段牌
  • 分区 C:主/客点球进球数 / 晋级方

完整字段归属见第 11.2.2.4 节

应用后行为(按分区独立)

  • 分区 A 应用:FT 类全部(BT1 / BT2 / BT3 / BT5 / BT6 / BT7 / BT8 / BT158 / BT160 / BT161 等)+ BT9 半全场(全场部分)+ 全场角球类 / 全场牌类 / 射门射正类盘口按映射表计算结算结果 → 预填
  • 分区 B 应用:加时类盘口(BT84 / BT85 等加时让球 / 大小 / 独赢)+ 加时角球 / 牌类盘口结算;加时段事件触发类(BT159/BT37 加时相关)按加时进球详情逐粒触发
  • 分区 C 应用:晋级类盘口(杯赛晋级、小组出线等)按晋级方结算
  • 跨弹窗一致性校验:分区 A 应用时校验"上+下 合计 = 全场合计"(自动派生天然一致)、"6 段累计 = 全场合计"(若 15 分钟段全部已应用);分区 B 应用时校验"加时下 ≥ 加时上"、"加时进球详情行数 = 加时全场总进球";分区 C 应用时校验"主/客点球数 ≠ 平"、"晋级方 = 点球多者"。不一致阻塞应用

9.1.5 数据来源状态栏

弹窗顶部展示当前赛果数据来源:

状态展示说明
数据源开启绿色提示:「赛果已由 IM 拉取,可核对,无需人工录入」所有字段只读
数据源关闭橙色提示:「已拉到赛果,当前为人工补录模式」字段可编辑
混合模式基础比分取 IM 值(只读),缺失项可人工补充部分只读部分可编辑

9.1.6 进球详情录入通用规则(4 弹窗共用)

四个弹窗均支持进球详情录入,仅时间区间与影响范围不同:

弹窗时间区间影响的事件触发类盘口
上半场弹窗1 ≤ t ≤ 45 + 伤停(上限 50)BT37 / BT159 的半场相关盘口
下半场弹窗46 ≤ t ≤ 90 + 伤停(上限 100)BT37 / BT159 的下半场相关盘口
15 分钟段弹窗(对应 Tab)各段起止区间内BT159 段相关盘口
全场扩展弹窗 · 分区 B 加时段91 ≤ t ≤ 120 + 伤停(上限 126)BT37 / BT159 加时相关盘口

每粒进球字段(3 弹窗共用)

说明
序号第 1/2/3... 粒进球(按时间升序)
进球球队下拉:主队 / 客队(必选)
进球时间分钟数(必填,按所属弹窗校验时间区间)
球员文本(选填)
删除删除该行

操作按钮(每个进球详情区块独立)

  • 「添加进球」:新增一行
  • 「根据比分同步行数」:自动增减行数使进球详情行数 = 该区块对应的进球数(半场 / 段内 / 下半场 / 加时)

9.1.7 校验规则(核心规则引用)

核心规则:所有赛果录入校验规则统一定义在 第 11 章 11.4 校验规则(按 4 弹窗分治:11.4.1 上半场弹窗内校验 / 11.4.2 下半场弹窗内校验 / 11.4.3 15 分钟段弹窗内校验 / 11.4.4 全场扩展弹窗内校验(分区 A/B/C) / 11.4.5 跨弹窗一致性校验)。本节不重复列出,仅说明弹窗层的交互表现。

弹窗层交互行为

交互行为
输入时实时校验,失败字段红色高亮
输入失败时的按钮「应用赛果」按钮禁用,悬停提示具体失败原因
所有失败项同时全部高亮 + 按优先级在下方展示失败提示
修正后校验通过,红色消失,按钮恢复可用
未到位的赛果字段允许留空,不报错;仅依赖该字段的盘口跳过结算,不阻塞其他盘口

完整校验规则见 第 11.4 节

9.1.8 底部按钮

按钮行为
关闭关闭弹窗,不保存
应用赛果保存赛果数据 → 系统对比最新拉取赛果与人工补录差异 → 仅对赛果变化的已关盘盘口重新计算结算结果 → 盘口卡片展示预填结果

「应用赛果」不执行关盘操作。已关盘的盘口不会再次关盘,开盘中的盘口不受影响。


9.2 结算赛事确认弹窗

点击「结算赛事」按钮触发。前置条件:该赛事下所有盘口均已结算或已取消

数据源虽在赛果数据中提供"比赛结束时间"字段(仅作展示),但不单独推送"赛事完赛状态枚举"。赛事级"已结算"由结算人员确认所有盘口完成后主动触发,不依赖数据源的状态信号。

9.2.1 弹窗结构

┌─ ✅ 确认结算赛事 ───────────────────────────────┐
│                                                 │
│ 赛事:曼联 vs 利物浦  比分 2-1                    │
│                                                 │
│ ⚠️ 待结算盘口警告(有待结算盘口时展示)             │
│ • BT2-1H 上半场大小 待结算                        │
│ • ...                                           │
│                                                 │
│ 结算摘要:                                       │
│   已结算盘口: 17                                  │
│   已取消盘口: 0                                   │
│   总投注额:   ¥1,251,100                          │
│   预计派彩:   ¥1,056,451                          │
│   平台盈亏:   +¥194,649                           │
│                                                 │
│ 结算备注:(选填)                                 │
│ ┌─────────────────────────────────────────────┐ │
│ │                                             │ │
│ └─────────────────────────────────────────────┘ │
│                                                 │
│ 【大额派彩时展示双勾选(预计派彩 > ¥50,000)】       │
│ ☐ 已核对赛果数据正确                             │
│ ☐ 确认执行结算并发放派彩                          │
│                                                 │
│        [返回处理盘口]   [确认结算赛事]              │
└─────────────────────────────────────────────────┘

双勾选触发条件(对齐 第 20.1 节 #13 大额派彩告警阈值):

预计派彩金额弹窗展示确认按钮规则
≤ ¥50,000无双勾选项点击即可提交
> ¥50,000展示双勾选项「☑ 已核对赛果数据正确」「☑ 确认执行结算并发放派彩」两个选项全部勾选后按钮才启用

阈值判断口径(含多基准分场景的处理):

场景判断依据
赛事内所有盘口基准分组 = 1(单组)赛事合计预计派彩对比 ¥50,000 阈值
赛事内存在基准分组 ≥ 2 的盘口(多组)以**赛事合计预计派彩(所有分组累加)**对比 ¥50,000 阈值;不按"任一组 > 阈值"或"每组分别"判断

说明:赛事级"结算赛事"本身是赛事级资金落账操作,阈值判断采用合计派彩口径最符合业务语义(赛事 = 一次性落账单元)。多基准分组只影响盘口级结算的 UX 展示(按组分区),不改变赛事级双勾选的判断粒度。

归属:当前 ¥50,000 阈值为本模块系统级写死(一期不引入主管复核机制;二期评估移至风控管理面板配置)。

9.2.2 前置条件

条件说明
所有盘口已完成处置所有盘口状态为 已结算 或 已取消;有待结算或开盘中盘口时按钮禁用
无异常盘口有异常盘口时阻止确认

9.2.3 前置校验与报错

校验项规则失败表现
待结算盘口检查不存在状态为「关盘(待结算)」的盘口按钮禁用 + 弹窗展示待结算盘口列表
开盘中盘口检查不存在状态为「开盘」的盘口按钮禁用 + 提示「仍有 N 个盘口开盘中」
异常盘口检查不存在异常状态盘口按钮禁用 + 提示「存在异常盘口,请先处理」

9.2.4 提交前时序保护(防竞态)

结算赛事是赛事级资金落账操作,需与"盘口自动重结算"等并发事件严格隔离:

阶段系统行为
弹窗打开瞬间抓取并记录所有盘口的当前状态快照(结算结果 / 派彩额 / 结算时间戳等),作为弹窗内结算摘要的基准
弹窗打开期间若后台发生赛果变化触发某盘口自动重结算(见 第 11.7 节 聚合窗口),弹窗不主动关闭(避免打断结算人员)
结算人员点击"确认结算赛事"系统再次校验所有盘口当前状态与弹窗打开时的快照是否一致
校验通过执行 9.2.5 确认后行为
校验失败(任一盘口状态已变)弹窗不关闭,自动刷新为最新摘要 + 提示「检测到盘口 [BT1 -0.5] 赛果已更新,请重新核对后再确认」;结算人员需重新确认

设计意图:防止"结算人员看到旧快照 → 点确认 → 绕过后台自动重结算的新结果"的竞态场景,确保赛事级派彩落账始终基于最新盘口状态。

9.2.5 确认后行为

步骤说明
1赛事状态 → 已结算
2赛事从操盘列表移除
3派彩清单提交财务系统
4记录结算日志
5页面跳转回结算列表,或切换到左侧下一场待结算赛事

9.2b 赛事驳回确认弹窗

设计背景:赛事驳回仅改变赛事状态(→待结算),不影响盘口 / 注单 / 母单。目的是解除盘口二次结算的赛事级前置限制。赛事驳回后赛事重新出现在操盘列表。

9.2b.1 触发条件

赛事状态 = 已结算、已取消或异常,且距赛事最新结算时间 ≤ 24 小时时,点击赛事信息头「赛事驳回」按钮可触发。超窗后按钮永久禁用。

9.2b.2 弹窗结构

┌─────────────────────────────────────────────────────────────────┐
│  ⚠️ 赛事驳回                                                ✕  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  确定要将此赛事从「{当前状态}」驳回为「待结算」吗?               │
│                                                                  │
│  赛事:{联赛名} {主队} vs {客队}                                 │
│  当前状态:{已结算 / 已取消 / 异常}                              │
│  最新结算时间:{YYYY-MM-DD HH:mm:ss}                             │
│  剩余驳回窗口:{HH:MM:SS}                                        │
│                                                                  │
│  驳回后:                                                        │
│  • 赛事状态回退为「待结算」                                      │
│  • 所有盘口/注单/串关状态不变                                    │
│  • 赛事重新出现在操盘列表                                        │
│  • 可对具体盘口执行二次结算                                      │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│                       [ 取消 ]    [ 确认赛事驳回 ]               │
└─────────────────────────────────────────────────────────────────┘

9.2b.3 确认后行为

步骤说明
1赛事状态 已结算 / 已取消 / 异常 → 待结算
2赛事信息头状态标签变为「待结算」(橙色),显示下一次 24 小时窗口倒计时
3「赛事驳回」按钮消失,「结算赛事」按钮出现(禁用,需所有盘口已结算)
4盘口卡片中已结算盘口的「二次结算」按钮启用(之前禁用)
5赛事重新出现在操盘列表
6记入结算日志(操作 = 赛事驳回)
7驳回操作本身不触发注单级联、不计循环次数;后续对盘口的操作按盘口粒度独立处理

9.3 赛事异常处理弹窗

点击赛事信息头的「赛事异常处理」按钮(仅在赛事状态 = 待结算时启用)触发。弹窗支持赛事级的 4 类异常原因选择。

按钮启用规则:仅在赛事状态 = 待结算时显示按钮;已结算 / 已取消 / 异常态下按钮隐藏,须先执行「赛事驳回」回待结算,才能再次发起异常处理。

按钮定位:「赛事异常处理」是赛事级异常的唯一入口。赛事级"已取消"、"异常态"均由此按钮下的弹窗产生。

9.3.1 弹窗结构

┌─ ⚠️ 赛事异常处理 ──────────────────────────────┐
│                                                 │
│ 赛事:曼联 vs 利物浦                              │
│                                                 │
│ 影响范围:                                        │
│ • 涉及盘口: 17 个                                 │
│ • 涉及注单: 456 笔                                │
│ • 涉及金额: ¥892,300                              │
│                                                 │
│ 异常原因:(必选,4 选 1)                          │
│ ○ 赛事取消     ○ 赛事延期                          │
│ ○ 赛事腰斩     ○ 数据错误                          │
│                                                 │
│ ┌─ 延期处理方式(仅选择延期时展示)─────────────┐ │
│ │ ○ 延期暂缓(赛事进入异常态,等待恢复)         │ │
│ │ ○ 延期超时退款(超 24 小时未恢复,全额退款)    │ │
│ └──────────────────────────────────────────────┘ │
│                                                 │
│ ┌─ 腰斩处理方式(仅选择腰斩时展示)─────────────┐ │
│ │ ○ 按当前比分结算(已完成时段正常结算)         │ │
│ │ ○ 全额退款                                  │ │
│ │ ○ 暂缓处理(赛事进入异常态)                   │ │
│ └──────────────────────────────────────────────┘ │
│                                                 │
│                                                 │
│ 备注:(选填,数据错误时建议填写错误描述)          │
│ ┌─────────────────────────────────────────────┐ │
│ │                                             │ │
│ └─────────────────────────────────────────────┘ │
│                                                 │
│ ⚠️ 此操作提交后如需修正,需通过赛事驳回流程处理    │
│                                                 │
│              [取消]   [确认]                       │
└─────────────────────────────────────────────────┘

9.3.2 异常原因(4 种,写死)

所有异常原因均须结算人员主动选择,系统不会自动判定。删除"其他"兜底原因(行业通用异常枚举不含兜底项;真遇到无法分类的情况归入"数据错误"并在备注说明)。

原因说明默认处理结果
赛事取消结算人员根据官方取消公告发起赛事 → 已取消,全额退款
赛事延期结算人员判断赛事延期(需再选子方案)子方案决定(暂缓 → 异常态;超时退款 → 已取消)
赛事腰斩结算人员根据官方腰斩公告发起(需再选处理方式)处理方式决定(按比分 → 已结算;全额退款 → 已取消;暂缓 → 异常态)
数据错误仅做审计标记:点"确认"后系统仅留审计日志 + 赛事标红色「数据错误」标签。不动订单、不改赛事态、不下架、不关盘。实际修正按颗粒度走各自独立入口(操盘页调赔率 / 赛果录入页 / 盘口卡片 void / 盘口二次结算)不改赛事状态(保持待结算);不下架(赛事客户端正常可见)

9.3.3 延期处理方式(仅选择延期时展示)

方式赛事状态注单影响串关影响后续
延期暂缓异常态(待结算人员决策)注单保持待结算(不退款、不结算)母单保持待结算赛事恢复 → 结算人员执行「赛事驳回」→ 待结算;无法恢复 → 结算人员先赛事驳回回待结算,再次打开弹窗选「延期超时退款」
延期超时退款已取消全额退款该场子单系数 = 1.00(串关降级)距最新结算时间 ≤ 24h 可通过赛事驳回回滚

延期暂缓期间的盘口处理:选择"延期暂缓"后,系统立即批量关盘该赛事所有开盘中盘口(停止接受新投注),已有注单保持待结算。赛事恢复后需由数据源推送开盘信号自动恢复。对应数据源延期时所有盘口立即关盘的行业通用做法。

9.3.3b 数据错误处理(仅选择数据错误时展示,2026-04-23 定稿)

选择"数据错误"后,弹窗仅保留错误描述备注字段(建议填写);不提供盘口选择器,不提供错误类型分流。本入口仅做审计标记,点"确认"后系统不触发任何业务动作。

确认后系统动作

维度动作
订单不动(已结算和未结算均保持原状)
赛事业务态不动(保持待结算)
操盘列表不下架(赛事客户端正常可见)
盘口业务态不动(无关盘逻辑,本入口无此权限;关盘来源唯一 = 数据源推送)
审计日志记录操作人 + 时间 + 错误描述
UI 标识赛事行红色「数据错误」标签(仅标识,不改业务态)

实际修正按颗粒度走各自独立入口(弹窗外完成):

错误场景修正入口
开盘中盘口赔率错操盘详情页直接调赔率(trading-detail 07
开盘中 / 关盘未结算盘口赛果字段错赛果录入页修正
已关盘未结算盘口赔率错盘口卡片「取消盘口」按钮(void)
已结算 / 已取消盘口数据错盘口卡片「盘口二次结算」按钮(第 15 章

9.3.4 腰斩处理方式(仅选择腰斩时展示)

方式赛事状态注单影响串关影响
按当前比分结算已结算(按已完成时段)已完成时段盘口正常结算,未完成时段退款已结算子单正常计入,对应未完成时段(退款)子单系数 = 1.00
全额退款已取消所有注单退还本金该场子单系数 = 1.00(串关降级)
暂缓处理异常态注单保持待结算母单保持待结算

9.3.5 确认后行为

原因/方式赛事状态变化回滚路径
赛事取消 / 延期超时退款 / 腰斩-全额退款→ 已取消距最新结算时间 ≤ 24h 可通过「赛事驳回」回退到待结算,再逐盘口二次结算
延期暂缓 / 腰斩-暂缓处理→ 异常态再次打开异常处理弹窗选择新方式,或通过「赛事驳回」(距最新结算时间 ≤ 24h)
腰斩-按比分结算涉及盘口按比分结算后最终 → 已结算(需继续逐盘口处理)同"已结算"的赛事驳回路径
数据错误不改赛事状态(保持待结算)+ 不下架 + 不关盘 + 不动订单弹窗仅做审计标记;实际修正走弹窗外各自入口(操盘页调赔率 / 赛果录入页 / 盘口卡片 void / 盘口二次结算)

9.4 盘口二次结算弹窗

点击已结算盘口的「二次结算」按钮触发。前置条件:赛事状态 = 待结算(含尚未确认结算 / 赛事驳回后回退)。赛事状态为已结算 / 已取消 / 异常态时二次结算按钮禁用,提示"请先执行赛事驳回"。二次结算前不强制填写说明。

注意与盘口首次结算的区别:首次结算(待结算盘口 → 已结算)在赛事异常态下允许(行业做法:腰斩时上半场已有明确赛果可正常结算);二次结算(已结算盘口 → 关盘)仅待结算时允许。详见 15.3.1 前置条件

9.4.1 弹窗结构(单组场景)

适用范围:本节描述盘口内基准分组 = 1 的单组场景弹窗(~90% 场景)。盘口内基准分组 ≥ 2 时走 §9.4.3 多组基准分盘口自适应展示 的分区弹窗,本节结构仅作为基础模板。

┌─ ⚠️ 二次结算确认 ───────────────────────────────┐
│                                                 │
│ 二次结算盘口:BT1 全场让球 -0.5                   │
│                                                 │
│ 二次结算影响:                                   │
│ • 涉及注单: 89 笔                                │
│ • 已派彩金额(需追回): ¥106,720                   │
│ • 关联串关: 3 单                                  │
│                                                 │
│ ⚠️ 二次结算确认后系统将执行差额处理(不足记坏账)    │
│                                                 │
│            [取消]   [确认二次结算]                 │
└─────────────────────────────────────────────────┘

9.4.2 进入二次结算后行为

步骤说明
1该盘口结算结果撤销
2该盘口下所有注单回退为待结算
3盘口卡片恢复为可操作状态(关盘,可重新选择结算结果)
4关联串关母单回退为待结算
5二次结算后按 15.4.1 差额公式处理:差额 > 0 补发;差额 < 0 扣回(不足记坏账);差额 = 0 不动

9.4.3 多组基准分盘口的自适应展示(对齐 第 7.3.6 节)

场景弹窗行为
盘口内基准分组 = 1(单组)9.4.1 弹窗结构与原流程一致
盘口内基准分组 ≥ 2(多组)弹窗按组分区展示,支持两种操作粒度:
全部组统一二次结算:所有组一次撤销,结算人员后续重新选择各组结果
仅二次结算某一组:其他组保持原结算结果不动

多组二次结算弹窗示例

┌─ ⚠️ 二次结算确认:BT1 全场让球 -0.5(含 2 组基准分)┐
│                                                    │
│ ┌ 组 1:下注时比分 0:0(100 笔,¥500,000)────┐    │
│ │ 原结算结果:主队赢  已派彩:¥920,000         │   │
│ │ ☑ 对本组执行二次结算                         │   │
│ └──────────────────────────────────────────────┘    │
│                                                    │
│ ┌ 组 2:下注时比分 1:0(30 笔,¥150,000)─────┐     │
│ │ 原结算结果:主队输  已派彩:¥0              │    │
│ │ ☐ 对本组执行二次结算                         │   │
│ └──────────────────────────────────────────────┘    │
│                                                    │
│ 关联串关:3 单(将按勾选组的结果回退)              │
│ ⚠️ 差额处理按勾选组的原派彩执行                     │
│                                                    │
│            [取消]   [确认二次结算]                  │
└────────────────────────────────────────────────────┘

规则

  • 差额处理按勾选组的原派彩 / 新派彩独立计算,与其他组互不影响
  • 关联串关母单回退仅作用于被二次结算组对应的注单
  • 重新选择结果时仍按组分别选定(参见 第 7.3.6 节 多组弹窗 UX)

9.5 二次确认弹窗(合并至 第 9.2 节 结算赛事确认弹窗)

合并说明:原 第 9.5 节 "二次确认弹窗" 与 第 9.2 节 "结算赛事确认弹窗" 结构相同(摘要 + 双勾选),统一为同一个弹窗:

  • 触发方式:点击「结算赛事」按钮 按 Ctrl+Enter 快捷键(Mac 可用 Cmd+Enter)
  • 弹窗结构:见 第 9.2 节 结算赛事确认弹窗
  • 双勾选项(保留在 第 9.2 节 内容中):☑ 已核对赛果数据正确 ☑ 确认执行结算并发放派彩
  • 两个确认项全部勾选后「确认执行结算」按钮才启用

原 9.5.1 内容已并入 第 9.2.1 节 弹窗结构。


9.6 结算人员分配弹窗

点击赛事信息头的结算人员区域触发。

弹窗定义引用:完整弹窗结构见结算列表第 8 章 8.3 节 结算人员分配弹窗。按阶段分配模式(赛前 / 滚球),每个赛事分别指定赛前结算人员和滚球结算人员。与操盘手分配弹窗(按玩法分配,17 种 BT)不是同一组件,分配维度和数据模型均不同。

体育操盘系统产品文档