Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-CP2首场景自动依赖核查-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

2.8 KiB
Raw Blame History

M2 CP2 首场景自动依赖核查(只读,非完整白名单)

日期:2026-09-29。仅按当前源码的显式调用链核查,未运行 Unity Play/真实账号;所有行号以 M2-CP2-D1源码事实基线.json 的版本为准。尚未覆盖反射注册、事件连锁、Prefab/UnityEvent 和配置启用条件;不能据此宣布首场景可运行。

顺序/触发 显式链 当前依赖 CP2 方案必须确定
登录成功后 PFLoginAct.LoginAsync:120 → InGameMailService.Init:153,162 → BaseMailHandler.FetchMail:312 POST mail/fetch,使用 CustomServerMgr 正式租约的单路由放行;授权后才发,旧 epoch 回复丢弃
阶段跳转 LoginStage.RequestNextAct → FishingStage.StartAsync:186–192 → SurveyService 构造 :35,40 两次 PlayFabMgr.Instance.GetLocalData 在无旧组件的 KV 模式必需迁移/停用;不能以空 PF 组件兜底
首场景加载后 FishingStage.StartAsync:223 → LeadboardData.SetLvData:189 → SetLeadboardData PlayFab 排行榜异步调用 同批迁移或在明确合同下禁止本次调用;不能让其无监控失败
首场景加载后 FishingStage.StartAsync:236 → SurveyService.GetSurveyMatchlist:55 UserId 按 16 进制转换;该 ID 当前是 PF 身份 定义后端无关的抽样标识/保留语义;不能把 S101 十进制 ID 当十六进制 PF ID
首场景加载后 FishingStage.StartAsync:243 → AntiCheatManager.CheckBan:249 → OnBan:260 POST anti-cheat/CheckBan,请求内含 UserId 定义新身份字段与 Method/路由许可及失败行为
初始化事件 FishingStage.InitEvent:254 → FriendService.GetInvitedListCount:322 POST friend/GetInvitedListCount,async void 路由许可、失败/登出响应丢弃及异常观察
Home 系统切换且已开 Club HomePanel.SystemSwitch:1080 → ClubService.GetSelfClub:215,224 POST club/GetSelfClub 条件触发的单路由许可及 SessionVersion 检查;不通配开放 Club
非 AGG 补单前置 FishingStage.StartAsync:204 → PlayerShopData.GetReplenishmentData:520 → DevIAPService.GetOrderUnreceived 当前 Dev 实现只返回空字典 只能说明该非 AGG 调用本身无网络;不代表 AGG 的购买/补单可用

FishingStage.InitData 还启动多个模块,InitManager 通过 Assembly.GetExecutingAssembly().GetTypes() 动态初始化活动管理器。静态表没有穷尽其后续存档和 API 调用。若 CP2 第一验收仅包含正式登录与句柄交接,阶段切换必须显式阻断并验证;若包含首场景,则以上依赖及动态触发都需纳入同一完整方案、源码白名单和回归矩阵,经原 ZCode 独立审查及主会话裁决后才能编码。