Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-CP2B-T完整审查主会话裁决与实施白名单-2026-09-29.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

31 lines
4.9 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 CP2B-T 完整审查主会话裁决与实施白名单
日期:2026-09-29。本裁决在任何 CP2B-T 生产代码修改之前形成,覆盖[原五项及第 6—8 项补审](M2-CP2B-T独立方案审查.md),取代[首轮待补审裁决](M2-CP2B-T首轮独立报告主会话裁决与补审边界-2026-09-29.md)。
## 受审完整性
[七项基线](M2-CP2B-T受审基线.json)重新核字节数和 SHA256,7/7 一致;清单 SHA256 `3DF008B9474D730C82CACA65FAE0306CC18B13DF6454C0ED0694A7273A368842`。补审报告 SHA256 `922F5A438AE92D5869868F88FCB5274D584782DC0C50FC047C2840A489923251`,其第 6—8 项已真正落盘。报告开头“无 P1/P2”是首轮旧文字;以文末**新增一项 P2**的更新总裁决为准。
## 逐项裁决
| 项 | 主会话裁决 |
|---|---|
| 1 同一租约、Apply 后发布 | 接受。正式业务只借同一 Context 的账号租约与 Cookie;验证租约保持两精确路由;`BindKVForGame` 时业务仍未就绪,GameLoaded 加 CP3A 三原实例交接且原 handle 当前后才发布。 |
| 2 路由及专用传输 | 接受规范相对路径和 `__kv_validation/*`、`account/Login`、`playerdata/*` 隔离。客户端路由仅证明拼接形式,不证明线上存在或响应语义。 |
| 3 401、退出、旧响应 | 接受先同步禁用普通发送、版本失效和身份/handle 撤销,再异步排水关闭;`UserService.cs` 旧 PF 未授权事件在正式 KV 被忽略,专用 `KVUnauthorized` 必须接入 `UserService.KVLoad.cs`,不得通过旧 PF 自动重登。 |
| 4 独立验收 | 接受只用合成 handler 和 Unity CLI Loop Editor 编译验运输层;真实 Player、线上业务路由、公开身份、SignalR 真连接另验。 |
| 5 白名单与清账 | 接受三个生产文件和必要合成测试文件;新增入口必须有直接消费者。P3 Cookie 日志不采纳(避免运行期噪声),HashSet 仅实现选项,验证租约拒普通路由独立断言采纳。 |
| 6 模式、路径、超时 | 正式/验证模式须在 capability 创建时固定,租约不能在运行中切换。**正式租约 15 秒超时为实施条件**,超时返回空/受控错误,不撤销身份。补审 P2 路径核查已在编码前完成,见下节。 |
| 7 发布后调用者 | 本批只能称“普通请求运输可用”。`UserService.IsLogin` 在正式 KV 仍为 false,`ApiPlayerId` 仍为空;`PFLoginAct` 正式 KV 路径在登录页返回、不订阅 RT 登录事件,`LoginStage` 阻止 FishingStage。保持这些闸;不得宣称首场景业务可用。 |
| 8 Cookie、RT、Close、线程 | 现有 `RTService.Connect` 读取 Cookie/SessionVersion,SessionChanged 同步增连接版本并取消连接;正式 KV 不自动调用 WaitForAPISvrLogin。重复 Close 使用同一租约幂等任务,关闭失败也不得重新开放。401 分支须先使管理器失效并屏蔽旧结果;身份/Coordinator 撤销遵守原 Unity 主线程调用合同,若响应续接不在主线程,须调度撤销而不能直接操作 Unity 服务。此项纳入合成竞态及 Unity 编译核查。 |
## P2 路径核查结果
对 `Client/Assets/Scripts` 中 `GetStringAsync`、`CustomServerPost`、`Account/Event/Club/Bomb/Duel/CommonData/Friend/EventPartnerRequest` 的引用作静态扫描,共 108 个文本命中(含接口/实现/其他 HttpClient)。实际 `ICustomServerMgr` 调用的字面路径均不含 `?` 或 `%`。间接来源逐一核:`MailUrls` 是 `mail/fetch`、`mail/send`、`mail/updateState` 常量;EventPartner 与 UI/PartnerStatue 是固定 `detail/invite/refuse/accept/build/automatch/*`;`AggIAPService.IAPPost` 调用参数是固定 `csconfirm/receive/unreceive/receiveorders`;AntiCheat 的调用者传固定 `anti-cheat/CheckBan` 等路径。未发现现有合法调用依赖查询串;报告中“`mail/fetch` 可能含查询参数”是未证实假设。当前受审方案拒 `?` 可实施,若后续引入新动态查询路由须另审,不能静默放宽。
## 最终实施许可与边界
**批准 CP2B-T 运输子批编码。** 生产仅可修改 `Client/Assets/Scripts/Services/PlayerData/PlayerKVLoginContext.cs`、`Client/Assets/Scripts/Core/CustomServerMgr.cs`、`Client/Assets/Scripts/Services/UserService.KVLoad.cs`;测试仅限 `CodexOutput/upserver/KVGameLoadTests` 的必要合成用例和固定 Unity CLI Loop Editor 验证入口。先补测试/合成断言,再实施同租约转发、正式模式 15 秒超时、启用时序、Cookie/版本/401 与同步失效。批内连续实施和检查点日志,批末封存 hash 与一次独立实施复核;发现必须扩白名单时先针对性补审。
不改本机服务器、`LoginStage`、`FishingStage`、`PFLoginAct`、`UserService.cs`、公开身份、旧 PF 业务语义;不发正式 101/102 请求,不用 UnitySkills、不打包。正式地址固定 `http://s101.local:18080/`。保留现有工作树改动,最终清理闲置实现与开发期门控按总清账清单执行。