# C3c 隔离边界修订与复审确认 2026-09-30。按用户“更新一下审核,重新确认”,结合原ZCode第三轮意见与实际跨账号探测,形成本次统一补充。原独立报告不由开发侧改写,本文件供审核端确认修订后的完整方案边界。 ## 一、已确认的本人KV合同 `Client/Assets/Scripts/Services/PlayerData/PlayerKVClient.cs:36`的GetAsync只有keys/token,请求POST playerdata/Get,身份来自当前认证会话。正常请求示例: ```json {"keys":["LastLoginTimeUtc","LevelB"]} ``` 示例只说明请求形状,不承诺这两个键目前已有值。**不要传playerId、playFabId或userId选择其他账号。** 原客户端未传这些字段,不存在需要删除的生产参数;此前添加参数仅在用户明确要求的只读探测中使用,没有写入生产代码。保留keys,不能把“去掉玩家ID参数”理解成删除所需键名或认证会话。 实测101请求102、102请求101,各用JSON三种目标ID参数及query playerId,8/8 HTTP200且只返回本人数据;本人前后摘要稳定。正常无目标参数的本人读取也已成功。因此无需再次测试删除参数能否读取本人,也无需为此新增迁移代码。 第三轮审查将Get/Set/Delete均限定本人账号,本次接受该合同边界;**网络实测只覆盖Get**,没有跨账号写入或删除测试,不能把它们写成已实测。结论不外推服务器没有其他公开资料接口。 ## 二、对第三轮意见的逐项确认 | 第三轮意见 | 开发侧确认及实施限制 | |---|---| | 禁止客户端按目标ID逐个读他人KV | 接受;不扩展PlayerKVClient,不切换/冒用好友登录会话,不增加客户端跨玩家KV接口 | | 好友、他人资料由服务端内部读取KV后返回 | 接受职责方向;客户端消费已有好友/资料路由,仅做调用与DTO映射。服务端内部实现由对应开发侧处理,本客户端Agent不改服务器代码 | | LevelB写本人KV,供服务端聚合/资料读取 | 接受作为原统计能力的迁移方向;原计算、触发点、两统计名、调用者时序及错误语义保持。此项修订原R2中完全禁止本人KV统计写的旧方向,不恢复已撤回的临时副本+通用Flush方案;具体写入合同仍须审清 | | 排行榜前50由服务端聚合 | 接受;不枚举玩家、不客户端拼榜、不把活动榜当等级榜。具体读取路由、统计名与结果映射仍待事实 | | 公告/匹配走全局内容及协调接口 | 接受方向;保持原消费者和匹配时序,不猜私有键、不以结束匹配冒充迁移 | | 整体审核通过后编码 | 继续执行;方向确认不等于完整接口、字段和文件边界都已获批 | 第三轮表中“客户端不新增跨玩家读取逻辑”应理解为不新增直接跨账号KV读取;已有好友搜索等业务请求仍然按原协议传目标UserID,不能误删friend/SearchFriend的PlayFabId参数或其他业务目标字段。 ## 三、好友/公开资料的逐字段映射边界 这些是原消费者要求,不是声称服务器已新增的响应字段。返回可以采用兼容DTO,必须有实际协议或服务端确认后确定准确字段名。 | 原PF消费值 | KV业务返回必须提供的同义数据 | 当前证据 | |---|---|---| | FriendPlayFabId / PlayerProfile.PlayerId等玩家身份 | 目标新UserID;旧playFabId字段名可保留 | 好友列表与SearchFriend对101/102目标ID已实测正确 | | DisplayName / AvatarUrl | 原昵称/头像资料,保留原默认昵称和事件流程 | 字段存在;SearchFriend样例内容为空,不据此宣称真实KV资料已投影 | | Statistics中Name=LevelB的Value | 原触发点更新的同一复合统计分数 | 当前好友/SearchFriend未返回;普通level=1不能替代 | | Profile.LastLogin | 对应好友的原语义时间,沿已定KV阶段方向核返回 | 现有样例未返回,源账号LastLoginTimeUtc也缺;不得伪造或改过滤 | | GetPlayLv读取的Lv | 目标玩家普通等级,与复合LevelB区分 | SearchFriend返回1,本人KV分别62/60;数据来源/同步关系待核,不直接采用错误值 | 原Profile/Statistics为空时跳过整条、LastLogin为空时保留原异常表现、列表排序/名次/事件/AGG顺序均不改。既有每日初始化先消费旧LastLoginTimeUtc再保存当前值的时序保持;第三轮提议服务端读取该键,不自动证明它与PF最近登录时间全部等价。缺键、值存在时的投影与更新时点须明确,不能为了补字段改变每日刷新逻辑。 ## 四、本次复审只需收敛的事项 1. **本人统计写**:本人KV作为原统计持久化来源的实际键/序列化、全球与地区写入顺序及一次原调用的完成/失败映射;不得未经评审引入刷新无关存档、额外等待或重试。 2. **好友与公开资料**:GetFriendsList/SearchFriend等既有业务路由的LevelB、LastLogin、普通等级字段、缺键和失败返回;源数据与服务端响应是否同义。已有路由和目标ID成功事实无需重审。 3. **等级榜**:全球/地区统计的读取入口、前50、StatValue/Position/UserID及资料映射;保持原已知语义,不凭空添加同分规则。 4. **公告和匹配**:准确的现有替代入口及原结果映射。继续属于本次迁移目标,不默认停用或延期。 以上集中在同一C3c完整审查,不再要求用户重新决定是否使用KV、新ID或好友时间阶段方向。涉及服务端字段事实的部分需准确证据,不能由审核意见或客户端代码猜出来。 ## 五、交付与下一步 请审核端在原报告中明确:本文件一至三节是否准确;第四节各项最终合同与允许文件/方法;是否已达到**整体可编码**,未达到则只列具体事实缺口。当前只记录方向和实测,未冒充整批PASS。 证据:跨账号Get脱敏JSON及结论、SearchFriend脱敏JSON及结论、当前PlayerKVClient源码、原ZCode第三轮意见,统一登记在本次复审增量hash。早先“SearchFriend仅离线”“好友时间待DB/KV重选”“客户端加目标ID读取KV”的旧叙述均不再作为当前执行依据。 本轮没有新网络请求、生产/测试代码变更、服务器修改、Play或打包。完整审核门槛保持。