Appearance
第十五章 实时数据更新
本期范围:本章所述 "L1 自动结算完成通知" 等与自动结算路径相关的数据更新事件本期不触发(见第 1.1a 节 本期范围声明)。一期仅产生页面刷新、结算人员手动结算后的数据更新两类事件。
15.1 自动刷新
| 配置项 | 说明 |
|---|---|
| 刷新间隔 | 默认 30 秒(系统级写死,修改需发版) |
| 刷新范围 | 左侧筛选栏计数 + 主内容区列表数据 |
| 手动刷新 | 无独立刷新按钮,依赖自动刷新 |
15.2 刷新时的状态保留
| 场景 | 行为 |
|---|---|
| 用户正在勾选赛事 | 保留勾选状态 |
| 批量操作栏已展开 | 暂停自动刷新,操作完成后恢复 |
| 弹窗已打开 | 暂停自动刷新,弹窗关闭后恢复 |
| 滚动位置 | 刷新后保留当前滚动位置 |
| 筛选条件 | 刷新后保留当前筛选条件 |
| 串关展开面板 | 保持展开状态,面板内数据刷新 |
15.3 实时推送事件
以下事件触发列表即时刷新(不等待30秒轮询):
| 事件 | 触发方 | 列表行为 |
|---|---|---|
| 赛事进入即将开赛阶段(距开赛 ≤ 30 分钟) | 系统按开赛时间计算 | 赛事自动出现在结算列表(待结算筛选),待结算计数+1。赛事真正开赛瞬间(比赛进程由赛前切换为滚球)仅切换状态标签,不改变列表收入状态 |
| IM 推送比分 / 盘口状态变化 | 数据源 | 本地按新比分重新判定;对应赛事的盘口进度实时更新 |
| L1 自动结算完成 | 系统 | 对应注单状态变为已结算,进度更新 |
| 赛事异常(4 选 1:取消/延期/腰斩/数据错误) | 人工(结算人员主动触发,仅赛事待结算时可发起) | 赛事行变红色边框(数据错误标签为"数据错误",其他为"异常"),IM 不推送赛事异常枚举,系统不做自动标记。取消 / 延期暂缓 / 腰斩暂缓:联动操盘列表整场下架;盘口关盘由数据源 IM 推送触发(非人工)。数据错误:弹窗仅做审计标记,不下架、不关盘、不改赛事态、不动订单;实际修正走各自独立入口(操盘页调赔率 / 赛果录入页 / 盘口卡片 void / 盘口二次结算) |
| 其他结算人员结算操作 | 人工 | 同步刷新进度和状态 |
15.3.1 实时机制设计
15.1 "30 秒自动刷新" 与 15.3 "事件即时刷新" 的协同:
| 机制 | 角色 |
|---|---|
| 推送通道(主通道) | 系统与操盘页面维持长连接,关键事件(见 第 15.3 节 列表)推送时即时触发页面刷新 |
| 30 秒兜底轮询 | 无论推送通道是否正常,每 30 秒自动触发一次全量刷新作为兜底;防止推送丢失导致界面过时 |
| 断线重连 | 页面检测到实时通道中断时自动尝试重连;重连成功后触发一次全量刷新(补齐断线期间可能的状态变化) |
| 消息去重 | 同一事件短时间内被推送 + 轮询同时命中时,页面按事件 ID 去重,不重复刷新 |
用户可感知行为:
- 正常情况:关键事件触发后 1-2 秒内界面更新
- 推送中断但轮询正常:最晚 30 秒内界面同步
- 推送恢复:页面自动拉取全量,用户无感知
数据源断连处理:若 IM 数据源断连(见 第 16.1 节 数据源离线),顶部红色提示条展示"数据源离线";此时刷新机制仍正常工作,但收不到新的数据源推送事件。
15.4 Loading 状态
| 场景 | Loading 效果 |
|---|---|
| 首次加载 | 列表区域展示骨架屏 |
| 切换筛选 | 列表区域半透明 + 顶部 loading 条 |
| 自动刷新 | 无明显 loading(静默刷新) |
| 切换视图 | 列表区域半透明 + 顶部 loading 条 |