保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
5.2 KiB
C3c 第五轮状态核验与缓存联动边界
2026-09-30。用户要求确认“四项之外的内容已经更新”的状态。本轮只核验审核/源码/交付记录,不实施生产代码。
1. 已收到第五轮审核更新
独立报告《M2-C3c剩余SDK接线独立差异审查-2026-09-30.md》已追加“第五轮:四项服务端事实挂起后的可编码范围裁决”,章内标注16:58;实际文件更新时间与章节标注不同,以内容和hash识别,不能仅按文件日期判断先后。
本轮报告SHA256:E0A9A124F98F36EED1CA902A14F6D890E5528A52D58B12C86183D2A26369560F。原统一基线28/28、原C3c基线31/31、四项服务端交付清单13/13重新计算全部一致。报告新增第五轮不等于生产代码已变更。
2. 第五轮逐项核验
唯一获审生产文件为Client/Assets/Scripts/Services/KVUserService.cs;测试限定原ServiceHost中M2MergedGameplayTests接入及新增C3ProfileCacheTests,真实KV/PF服务对照。
| 项目 | 第五轮意见 | 主会话核验 |
|---|---|---|
| GetPlayerLv | 恢复原缓存合同:命中原值、未命中1,SetPlayerLv不改 | 目标接受;与下一项存在直接依赖,不能只改默认值就开工 |
| GetPlayLv | 维持现状不动,未加载继续InvalidOperationException,不提前接远端等级 | 行为目标接受,但“方法完全不改”与GetPlayerLv目标在当前代码上不能同时成立,见§3 |
| GetPlayInfo | 空ID返回null;同一缓存引用;缺项建原默认名占位;本人同步更新并发一次事件;他人走已存在SearchFriend异步更新 | 接受该范围性审核结论。按code>0且info!=null消费昵称/头像;不把level字段纳入远端等级迁移,不重设计资料系统 |
| SetPlayInfo(string,string,string) | 原替换缓存对象、不发布事件 | 接受,不改成更新旧引用或额外事件 |
| ClearPlayInfos | 原清空 | 接受;不增加新缓存层 |
| 测试 | 红测留痕、引用/事件/默认值/失败/SDK计数及PF对照,双条件宿主和CLI Loop | 接受;本轮测试文件尚不存在,未运行新测试,不把计划当通过 |
SearchFriend原昵称/头像的这段已获范围性审核,不再一概列为等待新服务端公开资料合同。好友LevelB/时间、真实远端等级等仍属挂起范围。第五轮文中FriendService.GetFriendData实际应对应现有GetFriendList,按禁止修改好友列表方法解释,不另造方法。
3. 一个必须澄清的实现联动
实际源码KVUserService.cs:280–286:GetPlayerLv未知玩家返回-1,GetPlayLv直接调用GetPlayerLv,再以level>=0决定成功或InvalidOperationException。
| 场景:未加载的他人ID | 当前行为 | 仅按第五轮字面修改GetPlayerLv后 |
|---|---|---|
| GetPlayerLv | -1 | 1,符合原PF缓存显示默认值 |
| GetPlayLv | 失败Task,InvalidOperationException | 成功Task,返回等级1;违反“维持未加载失败”及“默认1不能污染异步查询”的同一报告要求 |
这是源码可直接推出的冲突,不涉及服务端接口、不需要线上测试,也不是新增业务问题。本人直读路径同样需防止因共用getter改变而被顺带移除;不能仅测试他人成功就认定行为不变。
建议在同一第五轮边界中澄清:“GetPlayLv不动”指保持当前外部行为、不接新远端;允许在同一个KVUserService.cs内最小解耦其取值方式,使其继续按修改前本人直读/缓存/未知-1及level>=0判断,不再消费显示用默认1。不得新增接口、管理器、等待、重试或归一化;当前负数处理与异常也不顺手修改。另一可行收窄是暂缓GetPlayerLv改动,但会留下已识别的默认值迁移差异。
本轮不自行把建议升级为已审许可。不因此撤销GetPlayInfo等已明确结论,也不要求重审四项服务端设计。只需在原裁决中消除该相互冲突的两条约束,保留完整评审后编码要求。
4. 当前实施状态与剩余范围
- 已更新的是审核范围,不是代码已完成。 KVUserService仍为原待迁实现;C3ProfileCacheTests.cs不存在;受审源文件hash未变。
- 四项挂起:等级榜(含本人统计写)、好友列表LevelB/LastLogin与真实远端等级、公告、匹配;PlayerKVClient不改。四项接口提案已交付,不是已部署能力。
- 四项之外此前主干:独立KV登录/用户服务、个人存档、普通请求新UserID、问卷/邀请/邮件/商店/签到/活动等已有接线和离线验证记录;不等同所有线上业务已验收。
- 首场景双闸、开发冻结恢复、真实保存→退出→新进程恢复、Player/渠道验证及C4最终复核仍未关闭,不能说“四项之外全部完成”。
- 下一步在开发侧处理获审资料缓存/昵称头像范围;本次任务止于状态确认,未开始编码。缓存getter联动边界记录于本文件,不能按冲突文字机械实施。
5. 本检查点操作
只读审核及源码、核hash、更新状态/入口/TODO/日志和本核验记录。生产/测试/服务器代码未修改,正式网络请求0,未运行新编译/测试、未Play/打包。现有工作树保留;不向审核或服务器会话发送消息。