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

61 lines
5.6 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 服务端接口事实确认单
目的:请掌握当前线上接口的开发者一次填写四项事实,供客户端完成纯平移方案及完整审核。不是要求重做服务器架构,也不是已证明四类能力都不存在。客户端Agent不修改服务器源码。
当前审核依据:原ZCode第四轮确认方案方向/隔离边界准确,整体仍不可编码。剩余只涉及下面的具体协议,原业务规则和迁移方向不再讨论。
## 已确认输入,无需再次解释
- 固定正式地址http://s101.local:18080/;KV玩家身份是登录返回的PlayerId/UserID。普通业务请求旧字段名可保留。
- playerdata/Get/Set/Delete归属认证本人;Get只传keys,现有客户端不传目标ID。双向八次跨账号Get探测只返回本人,不能靠加参数读取他人。
- friend/GetFriendsList、SearchFriend等路由已存在。101/102互加成功;GetFriendsList返回friends字符串数组,SearchFriend返回info对象。目标UserID已实测正确。
- 现有好友/搜索样例只有ID、昵称、头像、普通level,level=1;本人KV现代档实际等级101=62、102=60。没有LevelB/LastLogin,源KV暂也没有这两个键。测试没有执行UpdateProfile;不预判差异原因。
- LevelB由客户端原时点按原算法产生,lv×100000+建筑等级,原上限处理保持;全球名LevelB、地区名ContinentCode+LevelB。服务端查询时不能擅自重算改变更新时点。
- 登录时间沿先存KV、后联调方向;客户端已有LastLoginTimeUtc在每日初始化后保存,先消费旧值的顺序不改。时间投影须明确这一阶段语义,不能用查询时刻伪造。
- 公告/匹配均为原功能迁移,原UI、调用时序、失败行为不改。
## 1. 好友及公开资料
请填写**实际合同**,现有字段能满足则指认其含义;若目前不满足,明确缺哪一项即可,不虚报已有能力。
| 待返回事实 | 请填写 |
|---|---|
| GetFriendsList和SearchFriend可消费的真实响应样例 | 成功非空、空/不存在、失败各自的HTTP与业务码、最小脱敏JSON或协议文档位置 |
| 每位好友LevelB | 字段名、类型、存储来源,与第2项统计键的关系 |
| 每位好友LastLogin | 字段名、UTC表示、读取的KV键/写入阶段;缺键是字段省略、null还是其他原合同结果 |
| 他人普通等级、昵称、头像 | 实际来源;当前level=1与KV等级不一致是否由原UpdateProfile/缓存流程解释;客户端应读哪个已有字段/接口 |
| 精确目标查询的不存在/失败语义 | 是否返回默认资料、null或错误码;不能从已存在101/102成功样例推断 |
客户端映射目标:好友统计分数仍供原排序和除模解码;时间供原伙伴邀请排序;GetPlayInfo保持同一占位对象的异步填充与原事件,GetPlayLv保持原远端成功/失败流程。原Profile/Statistics为空跳过规则不扩大;缺时间不能改成过滤好友。
## 2. 全球/地区等级榜及本人统计写入
| 待返回事实 | 请填写 |
|---|---|
| 等级榜读取入口 | 实际HTTP方法、路由、认证、请求字段;如何指定统计名、起始名次0、最多50条 |
| 读取结果 | 分数、位置、UserID、昵称、头像等字段的真实响应;空榜/失败表示 |
| 本人统计键对齐 | 聚合侧实际读取的全球/地区KV键名;是否确认LevelB及地区前缀+LevelB,值为原计算整数的十进制字符串(现有KV值类型为字符串) |
| 更新可见性 | 原触发点写入本人KV后,榜/好友读取何时看到该统计值;存在缓存时给实际规则,不新造业务策略 |
客户端保留原SetLvData、300秒延迟更新入口、分数计算与上限、async void调用者及错误log后结束等待。客户端一次PF统计请求不证明后端事务原子性;不新增事务要求,但实际KV写入/失败合同须在方案中与原调用语义对齐。不使用活动event/GetLeaderboards冒充等级榜。
## 3. 公告
请提供实际全局公告读取入口/作用域、请求方式和成功/空列表/失败JSON;至少明确标题、正文、时间字段及列表原顺序。客户端原取首条,Timestamp用于红点与阅读标记,CreateTime参与原判断;不需要重新设计公告UI,也不能用本人私有KV代替全局内容。
源码:Client/Assets/Scripts/Services/TileNewsManager.cs的ReadTitleNews。
## 4. 匹配
请提供原四步对应调用:创建票据、查询票据、取消票据、读取匹配结果。各写实际路由/方法、认证、请求/响应、错误与状态含义。
原输入包含QueueName、GiveUpAfterSeconds,以及Tier/Map/Group/Details;原返回/消费包含TicketId、Status、MatchId、取消原因、成员UserID和属性。客户端保留原3秒轮询及原流程,KV身份不伪造PlayFab EntityKey。若尚无对应能力,明确缺少哪一步,不将临时MachingEnd(null)作为完成。
源码:Client/Assets/Scripts/Duel/UI/EventFishingDuelPanel.cs的CreateMatchmakingTicket/GetMatchmakingTicket/CancelMatchmakingTicket/GetMatch调用链。
## 回复和后续
可直接在本单四节下补文字、给接口文档链接或最小脱敏请求/响应。不需要提供账号密码、Cookie或完整玩家档。请注明事实对应当前线上版本还是拟修改版本;拟议合同与线上已部署事实分开。
四项收到后,客户端将实际字段与原消费者逐项对齐,补齐精确文件/方法和验证范围,合入同一C3c完整审核。审核明确整批通过后统一编码,不再局部开工。需要服务器变化由服务端开发者处理,本单不是授权客户端修改服务器。