# C3c 正式互加好友结果与字段差异 2026-09-30 15:36。用户已明确批准101/102互加好友,必要时可扩展103–110。本次101/102足够,未登录或创建103–110,也未更改客户端正式准入名单。 ## 实际结果 双方原好友列表均为空。101调用原`friend/AddFriend`邀请102,HTTP200/code=1;关系尚未直接完成,102按原字段`Status=1, PlayFabId=102, FriendPlayFabId=101`调用`friend/AcceptFriend`,HTTP200/code=1。最后双方各有1个好友,101取得102、102取得101,`mutual=true`。关系保留供后续联调,未删除好友。 ## 当前线上非空响应 `friend/GetFriendsList`外层`code/msg/friends`;friends的每项仍为序列化JSON字符串。对101、102的两份非空项,实际都只有以下字段: | 字段 | 101列表中102的项 | 102列表中101的项 | |---|---|---| | PlayFabId | 字符串102 | 字符串101 | | DisplayName | String(正文不落盘) | String(正文不落盘) | | AvatarUrl | String(正文不落盘) | String(正文不落盘) | | Level | 数字1 | 数字1 | | LastLogin/LastLoginTime/LastLoginTimeUtc | 未返回 | 未返回 | | LevelB/建筑等级/Statistics | 未返回 | 未返回 | 这已证明现有接口可以一次返回好友的基本资料,而不是“完全不支持”。但本次返回的数据尚不能直接满足原客户端LevelB及LastLogin消费。字段存在不等于昵称/头像为有效真实资料,不从脱敏类型记录推断其内容。 ## 与本人KV对照及限制 账号101等级62、102等级60,均来自现行现代存档`NewPlayerDataDic.newData`第0槽(19槽格式),并非独立`Lv`键。原AddFriend请求MySelf.Level按该实际值提交(本次实际邀请者101提交62),昵称/头像缺键沿现有KVUserService默认规则;未写回KV。 两账号本次指定键读取中,DisplayName、AvatarUrl、InfiniteBuildingData、LastLoginTimeUtc均缺失。好友返回Level=1与KV等级62/60不一致,**不能将其当作已验证的KV等级投影**。 原客户端已有`KVUserService.UpdateProfile/UpdateProfileLv`通过account/UpdateProfile同步资料,`CampPanel.cs:1362`会调用UpdateProfileLv。本次只执行授权的好友流程,没有进入场景或发送UpdateProfile;故等级不一致也可能与资料同步尚未执行有关,不据此断言服务端仍访问PlayFab或没有KV能力。 同理,本次未执行FishingStage的LastLoginTimeUtc保存路径;源KV缺时间,非空好友响应也没有时间。**尚不能证明将来KV有时间后该接口会自动返回,也不能仅凭本次缺字段断言永远不支持。** 下一步在同一C3c差异裁决中明确时间投影与缺键行为,不能擅自为测试写入当前时间并冒充历史值。 ## 执行边界与证据 - 首次预检仅读独立Lv,不能取得101等级,提前终止,0好友写请求。核现行DecodeCore后补读取现代格式;初次失败保留,不归因于服务器坏档。 - 首次2次正式请求;最终12次正式请求,其中2次为已批准好友写操作(AddFriend/AcceptFriend),其余登录与读取。本轮合计14次;此前只读探测4次属于前一检查点。 - 没有KV Set/Delete、UpdateProfile、删除好友、领奖、付费、Play或打包。认证仍可能有原有服务端副作用。未读取/修改服务器源码,未改客户端生产代码。 - 证据:`M2-C3c正式互加好友实测-2026-09-30.json`(首次预检)、`M2-C3c正式互加好友实测-final-2026-09-30.json`(成功);复跑驱动`M2-C3c正式好友样例验证.ps1`(会检查已有关系,禁止无理由自动重复执行)。 - 此为HTTP原协议测试,不是Unity真实FriendService运行或首场景通关。原C3c待审包保持原hash,本文件作为事实增量交同一次审查。 ## 后续集中裁决输入 1. 不再索要好友路由或非空基本结构:本次均已取得。 2. 好友资料源要对齐真实KV数据:现有UpdateProfile是否按原流程足以提供准确等级;建筑等级/LevelB如何保留,不能将Level=1直接填旧value。 3. 采用已有LastLoginTimeUtc作为单一存储来源的候选方向;需确定好友接口读取/投影和旧档缺键处理,保留伙伴邀请的原业务顺序。 4. 103–110授权已记录,但更多空账号不能自动补齐上述语义,不为扩大测试数量额外创建。