保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
3.5 KiB
3.5 KiB
M2 CP2B 首场景依赖增量核查(只读)
日期:2026-09-29。本文件补充原首场景显式链核查,不替代完整调用图、服务端契约或编码前方案。只读当前源码;未运行 Unity、正式账号、API 或打包。CP2A/CP3A 阶段门继续关闭。
| 首场景入口 | 增量源码事实 | 发布前必须解决 |
|---|---|---|
FishingStage.InitData() |
依次 CampDataMM.Init、PlayerData.Init、FishingEventData.Init、GuideDataCenter.Init、AchievementDataManager.Init 等,末尾发布 ConditionType.LoginDays(FishingStage.cs:284–302) |
每个 Init 的即时读写和事件接收者需按实际配置与注册状态核,不可只核 SurveyService 构造 |
| 登录天数事件 | BattlePassData 构造订阅 ConditionTypeEvent(BattlePassData.cs:256);激活时 UpdateTaskData 会改变每日/每周任务并调用 Data.SaveBattleTask()(约 :734–814);保存仍走 PlayFabMgr.Instance.UpdateUserDataValue("BattlePassRecordTask",...)(:117)。AchievementDataManager 与 FishingEventData 也订阅同一事件,前者改本地成就计数,后者调用 SetEvent |
战令激活条件、事件顺序、保存失败和登录重复计数需审;不得因场景初始事件仅看似本地计数就认为旧 PF 写为零。未确认配置会命中时标为条件性即时旧 PF 写,不可误报无条件发生 |
FishingStage.InitManager() |
Assembly.GetExecutingAssembly().GetTypes() 逐类型交给 Order、SideGame、ActivitySentry、ActivitySubscriber 注册,然后 ActivityManager.Init() 建立活动 sentry、订阅全局事件并 CheckAllActivities()(FishingStage.cs:587–597、ActivityManager.cs:303–311) |
静态显式链无法证明活动实例化后的所有存档/API 副作用;需用受控配置和固定场景用例记录实际创建类及调用,按活动业务合同迁移或明确阻断场景。不得简单屏蔽活动初始化后宣称原玩法等价 |
AiHelpManager.Instance.Login() |
场景末尾调用(FishingStage.cs:237),AIHelp Login() 向外部 SDK 传 CustomId,自定义字段仍写 pfid = userService.UserId、CreateTime、LoginTime(Others/AiHelpManager.cs:23–48) |
统一身份语义与外部 SDK 字段政策;不能把 S101 十进制 ID 无审查地填入历史 pfid 字段,也不能默认为空值安全 |
AutoRestart.Init() |
场景末尾订阅 ActLoaded/Unloaded;后续读取 IsLogin、LoginTime 判三天重启(Others/AutoRestart.cs) |
正式 KV 的公开登录状态、时钟与退出策略必须在开放场景前确定;这不是本次立即网络请求,但会影响后续场景生命周期 |
现有显式链仍包括登录后 Mail、问卷两读两写、排行榜直接 PlayFab SDK、Friend/AntiCheat、条件 Club 查询及 PlayerShopData 补单。AssetsServer 仅见配置与脚本,工作区 docs 未找到这些路由的 OpenAPI/响应合同;既有正式地址 Swagger 候选返回 404 的历史记录不能补足接口语义。**用户明确本机服务器源码可能与线上不同,禁止改动,也不将其作为正式接口契约证据;后续不再据此推断线上行为。**故 CP2B 完整方案至少需同时给出:经确认的线上 (Method, canonical route) 与响应/身份契约、初始事件和活动配置的实际命中证据、旧 PF 调用去向、失败/旧 epoch/退出处理、文件白名单及可复现验收。未完成时继续阻止 FishingStage,不修改生产代码。