feat(upserver): 保存M2客户端KV迁移至本人统计写检查点

保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
This commit is contained in:
Liubing\LB
2026-09-30 19:19:05 +08:00
parent 1c0cdf7a99
commit 6813da149a
511 changed files with 151858 additions and 2376 deletions

View File

@@ -0,0 +1,23 @@
# M2修订1独立审查:主会话裁决与新增阻断
日期:2026-09-29。受审报告:`M2-先移植后优化独立方案审查-修订1.md`,SHA256 `5D293D41D26A23859AFEC85674B57F21BBF90D6FE8FEE445E954A1AF21BFE8A0`。主会话独立复算15项受审文件长度与SHA256,**15/15一致**;受审方案hash `64CB30F2C0613BB59E12F5C00BF0A64230FEE5047715488FA02E87C1CE92C219`。报告及原受审材料保持原样。本裁决不批准生产代码。
## 逐项裁决
| 报告项 | 主会话裁决 |
|---|---|
| 总体路线通过 | 接受“先移植、后优化”,Guard是9月28日迁移新增而非原PF语义;B02四入口等价关闭仍有效。总体路线通过不等于首批编码批准。 |
| CP1–CP2有条件通过 | 接受“有条件”的限定;**条件尚未满足,暂不编码**。需补五项具体合同/白名单,且下述正式启动阻断未被报告覆盖;因此不采纳“约30–50行即可接正式玩法”的工作量推断。 |
| P2-1五项 | 全部接受为编码前置:正式入口签名、Guard释放点、原handle出口、Player构建31模块绑定、非Editor正式工厂与配置来源。每项须有文件/调用顺序/失败路径/验收。 |
| P3-1 Guard引用映射 | 接受,作为迁移期不改Guard的范围核对及CP5后续评估输入;不因表格本身扩大CP1代码白名单。 |
| P3-2 PF缓冲/触发差异 | 接受,每个业务域记录旧PF与KV的真实触发差异,CP4停用组件前逐项销账。 |
| P3-3 Player编译旧错误 | 限定接受“历史错误需单列来源”的事实;**不接受把有编译错误的Player构建记为通过**。CP1离线/Editor可明确未验Player;正式入口交付前仍须解决或隔离该错误并获得0错误构建证据,不能用白名单冒充可运行。 |
## 源码新增阻断:审查报告未覆盖的正式启动链
1. `SubBoostrap.cs:91`无条件`AddComponent<PlayFabMgr>()`,其`Awake`在无Guard时立即建立PF缓冲和40秒循环。`UserService.KVLoad.cs:27–32`的受控协调器配置却要求未唤醒的PlayFabMgr、`HasLiveInstanceForKVLoad==false`、`CustomServerMgr.IsFreshForKVLoad`。普通游戏启动后这些条件不成立;只在`LoadAsync`末尾释放Guard不能使正式路径可达。需要先明确按backend分流的组件创建/未启动证明,不许静默停用PF默认路径。
2. `UserService.KVLoad.cs:17–25`把精确`SaveBackend=kv`拒为`BackendNotEnabled`;`UserService.cs:189–203`普通`LoginCore`先走PF登录,`IsLogin`与`IsAuthorized`也按PF状态计算。`AggUserService.cs:68–75`在渠道SDK登录前同样先拒KV。正式入口必须设计认证、正常Done/授权状态与PF回退边界;不是协调器加模式参数即可完成。
3. `CustomServerMgr.cs:49–73,126–129`当前KV网络借用只允许验证,普通API请求在`kvOnly`抛错;`PlayerKVLoginContext.cs:398–399`更只准两条`__kv_validation`路由。正式KV游戏需要可用且会话隔离的业务API路由。不能把验证租约改名当正式传输,也不能恢复旧Cookie容器的无排水替换缺陷。
4. `PlayerKVGameplayBindings.cs:1`整文件仅在`UNITY_EDITOR && !SERVICE_HOST`编译;`LoginStage`与正常服务注册仍按旧路径。移除编译门不等于正式对象全部注册且静止,须明确容器时序和缺失时拒绝。
上述是**能否到达正式KV加载的前置条件**,并非CP5架构优化。原ZCode报告判断“模式参数加30–50行可实现”未分析这些路径,不能作为编码授权。先修订完整方案,把P2五项与四类启动前置一起列入精确白名单/验收矩阵,再送原ZCode复审;不重复开发B01/B02,不在未批准范围试写。用户要求完成后的代码干净清晰:不得以测试专用旁路、同名PF转发壳或永远闲置的新组件掩盖这些缺口。