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

3.5 KiB
Raw Blame History

M2 CP2B-T 正式 KV 普通业务请求运输交付与待终审

日期:2026-09-29。状态:实现及本地合成验收完成,待一次独立实施复核和主会话终裁;不代表 CP2B 首场景或整体 M2 完成。 编码前的完整方案已按 7/7 hash 独立补审,并由主会话逐项裁决批准精确白名单。

实际交付

  • PlayerKVLoginContext.cs:原租约继承 capability 创建时固定的 formal/validation 模式。验证模式仍只接受两条精确验证路由;正式模式只接受规范相对 GET/POST,拒验证、再次认证和专用 playerdata 路由。正式租约沿用原账号 Cookie 和关闭排水,并把业务超时设为旧 CustomServerMgr 的 15 秒。
  • CustomServerMgr.cs:BindKVForGame 仍在 Apply 前绑定但不发布业务;只在同 epoch 的 GameLoaded/CP3A 原句柄与三原实例交接后一次 EnableKVBusiness。普通 GET/POST 及现有包装方法走同一租约,不再受 KV 全局拒绝门阻挡。Cookie 仅在当前正式就绪租约返回同一 CookieContainer;401/403、退出/清理先禁用、递增版本并作废旧响应,禁止同一租约再次发布。后台普通请求先调度到创建管理器的同步上下文,避免在 HTTP 响应线程直接撤销 Unity 服务。PF 发送分支保持原逻辑。
  • UserService.KVLoad.cs:正式原句柄和 Setting/Club/Notification 交接后发布运输就绪;正式 KV 专用 401 事件走 LogoutFormalKV,退出和异常先禁用运输再撤销 Coordinator。不改公开 IsLogin、ApiPlayerId 或跳场景闸。
  • 合成测试覆盖正式/验证隔离、同 Cookie、15 秒超时、方法/路径/JSON、未就绪零发送、普通 GET/POST、404、401、后台主线程交接、在途旧响应、同账号新 epoch、重复发布拒绝、Close 失败关闭屏障及旧 PF 回归。产品代码未保留仅供测试读取超时的属性。

本地验证

检查 结果
KVGameLoadTests 90组、2012断言、0失败
ServiceHost 非Android 10组、119断言、正式请求0
ServiceHost Android+AGG 10组、119断言、正式请求0
Unity CLI Loop Editor 编译 Success=true、0错误、272警告;见结构化核验
范围与空白 本批白名单内 git diff --check 无空白错误;保留原工作树

验证全部使用本地合成 handler,没有调用正式 101/102、业务路由或本机服务器代码。沙箱直接写既有 obj 被拒,测试在获准的本地命令环境完成;没有改服务器或打包。

仍待的独立边界

批末独立实施复核须重点核:正式就绪时点及只发布一次、401/403 的会话版本和 UserService 撤销时序、后台回原线程、Cookie/RTService 既有消费者、Close 幂等及新 epoch、验证租约与 PF 旧分支不回归;核交付清单字节数/hash,指出白名单漂移与闲置实现。若报告发现实质问题,先按最小增量裁决再修改代码。

本批不证明线上 Mail/Friend/Club/AntiCheat 等路由或响应合同、IsLogin/ApiPlayerId 正式发布、SignalR 真连接、真实 Player 脚本编译、FishingStage 全链或最终通关。当前 LoginStage KV 阶段闸继续阻断,固定正式地址 http://s101.local:18080/;Unity 自动化仅 CLI Loop,不用 UnitySkills,暂不打包。PlayerKV* 命名和剩余开发期临时路径按最终清单在整体移植后处理。