Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-KV替代范围重申与剩余SDK接线集中核查-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

57 lines
6.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.
# M2 PlayFab能力由KV承接:需求重申与一次性接线核查
## 用户已确定的需求
客户端KV模式把原PlayFab相关能力平移到KV管理器,原业务流程、规则、顺序及异常语义保留。等级榜、公开资料、好友列表、匹配都是旧PlayFab调用涉及的现有功能,是迁移范围内的工作,不是新需求。无需用户再次裁决数据存哪里、是否迁移这些功能。PF/AGG原提供方仍按已定范围保留。
此前主会话把“客户端尚未完成等价接线”直接表述为“主要工作在服务端侧”不够准确,现撤回这个工作归属结论。当前工作首先在客户端方案核对侧;不能把当前客户端包装器没有入口,直接推断成线上服务没有能力或要求服务端新开发。
## 本轮只读源码证据
| 原调用 | 客户端位置 | 本次迁移要求 |
|---|---|---|
| UpdatePlayerStatisticsAsync / GetLeaderboardAsync | DataCenter.LeadboardData.cs:169/186 | KV承接原分数保存与榜单读取,保留原排名/地区/展示流程;不得用跳过调用当完成 |
| GetUserDataAsync / GetPlayerProfileAsync | UserService.cs:814/874 | 原公开资料/等级调用平移到KV能力,新ID沿用已裁决身份 |
| GetFriendsListAsync | FriendService.cs:145 | KV承接原好友关系与资料读取,原friend/*业务不重做 |
| Create/Get/CancelMatchmakingTicket / GetMatch | EventFishingDuelPanel.cs:658/692/740/817 | 核对KV管理器对应能力接线,保留旧匹配流程与结果消费 |
当前KVMgr.cs仅暴露当前原handle的ReadKV、WriteKV、FlushKVAsync、WaitForKVTicketAsync;PlayerKVClient.cs目前实现playerdata/Get、Set、Delete,请求没有对方ID、榜单或匹配参数。这证明“当前客户端适配未齐”,不证明线上端没有已有接口,更不构成把整个任务转交服务端的依据。个人KV存档方向已确定,不再讨论。
## 审核端是否需要介入
### 2026-09-30 补充:PlayFabClientAsyncAPI 全量调用核对
用户再次明确:KV模式必须移除这些SDK调用,并从KV取得原业务需要的对应值。只换UserID、删除调用、返回空列表或仅保留缓存,均不等于完成迁移。本次全量检索 `Client/Assets/**/*.cs` 得到15处名称引用,其中2处是登录重试包装,实际SDK操作13处;9处位于原PlayFabUserService,4处位于共用业务。PF提供方仍保留其有效实现;验收目标是KV运行路径不进入PF SDK。
| 调用/位置 | KV必须承接的原数据或行为 | 当前核查结论 |
|---|---|---|
| UserService.cs:381/398/411/422 登录 | 新账号认证及登录返回PlayerId | 已由独立KV登录接线承接;原PF登录不删除 |
| UserService.cs:460 本人资料 | 昵称、头像、地区等原资料 | KVUserService从本人KV加载DisplayName、AvatarUrl、ContinentCode等;缺失值不伪造为完整资料 |
| UserService.cs:708/732 改昵称/头像 | 保存DisplayName、AvatarUrl并沿用业务通知 | 已有KVUserService.SaveProfile;保留PF分支 |
| DataCenter.LeadboardData.cs:169/186 | 保存LevelB及地区榜分数;读取原榜单的玩家ID、分数、名次、昵称、头像和地区 | 两处共用调用仍直连PF,待替换;保留原等级乘100000加建筑等级算法、分页及展示流程。仅把分数写本人KV不代表榜单读取完成 |
| FriendService.cs:145 | 好友关系、对方UserID、昵称、头像、LevelB统计、LastLogin | 共用调用仍直连PF;C3b测试覆盖普通friend请求身份兼容,不覆盖该SDK列表读取 |
| UserService.cs:814/874 对方等级/资料 | 按对方UserID取得Lv、昵称、头像,沿用原缓存与GetClubPlayInfoEvent通知 | 原PF方法保留;KVUserService仅有本人/缓存读取,未命中时没有等价远端读取,属于未完成 |
| TileNewsManager.cs:28 公告(本次补入) | 公告Title、Body、Timestamp及原列表首项顺序 | 共用调用仍直连PF;NoticePopupPanel.cs:31实际发布TitleNewsEvent。保留原缓存、红点、时间比较及UI读取时序,不顺带修复异步展示 |
这四处共用调用没有KV分流;在对应业务执行时会调用PF,当前场景闸并非替换实现。匹配使用PlayFabMultiplayerAPI,虽然不计入上述13处,仍保留在同一迁移批次。
实现前需在同一份接线方案中给出上述未完成项的准确KV读取范围、键/操作和结果映射。现有PlayerKVClient的Get只有keys,使用固定本人认证会话,不能把它当作任意玩家或全局榜单读取接口;也不据此推断线上没有相应能力。不得猜测新接口或用本人数据冒充他人数据。沿用已批准纯平移方向,不再询问用户是否迁移这些功能。
本检查点仅补齐调用和数据清单,未修改生产/测试代码,未执行线上请求或新增送审;并未宣称上述替换已完成。
已审个人存档和同合同调用替换无需再审。上述剩余SDK能力尚未形成完整等价接线,编码前需要一次集中核查/裁决;审核对象是具体旧调用到KV管理器的映射与最小实施差异,不是重新审核产品需求,也不是一功能一轮。
给原审核AI的一次性核查输入:
1. 以“原PlayFab能力由KV承接,保持原业务”为既定前提,核对上表及既有KV管理器合同。若相关能力已在既有资料中明确,给出准确文档位置和客户端调用映射,避免再次列为未知。
2. 区分只是客户端漏接、复用现有游戏服调用即可、确有可证实能力缺口三类;不能因当前KVMgr没有包装方法就默认要服务端新开发。
3. 对实际缺口一次列出旧操作、输入/结果语义、缺少的最小能力及证据。不给用户重新出存储方向、ID或邮件逻辑选择题,不要求客户端查看服务器源码。
4. 如需变更原已审合同,集中给最小完整方案、精确文件与验证边界;禁止顺带业务修正、重构、等待云端才展示等奖励时序变化。
5. 不重复评审C2d已验证的同合同平移。报告明确哪些工作客户端可立即继续、哪些具体能力仍需外部事实,不能笼统回答整个工作转服务端。
本文件是本次澄清与核查材料,尚未收到新审核结论,也未向外部发送消息。真实首场景存在残余PF调用的静态事实仍成立,不能因需求重申就标成验证通过或提前撤两闸。
## 本轮操作边界
只更新AGENTS规则、当前入口状态和日志,不改生产源码、原测试、服务器或配置,不重写C2d/C3a历史hash。AGENTS的本次用户授权增量单独记录;不再声称冻结基线内AGENTS仍相同。正式地址、仅CLI Loop、暂不打包继续遵守。