保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
14 lines
3.5 KiB
Markdown
14 lines
3.5 KiB
Markdown
# M2 CP2B 首场景依赖增量核查(只读)
|
||
|
||
日期:2026-09-29。本文件补充[原首场景显式链核查](M2-CP2首场景自动依赖核查-2026-09-29.md),不替代完整调用图、服务端契约或编码前方案。只读当前源码;未运行 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`,不修改生产代码。
|