This commit is contained in:
@@ -1,153 +1,52 @@
|
||||
# 巅峰之战天选池当前逻辑说明
|
||||
|
||||
更新时间:2026-04-25
|
||||
更新时间:2026-04-26
|
||||
|
||||
## 1. 入口职责
|
||||
|
||||
当前巅峰相关入口拆成 3 个点:
|
||||
- `point_1`:巅峰之战主页面,展示当前玩家已配置的天选精灵。
|
||||
- `point_2`:天选池投票页面,只保存玩家本周投票。
|
||||
- `point_3`:天选精灵配置页面,配置玩家自己的天选精灵属性。
|
||||
|
||||
- `point_1`:打开巅峰之战主页面
|
||||
- `point_2`:打开天选池投票页面
|
||||
- `point_3`:打开本周正式天选配置页面
|
||||
## 2. 投票数据
|
||||
|
||||
三者职责如下:
|
||||
投票表是 `config_peak_tianxuan_vote`。
|
||||
|
||||
- `point_1` 只负责展示当前赛季、段位、匹配入口,以及“本周正式天选”摘要
|
||||
- `point_2` 只负责玩家投票,不负责配置本周正式天选属性
|
||||
- `point_3` 只负责配置“本周正式天选”和其预设属性
|
||||
字段口径:
|
||||
|
||||
## 2. 两套数据的区别
|
||||
- `week_index`:日期周,格式为 ISO 年周,例如 `202617`。
|
||||
- `player_id`:投票玩家。
|
||||
- `pet_id`:投票精灵。
|
||||
|
||||
当前天选系统明确分成两套数据:
|
||||
约束口径:
|
||||
|
||||
### 2.1 投票候选池
|
||||
- 每个玩家每个日期周只能投 1 只精灵。
|
||||
- 同周重复投票时更新原记录。
|
||||
- 票数统计按 `week_index + pet_id` 聚合。
|
||||
|
||||
这是玩家在 `point_2` 页面看到并进行投票的候选列表。
|
||||
## 3. 投票池
|
||||
|
||||
来源规则:
|
||||
`point_2` 的候选池来自乱斗精灵池 `config_boss_melee`,按 `mon_id` 去重。
|
||||
|
||||
1. 先读取乱斗精灵池 `config_boss_melee`
|
||||
2. 从乱斗池中提取精灵 ID,按 `mon_id` 去重
|
||||
3. 再减掉“上一周已经作为正式天选出现过的精灵”
|
||||
4. 剩余结果作为本周投票候选池
|
||||
当前不再因为上周出现过就从候选池移除。上周投票结果只作为展示和后续配置参考。
|
||||
|
||||
也就是说:
|
||||
页面会展示:
|
||||
|
||||
- `point_2` 不是手工配置候选池
|
||||
- `point_2` 候选池是“乱斗池 - 上周正式天选”
|
||||
- 当前日期周投票池。
|
||||
- 上一日期周投票统计。
|
||||
- 当前玩家本周已投的精灵。
|
||||
|
||||
### 2.2 本周正式天选
|
||||
## 4. 天选配置
|
||||
|
||||
这是本周真正会进入巅峰/BP 的正式天选列表。
|
||||
天选配置表是 `config_peak_tianxuan`。
|
||||
|
||||
来源规则:
|
||||
这张表现在表示“玩家额外拥有的天选精灵配置”,参考 `player_pet` 的归属思路,不再按周保存。
|
||||
|
||||
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`
|
||||
@@ -164,66 +63,19 @@
|
||||
- `remark`
|
||||
- `is_enable`
|
||||
|
||||
存储表:
|
||||
约束口径:
|
||||
|
||||
- `config_peak_tianxuan`
|
||||
- 同一玩家不能重复配置同一只天选精灵。
|
||||
- 不再校验“本周不能和上周重复”。
|
||||
- 不再要求 `week_index`。
|
||||
|
||||
## 8. BP 当前使用逻辑
|
||||
## 5. BP 使用
|
||||
|
||||
BP 当前不再读取玩家投票结果。
|
||||
BP 不直接读取投票记录。
|
||||
|
||||
当前口径:
|
||||
进入 BP 时读取双方各自的 `config_peak_tianxuan` 配置:
|
||||
|
||||
- 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`
|
||||
投票结果后续可用于决定哪些精灵开放给玩家配置,但配置本身是玩家维度的数据。
|
||||
|
||||
Reference in New Issue
Block a user