Files
webman-buildadmin/docs/后端.md
2026-04-15 10:03:21 +08:00

146 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 💻《"36字花" 后端系统开发与后台模块详细规格书》
**适用对象**:后端开发工程师、数据库架构师、系统管理员
## 一、 系统架构与技术栈规范 (Architecture & Tech Stack)
1. **核心开发语言/框架**:由于极高的并发读写,推荐使用并发性能优越的语言。
2. **数据冷热分离架构**
* **热数据 (Redis)**:存放**当前局的倒计时状态**、**当前局全网注单池**、**玩家连胜状态 (Streak)**、**30期开奖历史**。AI算票必须全程在 Redis 内存中计算,确保 2 秒内出结果。
* **业务主库 (MySQL / PostgreSQL)**:存放用户资产、核心账本、代理树状图、系统配置。注单状态确认后异步落库。
* **冷数据查询 (ElasticSearch / ClickHouse)**:超海量注单流水(每月上亿条)的存储与分页查询,减轻主库压力。
3. **异步消息队列 (MQ)**:引入 RabbitMQ 或 Kafka。开奖结果一出立刻将派彩结算、连胜状态更新、站内信发放等操作扔进 MQ 异步执行,**绝对禁止在结算期同步锁库写数据**。
4. **事务安全性**:下注扣款动作必须是**强原子性操作 (Atomic)**,结合 Redis 分布式锁杜绝并发下注导致的余额超扣Negative Balance
---
## 二、 核心驱动引擎30秒状态机与AI算票 (Core Engine)
后端必须启动一个绝对精准的守护进程Daemon来维持 30 秒一局的生命周期。
### 2.1 状态机切换逻辑 (State Machine)
* `STATUS_OPEN (0-20s)`:接收 `Bet_API` 请求。若有自动托管任务,在 0-10s 内通过 Jitter 平滑随机执行注单,防并发风暴。
* `STATUS_LOCKED (20.0s)`:严格切断请求接入,开始计算。
* `STATUS_CALCULATING (20-22s)`:调用 AI 算票引擎。
* `STATUS_PAYOUT (22-25s)`:第 22.0 秒立刻将派彩和站内信任务扔入 MQ 异步执行。同时下发结果给前端开始播放倒计时定格动画。
* `STATUS_FINISHED (25-30s)`:本期收尾,创建下一期期号,循环。
* **灾难兜底器**:系统启动时自检,若发现有卡在 `CALCULATING` 的历史期号,立即执行 `VOID_AND_REFUND`(全额退本)脚本。
### 2.2 AI 算票引擎算法 (后台执行逻辑)
1. **汇集注单**:抓取本期 Redis 池中所有有效注单。
2. **提取连赢系数**关联下注玩家当前的连赢次数0次=33倍1次=66倍2次=99倍...)。
3. **遍历计算 (PnL Loop)**
* `For i = 1 to 36:`
* 计算如果开出 `i`平台需赔付的总金额含触发Jackpot的额外100万
4. **RTP 风控池判定**
* 拉取当前“全局放水池”余额。
* 如果有某个结果导致平台亏损,但亏损额 < 放水池余额AI通过 `Math.random()` 以配置概率如15%)选择该结果。
5. **最终决断**:若未触发放水,则 `Return Min(PnL_Array)`(返回让平台赔付最少的数字)。若有多个最小值,随机取其一。
---
## 三、 🌟 核心重点:总控后台 (Admin Portal) 功能模块清单
为了让运营团队能够全方位掌控平台,后端需要为前端/后台管理系统提供以下极为详尽的 API 和模块支持:
### 3.1 📊 数据看板台 (Dashboard)
运营人员登录后台第一眼看到的数据宏观监控:
* **实时在线**:当前 WebSocket 在线连接数。
* **宏观财务 (今日/本周/本月)**:全网总充值额、总提现额、全网总下注额 (Turnover)、**平台实际客损盈亏 (GGR / PnL)**。
* **风控预警屏**滚动显示大额中奖提示单笔赢取超过X万、异常频繁提现提示。
### 3.2 🎲 游戏与开奖控制台 (Game & Draw Control)
* **模式切换开关**`[自动 AI 模式]``[手动控制模式]` 实时切换。
* **实时注单监控**:在下注的 0-20 秒内,实时展示当前 36 个格子的注金分布热力图,并实时预估每个格子的 PnL。
* **手动开奖干预框**:当开启手动模式时,提供一个允许在前 20 秒内指定开奖号码的输入框。
* **历史开奖纠错与作废**:允许超管针对历史某期执行“撤回作废 (Void)”指令,系统自动扣除已派彩金额(慎用功能)。
### 3.3 👥 用户 CRM 与风控管理 (User & Risk Management)
* **玩家列表与画像**包含玩家ID、归属代理、注册时间、当前余额、总充提差、历史总输赢。
* **玩家详情穿透 (Deep Trace)**
* 查看该玩家详细下注流水、充提流水。
* 查看登录设备指纹、登录 IP 历史(支持同一 IP 多账号关联查询)。
* **风控操作箱**
* **冻结/解冻账户**(禁止登录 / 禁止下注 / 禁止提现)。
* **人工加减币 (Manual Adjustment)**:用于处理客诉补偿或线下充值,必须记录操作理由和操作人。
* 清零连胜进度(异常账号干预)。
### 3.4 💰 财务与出入金审核中枢 (Finance Center)
* **充值明细表**:所有充值订单状态(成功/失败/掉单补单)。
* **提现审核队列 (Withdrawal Audit)**
* 列出待审核单据。**后端必须在此处提供“有效流水达标检测”标签**该玩家充值1000当前已打流水1500流水完成率 150%,亮绿灯)。
* 支持 `[一键通过并打款]``[驳回请求并退回余额]` 操作。
* **Jackpot 提现专项通道**:针对大额中奖资金的专属审核队列,必须由超管权限放行。
* **提现手续费收益报表**:单独统计系统抽取的 0.5% 手续费总收入。
### 3.5 🏢 代理中枢与佣金结算系统 (Agent System)
* **创建总代账号**:由于前端不支持散户变代理,只能由管理员在此处点击 `[新增总代 Master Agent]`,生成专属邀请链接。
* **代理树状图 (Tree View)**:可视化查看整个多级代理层级及人数。
* **佣金结算看板 (Commission Settlement)**
* 后端按周/月跑批处理脚本Cron Job
* 展示全平台周期总盈利(大盘盈亏)。
* 列出各代理线的流水占比%、应得分红、GM盘口扣除利润、实际下放分红。
* 提供 `[一键发佣]` 按钮,将佣金批量转入各代理的 Agent 钱包。
### 3.6 🤝 联营契约与合营代理管控大厅 (Affiliate Management)
设计为与普通流水分佣系统并行的**客损占成代理模块**方案:
* **联营契约(合营契约)线上配置**平台超管可与高级代理在线签署“联营契约”。支持动态阶梯的占成比例如当月新增活跃≥10人且总客损>1万美元时该代客损占成提高至45%)。
* **独立负结转账单明细 (Agent Statement)**
* 后端按月或周生成带有“负盈利结转”规则的专业级合营账单。
* 账表包含项目:辖区总输赢、当期大促红利扣除、当期通道成本扣除、**历史负结转累计抵扣**、当期应结佣金。
* **佣金与负盈利全自动跑批**:结算周期末由 Cron Job 自动判断,若是正佣金则划入代理钱包;若是负佣金(玩家赢),则记入该代理名下的 Carryover Balance累计负结转账本供下期抵扣。
* **独立的财务出金通道**:联营代理大额提取高额占成分红时,有专门供高级财务总监审批的安全通道,与普通玩家或刷水代理区分开。
### 3.7 ⚙️ 系统超级参数引擎 (System Configuration)
这是系统最核心的动态配置中心,**后端必须将以下参数做成 DB 可配置,严禁在代码里写死**
* **时间参数**单局时长默认30、下注时长默认20
* **下注参数**最高选字数默认5可调为6或7、最低下注额默认1、**单注最高限额**如500风控核心、前端快捷筹码面额配置。
* **赔率参数**基础赔率默认33、连续中奖递增步长默认33
* **大奖参数**Jackpot 触发连胜阈值默认10、Jackpot 奖励固定金额默认1,000,000、**Jackpot资格最小下注额默认50**。
* **风控参数**提现流水倍数要求默认1.0倍、提现手续费比例默认0.005、AI RTP 放水抽水比例。
* **代理参数**:全局 GM 盘口截留比例默认20%)、**联营合营基础成本双降费比例默认15%**。
### 3.8 📢 运营中心 (Operations)
* **公告信箱管理**:富文本编辑器。支持设置公告类型为 `[普通静默]``[强阻断 Pop-out]`,其中 Pop-out 要求客户端弹出并强制确认。
* **前端走马灯/跑马灯**:管理首页顶部滚动的文字通知。
### 3.9 🔒 权限与操作日志 (Admin RBAC & Logs)
* **角色控制 (Role-Based Access Control)**:设置超级管理员、财务审核员、普通客服。
* **管理员操作审计 (Audit Trail)**记录所有后台操作的日志谁、在什么时间、把赔率从33改成了35或给谁手动加了钱防范内部作恶。
---
## 四、 C端前端核心 API 接口要求 (User API Requirements)
除了基础的登录注册,后端需要重点保证以下几个接口的性能与安全:
1. **`POST /api/user/register` (用户注册)**
* 接受手机/邮箱、密码、以及 `invite_code`(选传)。如果带有 `invite_code`,自动挂载到对应代理名下;否则为直客。
2. **`GET /api/game/roadmap_history` (历史路子图拉取)**
* 前端初始化首屏时调用,返回最近 30 期的开奖记录数组(含期号、中奖数字、赔率),用于渲染屏幕底部大路/红蓝球走势图。
3. **`GET /api/game/current_status` (轮询/长连接)**
* 前端每秒请求或通过 WebSocket 接收。返回当前期号、倒计时剩余秒数、当前开奖状态。
4. **`POST /api/game/place_bet` (核心下注接口)**
* **入参**:期号、选中的动物编号数组 `[01, 02, 15]`、单注金额 `10`
* **后端强校验逻辑**
1. 验证时间:是否超过第 20 秒?是则返回 403 封盘报错。
2. 验证数量:数组长度是否 ≤ 系统配置的【最高选字数】?
3. 验证连赢上限:该玩家若处于连赢态,本次下注总额(如 30是否 ≤ 上局总下注额?
4. 验证余额:余额是否 ≥ 30
* 校验全过,开启 DB 事务,扣钱,写注单,提交。
5. **`POST /api/game/auto_spin` (启动/停止自动托管)**
* 后端接收托管指令后,写入守护进程列队。由服务器在后台**引入 Jitter(0-10s随机制打散)** 帮玩家调用 `place_bet`
6. **`GET /api/user/pnl_history` (历史记录过滤)**
* 后端仅返回最近 1 个月的数据(通过 SQL 时间戳硬性过滤),防止扫库查询。
---
## 五、 后端安全与反黑客建议 (Security & Anti-Fraud)
1. **接口限流 (Rate Limiting)**`place_bet` 接口必须限制单个用户的请求频率(如 1秒内最多2次防止外挂脚本通过并发漏洞击穿余额。
2. **汇率与金额精度**:底层数据库所有金钱字段(游戏币)**必须使用 `DECIMAL(18,4)` 或将其放大 10000 倍用整型 (`INT64`) 存储**。绝不允许使用浮点数Float/Double防止精度丢失导致对账不平。
3. **负资产阻断**:扣款 SQL 必须带上条件判断:`UPDATE user SET balance = balance - 100 WHERE id = 1 AND balance >= 100;` 确保高并发下余额不会被扣成负数。