Skip to content

第十四章 操作流程与权限

14.0 与其他章节的关系说明

维度相关章节本章职责
角色与权限定义操盘列表第12章(单一真源)本章引用权限定义,不重复定义
赔率编辑交互第7章赔率编辑与计算本章定义操作流程的入口、步骤、权限校验
状态控制第8章控制层级体系本章定义状态操作的完整流程
弹窗交互第13章弹窗与模态框本章定义弹窗触发的流程上下文
审计日志操盘列表第12章12.6节(单一真源)本章定义操盘页特有的日志记录规则

本章定位:定义操盘详情页内所有操作的完整流程(从触发到落库),权限规则引用操盘列表第12章。


14.1 权限规则引用

14.1.1 角色定义(引用操盘列表第12章12.1节)

操盘页使用与操盘列表相同的三种角色,定义详见操盘列表第12章12.1节。

角色角色代码操盘页职责概述
普通操盘手TRADER负责自己赛事的赔率调整、盘口隐藏/取消隐藏
主管SUPERVISOR可操作所有赛事,可执行锁盘/解锁
风控RISK_CONTROL最高权限,可执行一键锁盘

14.1.2 操盘页功能权限矩阵

与操盘列表第12章12.2.3节保持一致:盘口操作(隐藏/取消隐藏/锁盘/解锁)统一在操盘详情页进行。

赔率编辑权限

功能普通操盘手主管风控说明
编辑自己负责赛事的赔率双击单元格进入编辑
编辑他人负责赛事的赔率仅主管和风控可操作
批量调整赔率(同玩法内)仅限自己负责的赛事
调整偏离IM超过告警阈值⚠️ 需确认⚠️ 需确认触发偏离确认弹窗

盘口状态操作权限(与操盘列表第12章12.2.3节一致):

功能普通操盘手主管风控操作层级
隐藏盘口(自己的)玩法级/盘口线级/选项级
隐藏盘口(他人的)玩法级/盘口线级/选项级
取消隐藏盘口(自己的)玩法级/盘口线级/选项级
取消隐藏盘口(他人的)玩法级/盘口线级/选项级
锁定盘口玩法级/盘口线级/选项级
解锁盘口玩法级/盘口线级/选项级
一键锁盘赛事级

数据源开关控制权限

功能普通操盘手主管风控说明
开启/关盘数据源开关(自己的)赛事级/玩法级
开启/关盘数据源开关(他人的)仅主管和风控

其他操作权限

功能普通操盘手主管风控说明
盘口线显示/隐藏仅限自己负责的赛事
查看操盘日志全部角色可查看
导出操盘日志与操盘列表第12章12.6.1节一致

14.1.2.1 权限变更生效时机(写死)

实时生效规则(默认值为实时生效,系统级写死,修改需发版):

规则项规则内容生效时机验证方式
权限变更权限变更后实时生效立即权限变更操作提交后,系统立即更新内存中的权限状态
已打开页面已打开的操盘页无需刷新页面下次操作时校验用户在当前页面执行任何操作(如双击编辑赔率)时,系统重新校验当前权限,若权限已变更则拒绝操作或显示提示
权限校验位置权限校验发生在操作执行时实时编辑赔率、锁盘/解锁等操作触发时,系统调用权限检查接口验证当前用户权限
降级保护若用户权限被降级,已进行但未提交的编辑操作需要重新校验提交时用户编辑赔率后,若权限已变更,提交时校验失败,提示「权限已变更,请刷新页面重新操作」

示例流程

时刻T1:操盘手张三有「赔率编辑」权限
   └─> 打开操盘页面,中间栏显示所有赔率编辑入口可用

时刻T2:管理员修改张三权限为「仅查看」
   └─> 系统立即更新权限,但不主动通知张三

时刻T3:张三继续在已打开的页面上操作(未刷新)
   └─> 张三双击赔率单元格准备编辑
   └─> 系统在提交编辑(按Enter)时校验权限
   └─> 权限校验失败(当前权限=仅查看)
   └─> 拒绝保存,提示「您的权限已被变更,无法编辑赔率,请刷新页面」

时刻T4:张三刷新页面
   └─> 页面重新加载,赔率编辑入口全部禁用
   └─> 张三现在只能查看,无法操作

14.1.3 详情页访问权限(与操盘列表第12章12.2.5节一致)

场景普通操盘手主管风控页面状态
进入自己负责的赛事可操作
进入未分配的赛事只读模式
进入他人负责的赛事主管/风控可操作

只读模式说明:普通操盘手访问未分配赛事时,页面可见但所有操作按钮禁用,顶部显示「只读模式」标签。

「自己负责赛事」判定条件

系统通过以下条件判定赛事是否为当前用户负责:

判定条件技术实现说明
当前登录用户ID = 赛事操盘手IDCurrentUserId == Event.TraderId赛事的 TraderId 字段记录负责操盘手

该判定适用于本章所有「自己负责」「他人负责」的权限区分场景。


14.2 赔率调整操作

14.2.1 操作入口

入口位置操作方式适用场景
盘口卡片赔率单元格双击进入编辑态单选项赔率调整
盘口卡片工具栏点击「批量调整」按钮同玩法内批量调整
快捷键F2(选中单元格时)快速进入编辑态

14.2.1A 状态前置条件校验(写死)

赔率编辑操作执行前,必须先校验当前层级的状态。若任何层级不满足条件,则禁用编辑入口并显示对应提示。规则如下:

检查层级状态允许编辑赔率用户提示文案
赛事开盘
赛事隐藏「赛事已隐藏,无法编辑赔率」
赛事锁定「赛事已锁定,无法编辑赔率」
赛事关盘「赛事已关盘,无法编辑赔率」
玩法开盘
玩法隐藏「该玩法已隐藏,无法编辑赔率」
玩法锁定「该玩法已锁定,无法编辑赔率」
盘口线(仅MultiLineTable)开盘
盘口线(仅MultiLineTable)隐藏「该盘口线已隐藏,无法编辑赔率」
盘口线(仅MultiLineTable)锁定「该盘口线已锁定,无法编辑赔率」
选项开盘
选项隐藏「该选项已隐藏,无法编辑赔率」
选项锁定「该选项已锁定,无法编辑赔率」

继承规则(写死):上层状态是下层上限。若赛事或玩法为隐藏/锁定/关盘,则其下所有子级赔率编辑入口自动禁用,无需逐级判断。

校验顺序:赛事 → 玩法 → 盘口线(若有) → 选项,任一层级不满足则拒绝,不继续向下检查。

实现表现

状态不满足界面表现交互反馈
赛事或玩法层级该玩法下所有赔率单元格禁用(灰显),不可双击鼠标悬停显示Tooltip「该玩法已隐藏,无法编辑赔率」
盘口线或选项层级该行/单元格禁用(灰显),不可双击鼠标悬停显示Tooltip「该盘口线已隐藏,无法编辑赔率」
赔率单元格禁用时F2快捷键无效,点击不进入编辑态显示提示Tooltip

与第13章的衔接:本节状态前置校验在编辑入口处执行,防止用户进入编辑态。第13章的赔率调整校验弹窗(13.8)仅处理编辑完成后的赔率值域问题(RTP、HK范围、配对边界),不重复检查状态。

14.2.2 单选项赔率调整流程

步骤用户操作系统响应
1双击赔率单元格单元格进入编辑态,显示输入框,原值选中
2输入新HK赔率值实时显示配对计算结果(若为配对玩法)
3按Enter或点击外部触发校验流程
4校验通过保存成功,单元格绿色闪烁0.5秒
4'校验失败显示错误提示,保持编辑态

流程图

┌─────────────────┐
│ 双击赔率单元格   │
└────────┬────────┘


┌─────────────────┐     否
│ 盘口状态=开盘?  │────────→ 提示「盘口已隐藏/锁定,无法编辑」
└────────┬────────┘
         │ 是

┌─────────────────┐     否
│ 有编辑权限?     │────────→ 提示「无权限编辑此赛事」
└────────┬────────┘
         │ 是

┌─────────────────┐
│ 进入编辑态       │
│ 输入新赔率值     │
└────────┬────────┘


┌─────────────────┐
│ 按Enter确认      │
└────────┬────────┘


┌─────────────────────────────────┐
│ 【子流程A】赔率校验流程          │
└────────┬────────────────────────┘

    ┌────┴────┐
    │ 校验结果 │
    └────┬────┘
    ┌────┴────┐
   通过      失败
    │         │
    ▼         ▼
┌─────────┐ ┌─────────────────┐
│ 保存成功 │ │ 显示错误,保持编辑态 │
│ 绿色闪烁 │ └─────────────────┘
└─────────┘

14.2.2A IM推送与本地编辑冲突仲裁规则(写死)

定义:操盘手正在编辑某选项赔率时,IM推送了同一选项的新赔率,系统需要仲裁哪个值应该生效。

仲裁规则(三种场景,优先级递减):

场景触发条件系统行为用户表现
场景1:编辑框聚焦中用户已双击进入编辑态,输入框获得焦点IM推送不覆盖编辑框内容;系统在编辑框下方实时显示「IM最新值:X.XX」供参考用户可继续编辑,不被打断;灰显的参考值帮助用户决策
场景2:编辑框已提交用户按Enter或点击外部,编辑已提交以操盘手提交值为准落库,不被IM后续推送覆盖单元格绿色闪烁后返回展示态,显示用户提交值
场景3:编辑框失焦且未修改用户双击进入编辑态后,鼠标点击编辑框外,且输入值=原值IM推送正常覆盖当前显示值编辑框失焦,显示更新后的最新值

超时规则(写死):

规则项规则内容默认值归属
编辑框超时编辑框聚焦超过N秒未提交,系统弹出提示60秒(默认值为60秒)系统级写死,修改需发版
超时弹窗弹窗文案:"赔率已更新,是否继续编辑?",提示用户当前值与IM最新值的对比,用户可选择「放弃编辑」或「继续编辑」60秒时触发系统级写死,修改需发版

冲突仲裁流程图

┌─────────────────┐
│ 用户双击编辑赔率  │
└────────┬────────┘


┌──────────────────────────┐
│ 编辑框获焦,进入编辑态    │
└────────┬─────────────────┘

    ┌────┴──────────┐
    │               │
    ▼               ▼
┌─────────────┐ ┌────────────────┐
│ IM推送新值? │ │ 用户继续输入?  │
└─┬────────┬─┘ └────────┬───────┘
  │ 是  否 │              │
  ▼      │              ▼
┌──────┐ │ ┌────────────────────────┐
│显示参│ │ │ 超过60秒未提交?         │
│考值  │ │ └────────┬────────┬──────┘
└──────┘ │         │ 是  否 │
  │      │         ▼        │
  │      ▼ ┌──────────────┐ │
  │    ┌──┴──────────────┐ │
  │    │ 继续编辑/提交?  │ │
  │    └──┬───────────┬──┘ │
  │      │ 是     否  │    │
  │      ▼           ▼    │
  │    ┌───────┐ ┌──────┐ │
  │    │保存成 │ │放弃修│ │
  │    │功    │ │改    │ │
  │    └───────┘ └──────┘ │
  │                       │
  └───────────┬───────────┘

        ┌──────────────┐
        │ 显示最终结果  │
        └──────────────┘

超时弹窗:【赔率已更新】
标题:赔率已更新,是否继续编辑?
消息:当前编辑框中的值与IM最新值不一致
展示对比:您编辑的值:X.XX | IM最新值:Y.YY
按钮:【放弃编辑】【继续编辑】

14.2.3 赔率校验流程(子流程A)

校验按顺序执行,任一步骤失败则中断后续校验。

顺序校验项规则校验类型失败提示
1数值格式必须为正数,最多2位小数硬拦截请输入有效的赔率值
2最小赔率大于等于 0.01(默认值为 0.01,系统写死)硬拦截赔率不能低于0.01
3最大赔率小于等于 50.00(默认值为 50.00,系统写死)硬拦截赔率不能超过50.00
4单次调幅绝对值不超过 0.20(默认值为 0.20,系统写死)硬拦截单次调幅超出限制0.20
5RTP下限大于等于 85%(默认值为 85%,系统写死)硬拦截RTP低于下限85%
6RTP上限小于等于 99%(默认值为 99%,系统写死)硬拦截RTP超过上限99%
7偏离IM绝对值超过 0.10(默认值为 0.10,风控管理配置)软确认弹出偏离确认弹窗

硬拦截 vs 软确认

校验类型含义用户体验
硬拦截不允许保存,必须修改显示红色错误提示,保持编辑态
软确认允许保存但需确认弹出确认弹窗,确认后保存

14.2.4 偏离确认弹窗

弹窗标题:⚠️ 赔率偏离确认

┌────────────────────────────────────────┐
│  ⚠️ 赔率偏离确认                    ✕  │
├────────────────────────────────────────┤
│                                        │
│  当前调整的赔率与IM数据源偏离较大:    │
│                                        │
│  ┌──────────────────────────────────┐  │
│  │ 选项:主胜                        │  │
│  │ IM赔率:0.85                      │  │
│  │ 目标赔率:0.72                    │  │
│  │ 偏离值:-0.13(超出阈值0.10)     │  │
│  └──────────────────────────────────┘  │
│                                        │
│  确认要保存此赔率吗?                  │
│                                        │
├────────────────────────────────────────┤
│         [ 取消 ]    [ 确认保存 ]       │
└────────────────────────────────────────┘
字段类型说明
选项展示被编辑的投注项名称
IM赔率展示当前IM数据源的HK赔率
目标赔率展示用户输入的目标HK赔率
偏离值展示目标赔率减IM赔率,红色显示

14.2.5 赔率调整失败处理

失败原因系统提示处理方式
数值格式错误请输入有效的赔率值保持编辑态
超出赔率范围赔率不能低于0.01/超过50.00保持编辑态
超出单次调幅单次调幅超出限制0.20保持编辑态
RTP越界RTP低于下限85%/超过上限99%保持编辑态
盘口状态变更盘口已隐藏/锁定,无法保存退出编辑态,刷新数据
并发冲突赔率已被其他用户修改弹出冲突处理弹窗
网络异常网络异常,请重试保持编辑态,允许重试

14.2.6 配对玩法赔率调整

配对玩法(让球盘、大小球)调整一方赔率时,系统自动计算配对方赔率以维持RTP。

自动配对计算规则(引用第7章7.3节):

步骤计算内容
1确定目标RTP:使用当前盘口的RTP作为目标RTP
2计算调整后的隐含概率:P_edited 等于 1 ÷ D_edited
3计算配对方新隐含概率:P_pair_new 等于 S_target 减 P_edited
4计算配对方新赔率:D_pair_new 等于 1 ÷ P_pair_new

交互反馈

状态显示内容
编辑中配对方单元格显示灰色预览值,带虚线边框
保存成功两个单元格同时绿色闪烁0.5秒
保存失败仅编辑方显示错误,配对方恢复原值

14.2.7 批量编辑限制(写死)

限制项默认值归属模块说明
单次批量编辑最大选项数同一玩法内所有选项(系统级写死,修改需发版)系统级无上限,允许在同玩法内同时编辑所有选项的赔率
单次批量状态变更最大范围同一玩法内所有盘口线/选项(系统级写死,修改需发版)系统级无上限,允许在同玩法内同时变更所有盘口线或选项的状态
跨玩法批量禁止(操盘页仅支持本场内同玩法批量)宪法§9.1操盘页不支持跨玩法选择,仅在同玩法内批量;跨玩法批量仅在操盘列表页支持
跨赛事批量禁止(操盘页不支持)宪法§9.1操盘页聚焦单场操盘,不支持跨赛事操作;跨赛事批量仅在操盘列表页支持

批量操作作用范围

操作类型作用范围示例
批量赔率调整同玩法内多个选项/盘口线在「全场让球」玩法内同时调整 -0.5、-0.75、-1.0 三条线的所有选项赔率
批量状态变更同玩法内多个选项/盘口线在「全场让球」玩法内同时隐藏所有副线;或同时锁定所有选项
权限约束仅限自己负责的赛事普通操盘手仅能对自己负责的赛事进行批量操作;主管和风控可操作所有赛事

14.3 盘口状态操作

14.3.1 操作入口

操作层级入口位置操作方式
玩法级盘口卡片顶部状态按钮组点击「隐藏」「取消隐藏」「锁定」「解锁」按钮
盘口线级盘口线行首的状态图标点击图标切换状态
选项级选项单元格内的状态图标点击图标切换状态

14.3.2 隐藏操作流程

步骤用户操作系统响应
1点击「隐藏」按钮弹出隐藏确认弹窗
2选择隐藏范围(若玩法级)显示影响的盘口线/选项数量
3点击「确认隐藏」执行隐藏,关闭弹窗
4-状态按钮变为「取消隐藏」,受影响区域变为橙色背景

隐藏确认弹窗(玩法级):

┌────────────────────────────────────────┐
│  ⏸️ 确认隐藏盘口                    ✕  │
├────────────────────────────────────────┤
│  玩法:让球盘                          │
│  影响范围:                            │
│    • 盘口线:5 条                      │
│    • 投注项:10 个                     │
│                                        │
│  隐藏后该玩法下所有盘口将停止接受投注  │
├────────────────────────────────────────┤
│         [ 取消 ]    [ 确认隐藏 ]       │
└────────────────────────────────────────┘

14.3.3 取消隐藏操作流程

步骤用户操作系统响应
1点击「取消隐藏」按钮检查上级状态和数据源状态
2条件满足直接取消隐藏,无需弹窗确认
2'条件不满足显示阻止提示

取消隐藏操作的前置条件

条件不满足时的提示
上级未隐藏/锁定「上级玩法/盘口线已隐藏,请先取消隐藏上级」
数据源未关盘「数据源已关盘,无法取消隐藏」
赛事未延期「赛事延期中,盘口无法取消隐藏」

14.3.4 锁定操作流程

权限要求:仅主管和风控可执行(与操盘列表第12章12.2.3节一致)

步骤用户操作系统响应
1点击「锁定」按钮弹出锁定确认弹窗(高危操作)
2点击「确认锁定」执行锁定,关闭弹窗
3-状态按钮变为「解锁」,受影响区域变为红色背景

锁定确认弹窗:与操盘页锁定弹窗一致,保持状态同步

┌────────────────────────────────────────┐
│  🔒 确认锁定盘口                    ✕  │
├────────────────────────────────────────┤
│  ⚠️ 锁定是高危操作,锁定后:           │
│    • 该盘口将停止接受投注              │
│    • 数据源状态变更不会自动解锁        │
│    • 必须由主管或风控手动解锁          │
├────────────────────────────────────────┤
│         [ 取消 ]    [ 确认锁定 ]       │
└────────────────────────────────────────┘

14.3.5 解锁操作流程

权限要求:仅主管和风控可执行(与操盘列表第12章12.2.3节一致)

步骤用户操作系统响应
1点击「解锁」按钮检查数据源状态和跟随配置
2根据条件显示不同结果见下表

解锁后盘口状态规则(与操盘列表第11章11.3.1节一致):

数据源状态联赛跟随配置解锁后盘口状态说明
开盘是/否开盘正常恢复
暂停隐藏Toast「解锁成功,数据源暂停中」
暂停弹出选择对话框操盘手选择「开盘」或「隐藏」
维护是/否隐藏维护状态强制隐藏
关盘是/否阻止解锁Toast「数据源已关盘,无法解锁」

不跟随配置下的解锁选择对话框(与操盘列表第11章11.3.1节一致):

┌────────────────────────────────────────┐
│  🔓 解锁后盘口状态选择              ✕  │
├────────────────────────────────────────┤
│  当前数据源状态:暂停                  │
│  联赛跟随配置:否                      │
│                                        │
│  请选择解锁后的盘口状态:              │
│  ○ 开盘(接受投注,告警列显示          │
│         「数据源暂停」)               │
│  ○ 隐藏(等待数据源恢复后再开盘)      │
│                                        │
├────────────────────────────────────────┤
│         [ 取消 ]    [ 确认解锁 ]       │
└────────────────────────────────────────┘

14.3.6 一键锁盘操作(赛事级)

权限要求:仅风控可执行(与权限矩阵 14.1.2 节一致)

一期定位:一键锁盘作为一期功能,仅支持【单赛事内】的快速锁定操作,不支持跨赛事批量锁盘。

操作特性说明

维度详情
作用对象仅当前操盘中的【单赛事】,不支持跨赛事选择
生效范围该赛事下所有玩法/盘口线/选项进入不可投注状态(受上级上限约束)
解锁策略不提供自动解锁;必须人工解锁(由主管或风控执行)
审计字段操作者、触发入口(一键锁盘)、影响范围统计

一键锁盘流程

步骤用户操作系统响应
1点击顶部栏「一键锁盘」按钮弹出确认弹窗(包含影响范围提示)
2点击「确认一键锁盘」执行赛事级锁定
3-所有玩法变为红色锁定态,显示Toast「赛事已锁定」

14.3.7 盘口状态操作失败处理

失败原因系统提示处理方式
权限不足锁盘/解锁操作仅限主管和风控执行阻止操作
非负责赛事该赛事由{操盘手姓名}负责,您无权操作阻止操作
上级已隐藏/锁定上级玩法/盘口线已隐藏,请先取消隐藏上级阻止恢复操作
数据源已关盘数据源已关盘,无法取消隐藏/解锁阻止操作
赛事延期中赛事延期中,盘口无法取消隐藏阻止恢复操作
并发冲突该盘口状态已被其他用户修改刷新页面

14.4 本场内批量操作

14.4.1 批量操作范围边界

场景是否允许说明
同玩法内批量调整赔率选中多个选项后统一调整
同盘口线内批量隐藏隐藏整条盘口线
同玩法内批量锁定锁定整个玩法
跨玩法批量操作不支持
跨赛事批量操作操盘页不支持,需在操盘列表执行

14.4.2 批量赔率调整操作入口

入口位置操作方式适用场景
盘口卡片工具栏点击「批量调整」按钮同玩法内批量调整
快捷键Ctrl+Shift+E快速进入批量模式

14.4.3 批量赔率调整流程

步骤用户操作系统响应
1点击「批量调整」按钮进入批量选择模式,显示复选框
2勾选目标选项选中项高亮,底部显示已选数量
3选择调整模式并输入值实时预览各选项调整后赔率
4点击「应用」对所有选中项执行校验
5全部通过批量保存成功,显示成功数量
5'部分失败显示失败项及原因,成功项已保存

批量调整模式

模式说明示例
偏移量所有选中项统一加减输入+0.05,所有选中项赔率加0.05
目标值所有选中项统一设为目标值输入0.90,所有选中项赔率设为0.90

14.4.4 批量操作失败详情

当批量操作存在部分失败时,弹出失败详情弹窗(与操盘列表第14章14.9节结构一致)。

弹窗结构

元素内容
标题批量操作结果
汇总信息成功 X 项,失败 Y 项
失败列表表格形式展示(选项名称、原赔率、目标赔率、失败原因)
按钮「关盘」

失败原因与建议操作映射

失败原因建议操作
超出赔率范围调整目标值在0.01-50.00范围内
超出单次调幅分次调整,每次不超过0.20
RTP越界调整目标值使RTP在85%-99%范围内
盘口已隐藏/锁定先取消隐藏/解锁盘口
并发冲突刷新后重试

14.5 权限校验流程

14.5.1 前端权限校验

进入操盘页时,前端根据当前用户角色和赛事归属决定UI元素的可用性。

UI元素权限控制(与操盘列表第12章12.4.1节一致):

场景处理方式视觉表现
无编辑权限赔率单元格不可点击无hover样式,cursor: default
无状态操作权限状态按钮禁用灰色50%透明度,cursor: not-allowed
无锁盘权限锁定/解锁按钮隐藏按钮不显示
Hover禁用按钮显示Tooltip提示原因「您无权限执行此操作」
只读模式所有操作按钮禁用顶部显示「只读模式」标签

14.5.2 后端权限校验

所有操作请求在后端再次校验权限(与操盘列表第12章12.4.2节一致)。

后端校验规则

校验项校验逻辑失败响应
Token有效性JWT Token未过期401 Unauthorized,跳转登录
角色权限角色有对应操作权限403 Forbidden
数据权限赛事归属当前用户或为主管/风控403 Forbidden
操作前置条件盘口状态允许当前操作400 Bad Request

权限校验流程

14.5.3 权限提示文案(与操盘列表第12章12.4.3节一致)

场景提示文案
编辑他人赛事赔率该赛事由{操盘手姓名}负责,您无权操作
执行锁盘/解锁锁盘/解锁操作仅限主管和风控执行
操作未分配赛事该赛事尚未分配操盘手,当前为只读模式
操作隐藏/锁定状态的盘口盘口已隐藏/锁定,无法编辑赔率

14.6 审计日志记录规则

14.6.1 需记录日志的操作类型

日志字段定义引用操盘列表第12章12.6.2节,本节仅定义操盘页特有的操作类型。

14.6.1.1 赔率调整审计流程

赔率调整从提交到落库的完整审计链路如下:

审计字段记录(赔率调整)

字段来源说明
操作人ID当前登录用户谁执行的调整
操作人姓名用户信息便于审阅
赛事ID当前赛事哪场赛事
赛事名称赛事信息便于审阅
玩法ID盘口信息哪个玩法
玩法名称盘口信息便于审阅
选项ID盘口信息哪个选项
选项名称盘口信息便于审阅
调整前HK赔率内存/数据库原值(3位小数落库值)
调整后HK赔率用户输入新值(3位小数落库值)
调整时间戳系统时间精确到秒
是否超偏离告警校验结果是否触发偏离确认
操作类型日志类型代码风险等级说明
赔率调整odds_adjust手动或批量调整赔率
玩法级状态变更market_status_change隐藏/取消隐藏/锁定/解锁整个玩法
盘口线级状态变更line_status_change隐藏/取消隐藏/锁定/解锁单条盘口线
选项级状态变更option_status_change隐藏/取消隐藏/锁定/解锁单个选项
数据源开关变更data_source_toggle数据源开关开启/关盘
盘口线显示设置line_visibility显示/隐藏盘口线

14.6.2 赔率调整日志字段

字段数据类型说明示例
日志编号字符串唯一标识LOG-20260122-001
操作时间时间戳精确到毫秒2026-01-22 14:30:25.123
操作人编号字符串操作人用户编号USR-001
操作人姓名字符串操作人姓名张三
操作人角色枚举TRADER/SUPERVISOR/RISK_CONTROLTRADER
操作类型枚举odds_adjustodds_adjust
赛事ID字符串关联赛事48291037
盘口ID字符串BetTypeMarketIdMKT-4829-1-001
选项ID字符串SelectionIdOPT-1-001-H
原赔率数值调整前HK赔率(3位小数)0.900
新赔率数值调整后HK赔率(3位小数)0.920
调整幅度数值差值+0.020
偏离确认布尔是否触发偏离确认true
操作来源枚举manual/batch/aomanual
操作结果枚举SUCCESS/FAILEDSUCCESS
IP地址字符串操作来源IP192.168.1.100

14.6.2.1 安全审计字段补充(写死)

赔率调整日志的安全审计字段必须记录以下内容:

字段数据类型说明示例
User-Agent字符串浏览器及设备信息Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...Chrome/120.0
会话ID字符串Session ID,用于追踪同一用户会话sess_USR001_20260122_143025_abc123
操作来源平台枚举操作发起于Web界面或第三方APIWeb / API

这三个字段与IP地址字段一起构成完整的安全审计链,用于事后溯源和审计。

14.6.3 状态变更日志字段

字段数据类型说明示例
日志编号字符串唯一标识LOG-20260122-002
操作时间时间戳精确到毫秒2026-01-22 14:30:25.456
操作人编号字符串操作人用户编号USR-001
操作人姓名字符串操作人姓名张三
操作人角色枚举TRADER/SUPERVISOR/RISK_CONTROLTRADER
操作类型枚举market_pause/market_open/market_lock/market_unlockmarket_pause
赛事ID字符串关联赛事48291037
操作层级枚举market/line/optionmarket
对象ID字符串被操作对象的IDMKT-4829-1-001
原状态枚举操作前状态(开盘/隐藏/锁定/关盘)开盘
新状态枚举操作后状态(开盘/隐藏/锁定/关盘)隐藏
操作原因字符串锁定时必填单边比例超80%
操作来源枚举manual/ao/risk_control/data_source/system/inheritmanual
操作结果枚举SUCCESS/FAILED/REJECTEDSUCCESS
IP地址字符串操作来源IP192.168.1.100

14.6.3.1 状态变更日志安全审计字段补充(写死)

状态变更日志同样必须记录以下安全审计字段(与赔率调整日志字段保持一致):

字段数据类型说明示例
User-Agent字符串浏览器及设备信息Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...Chrome/120.0
会话ID字符串Session ID,用于追踪同一用户会话sess_USR001_20260122_143025_abc123
操作来源平台枚举操作发起于Web界面或第三方APIWeb / API

14.6.4 批量操作日志规则

批量操作记录一条汇总日志和N条明细日志。

汇总日志字段

字段说明示例
batch_id批量操作唯一标识batch_20260122143025_001
操作类型batch_odds_adjust / batch_hide 等batch_odds_adjust
选中数量本次选中的选项数量10
成功数量执行成功的数量8
失败数量执行失败的数量2

明细日志:每个被操作的选项单独记录一条日志,关联汇总日志的batch_id。

14.6.5 日志保留与查询(与操盘列表第12章12.6.1节一致)

配置项说明
保留时间180天超过180天自动归档
查询入口操盘页顶部栏「操盘日志」按钮、盘口卡片📋图标自动携带当前赛事/盘口筛选
查询权限全部角色普通操盘手可查看自己负责赛事的日志
导出权限仅主管/风控普通操盘手无导出权限

14.7 操作时序与并发控制

14.7.1 乐观锁机制(与操盘列表第14章14.4节一致)

赔率调整采用乐观锁机制防止并发冲突。

实现方式

字段说明
version每次更新递增的版本号
updated_at最后更新时间戳

并发冲突检测流程

┌─────────────────┐
│ 提交赔率调整     │
└────────┬────────┘


┌─────────────────────────┐     否
│ 提交的version = 当前version?│────────→ 返回冲突错误
└────────┬────────────────┘
         │ 是

┌─────────────────┐
│ 更新赔率,version+1 │
└────────┬────────┘


┌─────────────────┐
│ 返回成功         │
└─────────────────┘

14.7.2 并发冲突处理弹窗

┌────────────────────────────────────────┐
│  ⚠️ 数据已被其他用户修改              │
├────────────────────────────────────────┤
│                                        │
│  您编辑的赔率已被其他操盘手修改:      │
│                                        │
│  您的输入值:0.92                      │
│  当前最新值:0.88(由李四于14:30更新) │
│                                        │
│  请选择处理方式:                      │
│                                        │
├────────────────────────────────────────┤
│   [ 放弃修改 ]    [ 强制覆盖 ]         │
└────────────────────────────────────────┘
按钮行为
放弃修改退出编辑态,刷新显示最新值
强制覆盖使用用户输入值覆盖最新值(需权限)

14.7.3 操作时序约束

约束规则说明
状态前置编辑赔率前盘口必须为「开盘」状态隐藏/锁定状态下不可编辑
层级继承上级隐藏时下级不可单独取消隐藏玩法隐藏时,不可单独取消隐藏某个选项
数据源互斥数据源开启时手动调整会自动关闭数据源跟随手动覆盖优先

14.7.4 并发操作优先级(与操盘列表第14章14.8.6节一致)

优先级操作类型说明
1(最高)下架涉及客户端可见性,影响最大
2锁盘主动风控行为,优先保障
3解锁需确认数据源状态后执行
4(最低)隐藏/取消隐藏临时状态变更

修订记录

版本日期修订内容
v1.02026-01-22初稿
v1.12026-01-22【颗粒度对齐】1) 权限定义改为引用操盘列表第12章,不重复定义;2) 盘口状态术语统一为「开盘/暂停/锁定/关盘」;3) 补充只读模式说明;4) 审计日志导出权限与第12章12.6.1节对齐;5) 每个操作补充入口、弹窗、流程、失败处理(与第11章颗粒度一致)
v1.22026-01-28【P2修复】14.1.3节增加「自己负责赛事」判定条件定义(CurrentUserId == Event.TraderId)
v1.32026-01-29【术语一致性】本地控制操作术语统一:「暂停盘口」→「隐藏盘口」、「恢复盘口」→「取消隐藏盘口」;权限矩阵、操作流程(14.3.2/14.3.3)、弹窗文案、并发操作优先级表同步更新;与宪法v1.6及第8章保持一致

体育操盘系统产品文档