保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
2.8 KiB
2.8 KiB
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 独立审查及主会话裁决后才能编码。