伟大航路客户端字段与服务端现状差异表 ¶
文档目的 ¶
本文件把前面已经反推出的“客户端字段契约”与当前服务端现状做一次正面对照,回答三个问题:
- 哪些字段或能力服务端已经有。
- 哪些字段只有配置,没有运行时生成。
- 哪些字段客户端明确依赖,但服务端当前仍缺失。
一、总判断 ¶
当前服务端大致处于以下状态:
- 地图配置层:已有
- 战场内运行时:已有
- 基础报名/查战场:已有,但口径仍是旧周赛
- 五岛赛程调度:缺失
- 岛屿状态持久化:缺失
- 资格/锁名单阶段化:缺失
- 积分排行字段:客户端有契约,服务端未形成同口径实现
- 黄金天宫专项接口:客户端有契约,服务端未见完整实现
最核心的证据是:
- info.go
当前仍固定输出:type = 10legionWarType = 15legionWarMapType = 7battlefieldId = LW_WEEK-*
这意味着:
- 服务端当前“战场查询口径”仍停在旧周赛盐场模式。
- 即使配置里已经有五岛和黄金地图类型,也还没有真正参与运行时选择。
二、对照表 ¶
1. 当前岛屿 islandType ¶
客户端依赖:
- 当前大阶段判断
- 不同岛屿规则文案
- 晋级名额展示
客户端证据:
服务端现状:
- 未看到对应字段在伟大航路运行时查询里生成。
- 当前 BuildWarInfo 不返回岛屿信息。
结论:
缺失
2. 当前阶段 legionWarType ¶
客户端依赖:
- 区分灰周赛 / 进阶赛 / 月赛 / 青铜 / 秘蓝 / 月宫 / 黄金胜败决赛
客户端证据:
服务端现状:
- 有字段返回
- 但 info.go 固定为
15
结论:
部分实现- 字段存在,但当前仍固定旧值,未动态调度
3. 地图类型 legionWarMapType ¶
客户端依赖:
- 决定加载哪套地图资源
- 决定建筑配置和地图表现
客户端证据:
服务端现状:
- 配置层已有完整映射:
- 但 info.go 固定为
7
结论:
部分实现- 配置已就位,运行时未接入
4. 地图类型到 mapId 的映射 ¶
客户端依赖:
- 通过 mapType 找实际地图资源和城市配置
服务端现状:
- 已有:
- legion_war_config.go
mapTypeToMapIDbuildingsByTypecitiesByMapID
结论:
已实现- 这是目前服务端最完整的一层
5. 战场基础时间窗 ¶
客户端依赖:
signupStartTimesignupEndTimereadyTimestartTimeendTime
服务端现状:
- info.go 已返回这些字段
- saltfield_module_handlers.go 也会使用这些时间做进场判断
问题:
- 时间窗是按固定日模板生成,不按五岛阶段动态切换
结论:
部分实现
6. battlefieldId ¶
客户端依赖:
- 进入具体战场
- 黄金分组列表判断
selfBfId - 锁成员与资格判断
服务端现状:
- 已返回
- 但当前格式固定:
LW_WEEK-<date>
- 未按岛屿、阶段、胜者/败者/决赛分层编码
结论:
部分实现
7. canEnterWar ¶
客户端依赖:
- 控制进场资格
- 控制锁成员提示
- 控制黄金操作按钮
服务端现状:
- 运行时字段位置是有的:
- 客户端
GDBattlefieldInfo.canEnterWar
- 客户端
- 服务端当前
BuildWarInfo()不生成该字段 war_enterbattlefield中有资格校验,但并未在查战场响应中形成完整客户端契约
结论:
缺失
8. 报名锁名单 ¶
客户端依赖:
- 周赛报名锁成员
- 月赛资格成员
- 黄金登岛成员
服务端现状:
- 已有非常基础的报名记录:
- [legionsignup.Record]
隐含在报名存储里 - [BuildSignupRecord]
调用链存在
- [legionsignup.Record]
- info.go 会把
roleInfos塞进查询结果 - legion_signupHandler 会保存
memberIds
问题:
- 只覆盖“当前固定周赛报名”
- 没有分阶段的:
- 月赛资格成员
- 黄金登岛成员
- 阶段继承和失效逻辑
结论:
部分实现
9. isInExWeek / isInExMonth / isInExGoldMonth / exWeekRiseDate / mapList ¶
客户端依赖:
- 入口态判断
- 灰岛进阶态判断
- 伟大航路 UI 初始化
服务端现状:
- 客户端
LegionService.getInfo明显期待这些字段 - 在当前服务端这轮查看中,尚未见伟大航路完整生成逻辑对上这些字段
结论:
待确认偏缺失
说明:
- 这部分可能散落在军团信息接口里,但就当前伟大航路主链看,未见明确完整实现证据。
10. riseNum ¶
客户端依赖:
- 当前排行页的晋级线
服务端现状:
- 客户端响应结构已预留:
SaltRoad_GetSaltRoadWarGroupRankResp.riseNumSaltRoad_GetSaltRoadWarTotalRankResp.riseNum
- 当前服务端未见对应 handler 完整实现
结论:
缺失
11. blueRiseRound ¶
客户端依赖:
- 青铜岛升秘蓝岛动态名额显示
服务端现状:
- 客户端结构已预留:
SaltRoad_GetSaltRoadWarTotalRankResp.blueRiseRound
- 服务端未见生成逻辑
结论:
缺失
12. sRTotalScore / sRGroupRank / sRGScoreArr / sRBScoreArr / sRKScoreArr ¶
客户端依赖:
- 小组积分展示
- 总积分展示
- 晋级/淘汰图标判断
服务端现状:
- 当前服务端战场内有即时积分和建筑积分逻辑
- 但未见伟大航路赛制维度下的:
- 岛屿积分累计
- 小组排名持久化
- 总积分排行接口
结论:
缺失
13. sRGoldenOut ¶
客户端依赖:
- 黄金是否已淘汰
- 黄金排行页 UI
- 黄金阶段操作按钮折叠
服务端现状:
- 客户端数据结构明确有此字段
- 服务端未见同名或等价字段生成
结论:
缺失
14. 黄金对阵列表 saltroad_getgoldenbflist ¶
客户端依赖:
selfBfIdbfList[]bfId + legionWarType
服务端现状:
- 当前服务端搜索结果中未见完整对应 handler
- 未见黄金 bracket 列表生成逻辑
结论:
缺失
15. 灰盐岛晋升名单 saltroad_getgreyriselegions ¶
客户端依赖:
- 灰岛周赛到进阶赛晋升名单显示
服务端现状:
- 未见对应完整 handler
结论:
缺失
16. 周赛 / 月赛 / 黄金阶段动态赛程调度 ¶
客户端依赖:
- 每天查到正确的
warType / mapType / battlefieldId / time window
服务端现状:
- BuildWarInfo 仍是固定周赛
结论:
缺失
三、分层判断 ¶
已有 ¶
- 地图配置
- 建筑配置
- mapType -> mapId 映射
- 战场内运行时动作
- 最基础的军团报名记录
部分实现 ¶
- 基础战场查询响应
- 时间窗字段
legionWarTypelegionWarMapTypebattlefieldId- 报名锁名单
缺失 ¶
- 岛屿状态
- 五岛阶段调度
- 动态晋级名额
- 小组积分/总积分字段
- 黄金淘汰状态
- 黄金分组列表
- 灰岛晋升名单
- 分阶段资格/锁成员状态机
四、最危险的差异 ¶
当前最危险的不是“某个接口没写”,而是以下几条断层:
- 客户端以“岛屿 + 阶段 + 时间窗 + 资格”驱动页面。
- 服务端仍以“固定周赛盐场”驱动报名和查询。
- 配置层虽然已经有五岛和黄金地图,但调度层没有接上。
这会导致一种典型问题:
- 页面能打开
- 地图配置能找到
- 但报名、积分、资格、排行全部落在旧周赛口径上
五、最适合下一步实现的切口 ¶
如果要最小代价开始补,按顺序建议是:
- 重写
BuildWarInfo*- 动态产出
legionWarType / legionWarMapType / battlefieldId / time window
- 动态产出
- 补岛屿状态和当前阶段状态
- 至少生成
islandType等价信息
- 至少生成
- 补
riseNum / blueRiseRound / totalScore / groupRank - 补黄金专项:
sRGoldenOutgetGoldenBfList- 胜败者线状态
六、结论 ¶
到目前为止,可以比较明确地下判断:
- 当前服务端不是“完全没有伟大航路”
- 而是“配置层和战场内层已有,赛程调度层和赛制字段层缺失严重”
换句话说:
- 现在最缺的不是地图
- 是“赛程 + 资格 + 排行 + 状态机”
评论
请登录后发表评论。
暂无评论。成为第一个评论者!