Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-C3c当前待设计与接线清单-2026-09-30.md
Liubing\LB 6813da149a feat(upserver): 保存M2客户端KV迁移至本人统计写检查点
保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
2026-09-30 19:19:05 +08:00

59 lines
7.5 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.
# C3c 当前待设计与接线清单
2026-09-30,按用户最新纠正整理。**迁移原有功能,只补KV替代接口及必要数据映射,不重新设计LevelB或榜单业务。** 本文是当前待设计事项的统一清单;旧方案、事实确认单和审核材料保留历史字节,涉及“重新设计统计键”“一律新增接口”“只能等待他方给协议”的旧表述以本文为准。独立审核结论不由本文件改写,C3c仍须完整审核通过后编码。
## 1. 已确定,只做接线,不再列为新设计
| 内容 | 执行边界 |
|---|---|
| LevelB计算和统计名称 | 沿原SetLvData公式、上限、LevelB及ContinentCode+LevelB名称、原更新时机;不改成服务器查询时重算 |
| 本人统计保存 | 原SetLeadboardData上传PF的动作,平移为KV管理器保存本人数据;KV值的字符串转换只是存储适配,不另建统计体系或临时副本 |
| 本人登录时间 | 沿已有LastLoginTimeUtc及原每日初始化顺序,不新增同义键、不重新选择时间来源 |
| 客户端等级榜入口 | 保留GetLeadboardData及GetLevelLeadboardData;只替换内部GetLeaderboardAsync提供方,保留默认前50、结果映射、缓存、事件和UI流程 |
| 玩家身份 | 使用认证返回PlayerId/UserID;旧playFabId字段名可暂时保留,值换新ID;不另建身份映射 |
| 原好友、公开资料、公告、匹配业务 | 原数据含义、过滤/排序、同步与异步方式、返回与异常、UI和轮询时序保留 |
“原来有接口”已确认:原等级榜由PlayFab.GetLeaderboardAsync提供。它不等于已确认自建服务器部署了同名HTTP接口,也不等于旧PF统计已迁入KV。此前101/102读KV未取得LevelB,只代表当时这两个账号的样例;不据此推断全服无数据或必须重建榜单。
## 2. 真正需要补齐的替代接口内容
原则:**先复用已有等价接口;字段不足则最小补字段;确无等价入口才补接口。** 线上存在性、拟议合同、已完成代码分别记录,不能混为已实现。以下四类是原功能迁移的接口工作,不是四项新产品设计。
| 项目 | 已有能力/证据 | 剩余需补齐的内容 | 当前处理方式 |
|---|---|---|---|
| 等级榜读取 | 客户端GetLeadboardData → PF GetLeaderboardAsync;原统计名、起始位置、数量和结果消费已明确 | KV服务对应读取入口及请求/响应映射:统计名、起始位置、数量 → UserID、位置、分数、公开资料;空榜/失败沿原语义 | 先复用线上已有等价入口。此前拟POST leaderboard/GetLeaderboard仅为缺入口时的替代合同草案,**不是必须另造URL**;LevelB计算与存储规则不重做 |
| 好友及他人公开资料 | friend/GetFriendsList、friend/SearchFriend已正式成功;好友关系/目标新ID可复用。当前样例未返回LevelB/LastLogin,普通level与本人档不同 | 原好友列表一次返回所需KV公开资料;SearchFriend等原资料入口需对齐真实普通等级、昵称/头像及不存在/失败映射 | 好友已有扩展Profile草案,保留原路由与四兼容字段;公开资料优先复用SearchFriend,补数据来源/必要字段,不另起一套查询系统 |
| 公告读取 | 原TileNewsManager.ReadTitleNews → PF GetTitleNewsAsync,已有标题、正文、Timestamp及原消费流程 | 对应全局公告读取入口、同义字段、列表顺序、成功/空/失败映射 | KV替代侧已有等价能力就直接接;尚未取得对应合同,不宣称服务不存在,不先设计新公告系统或用本人私有KV代替全局内容 |
| 匹配调用 | 原PF多人匹配已有创建票据、查询票据、取消票据和取结果四步 | 新UserID下四步的等价调用、原队列/属性/状态及结果字段映射 | 先核现有服务可复用范围,只补缺少的调用合同;不重做匹配规则、轮询或UI,不以临时结束路径替代功能 |
好友和等级榜已有用户授权的接口草案,继续完善即可,不再次请求“是否允许设计”。公告/匹配目前属于需核对替代合同的项,不在本轮凭空新增路由或规则。具体线上版本由服务端负责侧提供或核对;客户端侧负责旧消费者映射、实现与验证,不把整体迁移工作转交服务端。
## 3. 最小客户端接线位置
以下为候选实施位置,不是新增编码许可。复用已有KV用户服务、存档接口和CustomServerMgr,不新增Provider、管理器、运行开关或让底层KV依赖业务UI。
| 文件(相对Client/Assets/Scripts) | 原入口及迁移内容 |
|---|---|
| DataCenter/DataCenter.LeadboardData.cs:158、171 | SetLeadboardData仅替换本人统计保存;GetLeadboardData仅替换榜单读取与结果映射;SetLvData算法和活动榜保持 |
| Services/FriendService.cs:132 | GetFriendList仅替换PF数据取得及映射;原过滤、排序、事件保持 |
| Services/FriendModel.cs | 已有DTO确实缺少获审字段时才补字段,保留现有wire兼容 |
| Services/KVUserService.cs:282、288 | GetPlayLv/GetPlayInfo接等价远端资料;原参考逻辑在UserService.cs:810、849、874,保留同一占位对象和异步更新事件 |
| Services/TileNewsManager.cs:24 | ReadTitleNews替换公告取得,保留首条选择、红点、阅读标记及原异步流程 |
| Duel/UI/EventFishingDuelPanel.cs:608、685、740、811 | 原创建/查询/结果/取消调用接替代服务;保留原3秒轮询及原状态处理,不伪造EntityKey |
服务器接口内部实现由服务器开发者负责;客户端Agent不改本地或远程服务器。若已有正式接口能直接满足合同,以实证收敛草案,避免新建重复路由。当前`event/GetLeaderboards`是活动榜,不是已确认的LevelB等级榜替代入口。
## 4. 当前资料与待办
- [x] 从待设计项移除LevelB公式、统计名称、本人保存方向及登录时间方向;已定规则只作接线验收依据。
- [x] 确认原等级榜客户端入口已存在;撤回必须另造等级榜URL的含义。
- [x] 完成[好友资料扩展草案](M2-好友KV资料服务端接口设计-待完整审核-2026-09-30.md)与[等级榜等价读取草案](M2-等级榜读取与本人统计键接口设计-待完整审核-2026-09-30.md)。后者第2节只作为原存储映射说明,结合[LevelB范围纠正](M2-等级榜设计范围纠正-LevelB沿用原逻辑-2026-09-30.md)阅读。
- [ ] 一次核齐以上四类已有替代入口及确需补齐的字段/合同;不得重新询问已测好友路由是否存在、新ID或KV方向。
- [ ] 将确需新增/补字段的合同与客户端最小实现、失败映射、准确文件/方法白名单并入同一C3c完整审核。本人统计写实现也须遵守完整审核门槛,但不另开LevelB业务设计或逐项送审。
- [ ] 完整裁决后连续接线及测试:KV分支相关PF调用为0,原PF/AGG对照保持;离线协议测试与正式联调分别记录,不能把草案或夹具当线上通过。
- [ ] 最终全链验证前恢复已登记开发冻结/忽略路径,仅清理迁移造成且无消费者的实现。命名调整及业务缺陷修正仍待整个迁移完成后另行授权。
## 5. 本检查点
只更新当前设计清单、接手入口、状态、TODO和日志;未修改客户端/测试/服务器代码,未发正式网络请求,未运行Unity或打包。正式地址仍http://s101.local:18080/,Unity验证仅CLI Loop。没有要求用户重复裁决,也没有向审核/服务端会话发送消息。