Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-新主会话接手卡-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

95 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# M2新主会话接手卡(2026-09-29)
> **2026-09-30 C2d 当前状态**:已按用户“审核完毕,继续”完成本轮纯平移核减及两个旧验证宿主的必要注入;当前以《M2-纯平移主会话裁决与C2d实施记录-2026-09-30.md》和《M2-合批-C2d检查点与交付hash.json》为准。下方“尚未恢复”“等待本轮差异报告”等是历史状态,不再阻断本批。HomePanel与原基线一致;全迁移只做必要存储/身份接线,额外业务修正和重构等整体移植后另行授权。debugconfig的EventApiURL已按用户要求恢复为`http://s101.local:18080/`,其他字段未变。M2尚未全链通关,真实首场景、外部能力及最终冻结清理继续列为未完成。
> **2026-09-30 最新用户裁决:整个迁移流程所有阶段只做平移,不夹带原业务逻辑修复或流程强化。** 原调用顺序、同步/异步方式、返回与异常处理、奖励/扣费及UI流程均按迁移前逻辑保留。此前新增确认等待、防重入及旧缺陷修复须整批核减;当前尚未恢复。唯一约束与核减来源见《M2-纯平移范围纠偏与既有改动核减清单-2026-09-30.md》。覆盖此前扩展提议,旧hash保留追溯;后续改进另行决定。
> **2026-09-30 补单方案最新修订:保留原同步业务处理、后台异步存档,撤回 HomePanel 增加 await 的提议,HomePanel 零修改。** 白名单增量收缩为两个离线 KVFishing 验证宿主;与补单沿用原存档时序的边界合并同一次差异审查。见《M2-C2c补单保留原异步存档流程修订-2026-09-30.md》。旧“三文件/补单确认后继续”叙述仅为历史;本次未改生产代码,未把该修订扩展到其他奖励或即时消耗链。
> **2026-09-30 用户硬约束:迁移必须保留原主要业务逻辑和工作流程。** 存储提供方与身份替换不能顺带改变奖励数量、扣费次数、订单/补单语义、活动触发条件、业务事件先后及登录退出流程。已审保存确认等待和旧缺陷修复必须逐项记录前后差异、验证连带影响;不把它们当任意改业务的许可。已改代码也须对照迁移前客户端基线,不能仅凭编译或合成用例通过称无回归。任何开发性冻结/忽略均须最终恢复或清理;不能用跳过功能或生产空值兜底隐藏失败。此约束与原三文件范围差异一起供审查侧核对,原受审方案和 hash 不重写。
> **最新 C2c:连续开发已推进至 198/202 业务共用存档 + 2 个即时消耗等待链;没有逐模块送审。** 另 3 项已有固定 KV 提示路线,1 项无调用者待清理。奖励动作收集、Survey/邀请/邮件/商店主链/签到、Chat 生命周期已编码;尚不等于全部奖励与真实场景通关。ServiceHost 两条件各 20 组/262 断言,CLI Loop 0 错/272 警告,真实模块 31 个/83 断言与纯模块 28 断言、旧装备 9 组/28 断言通过。**旧消耗和旧奖励验证实测失败,原因是白名单外隔离宿主未注入新 store;另有 HomePanel 补单 await 范围缺口。** 已集中成一份三文件最小差异方案;只这些越界修复待裁决,原批准范围无需重审。累计 110 项交付,原基线其余 2067 项不变,组合 2177 项全核通过,hash `8AA47B90E292CF39A0ED7D5304B57516AFE3B0378A2B96A27E494FA9A1202AB9`。详情见 M2-合批-C2c实施记录-2026-09-29.md、M2-合批-C2c集中边界差异与后续连续开发方案-2026-09-29.md。双闸保留、生产 runtimeVerified 全 false;服务器未读改、未 Play/正式请求/付费/打包。检查点通过后直接推进,不再要求用户逐小段“继续”。以下 C2b 及以前均为历史。
> **最新:C2b已实施,继续同批C2开发,无需等待审核。** 新迁42处,累计64/202业务存档调用;活动代币拒写不改余额,活动JSON坏档不再视为空档,FishingEventData主体及分部已接固定store。剩余138业务+2即时消耗、奖励动作/实际UI、Chat/RT及真实首场景。宿主两条件17组235断言通过,CLI Loop Editor0错272警告,正式请求0。累计47项交付hash `8F027C0677BE42099CFA7EA3ED53D86497DF55C9A7627C29006526CE7B7C0729`,原基线其余2130项不变;详见M2-合批-C2b实施记录-2026-09-29.md。全生产runtimeVerified仍false、双闸保留、M2未通关;未读改服务器、未Play/打包。以下C2a及此前状态为历史。
> **最新:C2a已实施,工作仍在开发侧,直接继续同批C2。** 共用KV/PF固定会话存档、资料/40秒调度、22项业务调用、首场景初始化后的登录时间保存已编码;跨日异常会阻止推进时间。ServiceHost两条件各16组215断言、加载90组2008断言通过,CLI Loop Editor编译0错。累计33项交付hash `7DF87736B6204DFD1689606BF40514E9299FB86F8D7ED5B13B3572537370EFBE`,原基线其它2144项不变;详见 `M2-合批-C2a实施记录-2026-09-29.md` 与 `M2-合批-C2调用迁移进度.json`。仍待180项业务调用+2项即时消耗、奖励/Chat/RT及真实首场景;两阶段闸保留,全部业务runtimeVerified仍false。未Play/正式请求/打包,不读改服务器,不新增送审。以下C1及等待审查叙述为历史。
> **最新:已获批并实施C1,直接继续C2**。正式报告 `M2-合批正式独立方案审查-2026-09-29.md` 有条件PASS,报告hash `BB02441CFFE72AF18CF3B0D78F8E581FC39549C3F77E45257B5ED16CADCF2937`;主会话开工前核2165/2165并[逐项裁决](M2-合批正式审查主会话裁决与实施记录-2026-09-29.md)。新增KVUserService及两窄契约,旧PF formal代码已移出;LoginStage/PFLoginAct/QuitAct/模块31/成功Descriptor/身份三态已接。当前[20项检查点hash](M2-合批-C1检查点与交付hash.json)覆盖本轮12既有代码、7新增源码/测试/meta及1清理文档变动,原基线其余2152项不变;不要把批准实施当未审漂移。加载90组/2008断言、ServiceHost两条件各12组/147断言、CLI Loop Editor0错269警告通过,未Play/正式请求/打包。继续同批C2共用存档、调用迁移、首场景与奖励,无需再送C1审查。两阶段闸及PFLoginAct.OnDestroy暂时撤销行为仍须在C3正常交接时统一处理;LastLoginTime写入点和真实Chat/RT回归尚待C2。下面“等待正式前审”均为历史。
> **最新接手动作(合批正式前审包已备)**:先读[修订复核裁决](M2-合批修订复核裁决与正式前审边界-2026-09-29.md)、[正式实施方案](M2-合批正式实施方案-待完整审查-2026-09-29.md)及[一次性正式前审提示词](M2-合批原ZCode一次性正式前审提示词-2026-09-29.md)。2165项基线、110现存文件+12新增候选、224调用台账和70组活动配置投影已备。下一步查 `M2-合批正式独立方案审查-2026-09-29.md`,存在则核受审hash再逐条裁决;未存在则保持待正式前审,不改代码。不要再把前两份明确“非正式前审”的报告当许可,也不要再拆DP1或小项预审。当前CustomId接口只有getter,复核P3a错误已反证;工作稿原字节保留。此条覆盖下方历史。
> **最新检查点**:合批工作稿独立预审已经落盘,主会话已[核证并逐项裁决](M2-合批预审主会话裁决-2026-09-29.md)。旧 DP1 基线18/18一致;合批预审明确无正式受审hash,不可当编码许可。身份来源与发布、窄契约、测试迁移、短ID/Survey规则和地区缺失已补[工作稿](M2-合批实施方案工作稿-2026-09-29.md);首场景动态写入及奖励动作仍在开发侧补全,完成后同一大批一次正式前审。KV 替代 PF 玩家数据读写已定,不再反复询问;不恢复DP1单独实施轮。
## 最新架构裁决:保留 PlayFab,新增独立 KV 实现并用开关选择
- **最新身份纠正**:KV 模式直接使用认证会话的新 `PlayerId`(当前 `PlayerKVAccountDescriptor.PlayerId`);旧 PlayFab ID 和 `EntityKey` 只属于原 PF 模式,不再询问或设计新旧 ID 映射。客户端中 `UserId`、Survey 十六进制计算、榜单 SDK 等是待迁移的旧代码引用,按[当前合批工作稿](M2-合批实施方案工作稿-2026-09-29.md)处理。服务端代码不由客户端 Agent 读取或修改。
- **最新用户纠正覆盖此前删除要求**:必须保留 `PlayFabUserService`、`PlayFabMgr` 和原 PlayFab SDK 路线;另写独立 KV 用户服务和 KV 存档路径,由一个启动开关选择。当前 `PlayFabUserService` partial 内的 KV 接线只是过渡,最终应从旧类抽离 KV 职责,而非删除旧类。接手后先读[双提供方切换与独立 KV 实现约束](M2-双提供方用户服务切换与KV独立实现约束-2026-09-29.md),按其中的共用契约、DI、31 模块、AGG 和双模式验收要求拟完整方案。CP2B-T 既有白名单不因该裁决自动扩展;编码前仍需完整评审和逐项裁决。以下旧检查点保持历史原文,以最新日志/总进度判当前实施状态。
- **项目结束硬门槛**:上述约束文件末尾的“项目结束前必须逐项确认的边界”目前全部未验收。尤其要核实 PlayFab 模式仍走 `PlayFabMgr → PlayFabClientAPI`,KV 模式走独立用户服务与原 KV handle,启动开关对所有入口一致且两边不会串会话/串档;凭双模式真实证据与最终裁决逐项销账。
- **全局简洁性规则**:先读项目根目录的 [`AGENTS.md`](../../../../AGENTS.md)。新增抽象必须有具体调用者和不可省职责;满足功能与必要安全边界后,优先复用或最小拆分现有结构,避免重复开关、状态、适配层和为假设扩展写复杂逻辑。M2 最终验收清单已增加抽象简洁性销账项。
## 最新 CP2A-C9 实施中检查点(覆盖下方历史)
- CP2A 已按[12文件白名单裁决](M2-CP2A独立方案审查主会话裁决与实施边界-2026-09-29.md)接入正式启动分流、101/102现存档门、原 handle 内部交接、登录阶段双闸及注销/退出撤销。合成加载89组1962断言0失败、ServiceHost 9组86断言0失败,Unity CLI Loop Editor编译0错误/269警告;详见[开发日志](../../开发日志.md)与[当前自验报告](M2-CP2A实施自验与待复核边界-2026-09-29.md)。共享内层 handler、关闭故障及未验证 Sockets 的红绿证据保留。
- **未关闭 CP2A**:真实 Player 目标编译及原ZCode批末独立实施复核尚未完成。既有 `FishingChallengeManager.cs` 的 `_cheatingScore` 在非Editor分支被引用而字段只在Editor声明,修复不在CP2A白名单,须独立补审;不能用合成 PlayerProbe 冒充真实 Player 通过。未Play、未访问正式101/102、未打包。CP2B及最终闲置实现清理仍待后续。
## 最新 CP2A-C0 裁决检查点(覆盖下方历史)
- 原ZCode [CP2A独立方案审查](M2-CP2A独立方案审查.md)已通过;主会话37/37受审hash一致并[逐条裁决](M2-CP2A独立方案审查主会话裁决与实施边界-2026-09-29.md)。报告hash `47C412B6F8F29BB09979A5C95EAE31CFBA57DE0810C8FC4BAC6D9ACB9F36D521`。四P3中不采纳不稳定版本令牌建议,复用现有生命周期并排除条件新文件;仅批准12文件上限的CP2A生产边界。
- CP2A尚未编码:仅非AGG、101/102现存KV档正式登录/原handle交接,在FishingStage前停住;无公开IsAuthorized/Mail/IAP/业务API,不操作正式账号。下一步先合成红测,再按白名单实施,每检查点更新日志;CP2B、CP3–CP5和最终闲置实现清理仍待后续。
- 现有工作树保留;固定 `http://s101.local:18080/`,Unity仅CLI Loop,不用UnitySkills,暂不打包。
## 最新 CP2-D2 受审检查点(覆盖下方历史)
- 用户确认首批**仅101、102且已有KV档**;CP2首段只验**正式登录与原handle交接,并阻止跳入FishingStage**。已形成[CP2A完整候选方案](M2-CP2A正式登录与原句柄交接完整方案-待独立审查.md)及[原ZCode提示词](M2-CP2A原ZCode独立方案审查提示词.md)。37项[受审基线](M2-CP2A受审基线.json)重新核算37/37一致,清单hash `B36C685EB9E9571DEFA383395EAD61CB86143CB9762FAE4FF208CF49F44A411A`。
- CP2A独立报告尚未落盘,故仍**待评审、不批准生产编码**。报告到达后先核受审hash,再逐条裁决与定白名单;CP2B首场景及CP3–CP5未关闭。只读[首场景依赖](M2-CP2首场景自动依赖核查-2026-09-29.md)提示 Survey/Leaderboard 旧PF与自动API,不能提前跳场景。
- CP1限定关闭保持,现有工作树保留;固定 `http://s101.local:18080/`,Unity仅CLI Loop,不用UnitySkills,暂不打包。
## 最新 CP2-D1 设计检查点(覆盖下方历史)
- 用户选定首批“仅已核准且已有 KV 档的账号”;未核准、新建或无档账号不得进入正式 KV,不自动建档或回退 PF。[CP2 设计输入与新增阻断](M2-CP2正式接线设计输入与新增阻断-2026-09-29.md)已落盘,仍不是完整方案或编码批准。
- 只读核出正常 UserService 第31模块准入、身份/UserId 语义、Mail 初始请求及 FishingStage 的 Survey/Leaderboard 旧 PF 依赖、Friend/AntiCheat/Club 路由。CP2 若仅验登录交接须在阶段切换前关门;若验首场景则必须补全同批调用迁移。当前 CP2 保持待完整独立审查,生产代码未改;CP1 限定关闭保持。
- 固定 `http://s101.local:18080/`;Unity 仅 CLI Loop,不用 UnitySkills,暂不打包,现有工作树保留。
## 最新CP1关闭检查点(覆盖下方历史)
- 原ZCode[M2 CP1独立实施复核](M2-CP1独立实施复核.md)已通过;主会话复核95/95交付hash并[逐条裁决](M2-CP1独立实施复核主会话裁决与限定关闭-2026-09-29.md),CP1**限定关闭**。审核者独立复跑120组2733断言0失败;清理失败3进程没有独立重跑。
- 该关闭只覆盖合成环境原handle交接;CP2正式运行设计仍待完整评审,未批准CP2生产编码。GameLoaded后关闭故障是CP2验收输入。最终无用接口清理、旧Mgr停用及流程图仍待后续。
- 19份接手时Client改动均保留。地址http://s101.local:18080/;Unity仅CLI Loop,不用UnitySkills,暂不打包,不操作正式账号。
## 最新接手状态(CP1-2,覆盖下方历史快照)
- 原ZCode修订2独立复审已经落盘;主会话核19/19 hash一致并[逐项裁决](M2-修订2独立复审主会话裁决与CP1实施边界-2026-09-29.md)。CP1已按两生产文件白名单实施;CP2仅完成依赖盘点,仍未获批编码。
- [CP1交付](M2-CP1实施交付与CP2输入-2026-09-29.md):共用加载、Apply/notify后释放Guard并发布原handle、同步撤销。加载84组1911断言,Context 23组279断言,B02完整13组544断言,清理失败隔离3进程5/8/8断言,全部0失败。
- CLI Loop编译报告0错误/272警告且Success=null;前后非Play/非编译,错误日志仅本轮不支持的get-project-info命令。接口反射探针被Restricted规则拒绝,未绕过、未称探针通过。未验证Player、未运行真实账号、未打包。
- 接手时已有19份Client改动全部hash不变,本次新增生产改动仅Context和Coordinator;Guard/KVMgr保持原样。所有原受审文档及报告保留。
- 下一步:把[批末复核提示词](M2-CP1原ZCode独立实施复核提示词.md)交原ZCode,核 `M2-CP1交付hash.json` 后独立复核;主会话再核hash并逐项裁决。当前CP1未关闭,不能自动推进CP2编码。
- CP2必须实际消费CP1接口,否则合并前删失效实现;CP3业务迁移、CP4旧运行引用清零、CP5最终清理和流程图均未完成。继续固定http://s101.local:18080/,Unity CLI Loop,不用UnitySkills,暂不打包。
## 以下为上一主会话留下的历史快照
## 当前事实
- 工作区:`C:\projects\ft`。B02仅完成KVMgr四个固定handle KV入口的限定迁移;PlayFabMgr其余方法、旧组件自动执行、正式KV登录和直接SDK引用尚未全部替代。M2**尚未获批生产编码,也未修改M2生产/测试源码**。
- 原ZCode《M2-先移植后优化独立方案审查-修订1.md》已审;主会话复算其15项受审基线全一致,接受“先移植后优化”总路线,但CP1–CP2暂不批准编码。P2-1和三条P3的逐项裁决见《M2-修订1独立审查主会话裁决与新增阻断-2026-09-29.md》。
- 主会话补查四类正式接线缺口:普通启动创建并唤醒PlayFabMgr;`SaveBackend=kv`及普通登录尚未接入;KV租约只放行验证路由、普通API在kvOnly被拒;31模块Bindings仅Editor编译。因此修订1报告所说的少量模式分流不足以让正式玩法运行。
- 《M2-正式接线依赖补审方案-修订2-待评审.md》和给原ZCode的提示词、19项SHA256/长度基线已落盘,主会话重算19/19一致。**截至本卡写入,尚无修订2独立复审报告。**
## 下一动作与审批边界
1. 若原ZCode已写《M2-正式接线依赖独立复审-修订2.md》,先核其受审hash,再逐条裁决CP1独立实施白名单、CP2前置范围及P1/P2/P3;将裁决和代码白名单落盘。若尚无报告,把《M2-正式接线依赖补审提示词-修订2.md》交原ZCode,等待复审;不要把修订1的条件通过当作编码批准。
2. CP1仅拟在合成环境共用加载主体、成功Apply并通知后释放Guard、交接**原**handle和同步撤销;不改普通启动/登录。若它必然会成为CP2不用的接口,拒绝CP1单独实施,合并CP1/CP2重新完整评审。CP2真实启动/认证/网络/Player Bind的精确白名单仍待设计与审查。
3. 获批后按批级检查点实施与记录,迁移完成后清理闲置接口、旧Mgr运行调用和无用代码,核最终流程图。遵守“方案完整评审后编码、每个检查点更新日志”;无完整裁决不改生产代码。
## 工作约束与保留现场
- 正式地址固定`http://s101.local:18080/`;Unity自动化只用Unity CLI Loop,不用UnitySkills;暂不打包。真实账号101/102、正式写入或付费动作不属于当前M2方案补审。
- 工作树已有其他阶段的源码、场景、字体、文档改动;不要reset/覆盖/顺手提交。`.git`仅供只读核查。
- 新主会话先读本卡、`接手入口.md`、`开发状态.md`、`TODO.md`、修订2方案、修订1裁决与最新ZCode报告;历史正文中有旧状态,以文件顶部最新检查点和本卡为准。