This commit is contained in:
昔念
2026-04-25 23:05:41 +08:00
parent 415315c288
commit 4906197c77
18 changed files with 1009 additions and 31 deletions

View File

@@ -0,0 +1,229 @@
# 巅峰之战天选池当前逻辑说明
更新时间2026-04-25
## 1. 入口职责
当前巅峰相关入口拆成 3 个点
- `point_1`打开巅峰之战主页面
- `point_2`打开天选池投票页面
- `point_3`打开本周正式天选配置页面
三者职责如下
- `point_1` 只负责展示当前赛季段位匹配入口以及本周正式天选摘要
- `point_2` 只负责玩家投票不负责配置本周正式天选属性
- `point_3` 只负责配置本周正式天选和其预设属性
## 2. 两套数据的区别
当前天选系统明确分成两套数据
### 2.1 投票候选池
这是玩家在 `point_2` 页面看到并进行投票的候选列表
来源规则
1. 先读取乱斗精灵池 `config_boss_melee`
2. 从乱斗池中提取精灵 ID `mon_id` 去重
3. 再减掉上一周已经作为正式天选出现过的精灵
4. 剩余结果作为本周投票候选池
也就是说
- `point_2` 不是手工配置候选池
- `point_2` 候选池是乱斗池 - 上周正式天选
### 2.2 本周正式天选
这是本周真正会进入巅峰/BP 的正式天选列表
来源规则
1. `point_3` 页面手工配置
2. 写入 `config_peak_tianxuan`
3. 每条记录保存精灵 ID周序号展示顺序属性技能皮肤等信息
也就是说
- 玩家投票结果不直接等于本周正式天选
- 真正进入 BP 的是 `point_3` 配置出来的本周正式天选
## 3. 上周去重规则
当前已经实现的去重口径如下
### 3.1 投票候选去重
`point_2` 候选池生成时会自动排除上一周正式天选出现过的精灵
表现为
- 后端会返回 `tianxuan_prev_week_pool`
- 前端投票页会显示上周周免 / 本周排除项
- 这些精灵不会再进入当前投票候选列表
### 3.2 正式天选去重
`point_3` 配置本周正式天选时后端会校验
- 同一周内不能重复配置同一只精灵
- 本周正式天选不能和上一周正式天选重复
## 4. 玩家投票规则
玩家在 `point_2` 投票页的规则如下
- 每个玩家每周只能投 1
当前投票不会写入 `player_pvp`而是单独写入周投票记录表
当前投票记录字段最小化为
- `week_index`
- `player_id`
- `pet_id`
表结构
- `config_peak_tianxuan_vote`
约束规则
- 同一玩家同一周只能有 1 条投票记录
- 如果本周重复投票不新增记录直接更新该玩家本周那条记录的 `pet_id`
- `updateTime` 就是该玩家本周最近一次修改投票的时间
这份数据当前用途
- 作为本周玩家投票明细保留
- 用于统计本周每只候选精灵的总票数
这份数据当前不直接参与
- 巅峰匹配入队
- BP 本周正式天选生成
## 5. point_1 当前展示逻辑
巅峰主页面当前展示的是本周正式天选不是玩家投票候选池
页面会从 `/admin/game/pvp/get` 读取
- `current_tianxuan_pool`本周正式天选
- `tianxuan_vote_pool`本周投票候选池
- `tianxuan_prev_week_pool`上周正式天选用于排除展示
主页面当前重点展示
- 段位和匹配模式
- 本周正式天选数量
- 本周正式天选列表
## 6. point_2 当前展示逻辑
天选池投票页当前会
1. 请求 `/admin/game/pvp/get`
2. 读取 `tianxuan_vote_pool`
3. 读取 `tianxuan_prev_week_pool`
4. 读取 `selected_tianxuan_pet_ids`
5. 按当前段位限制可投数量
页面表现
- 顶部显示当前周和投票数量限制
- 单独显示上周周免 / 本周排除项
- 候选列表支持搜索
- 候选列表支持无限滚动懒加载
## 7. point_3 当前配置逻辑
`point_3` 对应的是本周正式天选配置面板
当前可配置字段包括
- `week_index`
- `display_order`
- `pet_id`
- `preset_name`
- `level`
- `nature`
- `hp`
- `max_hp`
- `attack`
- `defence`
- `sp_attack`
- `sp_defence`
- `speed`
- `skin_id`
- `effect_ids`
- `skill_ids`
- `remark`
- `is_enable`
存储表
- `config_peak_tianxuan`
## 8. BP 当前使用逻辑
BP 当前不再读取玩家投票结果
当前口径
- BP 使用的是本周正式天选
- 后端在进入 BP 时读取 `config_peak_tianxuan` 当前周配置
- 同一份正式天选会同时下发给双方展示
也就是说
- 玩家投票结果不直接进 BP
- `point_3` 配置才是真正进入 BP 的天选列表
## 9. 接口口径
### 9.1 `/admin/game/pvp/get`
当前主要返回
- `rank_info`
- `required_tianxuan_vote_count`
- `tianxuan_week_index`
- `tianxuan_prev_week_index`
- `tianxuan_vote_pool`
- `tianxuan_prev_week_pool`
- `current_tianxuan_pool`
### 9.2 `/admin/game/pvp/save_tianxuan_vote`
当前用途
- 保存玩家本周唯一一条投票记录
保存前会校验
- 只能投候选池中的精灵
- 每次只允许提交 1 只精灵
- 同一玩家同一周重复提交时覆盖原投票记录
## 10. 票数统计方式
候选列表中的票数不再存死值
当前实现为
1. 每周投票明细写入 `config_peak_tianxuan_vote`
2. 候选列表展示时 `week_index + pet_id` 聚合统计票数
3. 下一周如果要看上周投票结果直接统计上周的投票记录表即可
## 11. 当前已知口径总结
一句话总结当前逻辑
- `point_2`玩家从乱斗池 - 上周正式天选里投票
- `point_3`运营/配置侧手工配置本周正式天选和属性
- `point_1` / BP都使用 `point_3` 配好的本周正式天选
- 玩家投票明细单独存 `config_peak_tianxuan_vote`不进 `player_pvp`

View File

@@ -0,0 +1,42 @@
# 巅峰之战天选池投票设计
## 规则补全
- 参与规则
- 白银及以下至少 1 100 级以上精灵进行 `1v1`
- 黄金铂金紫晶至少 3 100 级以上精灵进行 `3v3`
- 钻石及以上至少 6 100 级以上精灵进行 `6v6`
- 段位规则
- 初始段位为青铜初始分 `800`
- `1000` 白银`1200` 黄金`1500` 铂金`1800` 紫晶`2100` 钻石`3000` 大师`4000` 王者
- 王者榜前 100 自动晋升至尊王者
- 天选池规则
- 每周开放一组天选池候选精灵
- 玩家在进入巅峰匹配前先从本周天选池中投票选择自己的天选备选
- 白银及以下可选 `1` 紫晶及以下可选 `2` 钻石及以上可选 `3`
- 这些投票结果跟随匹配快照一起进入后续 BP 流程
- BP 规则
- 钻石以下默认无 Ban/Pick 强制要求但前后端结构统一预留天选池字段
- 钻石及以上进入正式 BP
- BP 展示区应包含
- 出战备战精灵
- 天选精灵
- 双方互 Ban / Pick
- BP 完成后再进入正式对战
- 奖励规则
- 本次仅补结构与文档位结算奖励赛季奖励周奖励仍按后续配置表落地
## 本次后端结构预留
- `2458` 巅峰加入请求增加 `TianxuanPetIDs`
- 匹配快照 `QueuePlayerSnapshot` 增加 `TianxuanPetIDs`
- `CrossServerBanPickStartOutboundInfo` 增加
- `TianxuanSelectableCount`
- `MyTianxuanPets`
- `OpponentTianxuanPets`
## 当前实现边界
- 本次先完成开始界面投票 + 匹配快照透传 + BP 启动数据预留
- 不直接改现有 `banpick.vue`
- 天选精灵的正式上场生成战斗侧实体化和完整 BP 消费交给后续 BP 页面与战斗链路接入