保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
61 lines
5.6 KiB
Markdown
61 lines
5.6 KiB
Markdown
# 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完整审核。审核明确整批通过后统一编码,不再局部开工。需要服务器变化由服务端开发者处理,本单不是授权客户端修改服务器。
|