Files
ft/CodexOutput/upserver/101真实玩法与迁移档恢复业务包-待评审-2026-09-28.md

68 lines
9.9 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.
# 101真实玩法与迁移档恢复:完整业务包方案
2026-09-28,主会话;状态:待一次完整独立方案评审。**目标:101已导入的历史档能真实登录,完成一次普通抛竿、拉杆收鱼、收下奖励,保存并在新Unity进程恢复。** 本方案默认生产代码零改动,复用已关闭4C2的运行入口。不能把102已成功视为101也已通过。
## 1. 范围与执行方式
- 一个业务包包含准备、登录、玩法、保存、正常退出、重启恢复及对账;不再把备份、许可、运行准备各自拆成独立评审阶段。
- 完整方案评审后由主会话核相关hash、逐条裁决;取得本包一次运行授权后连续执行。一次授权覆盖下述备份、两个游戏进程和最多一次付费抛竿,不逐步重新申请。需用户手动操作或启动CLI时只请求必要协作。
- 内部检查点写开发日志。完成后一次汇总交付复核;发现明确超出本方案的业务改动,才提交针对性补充方案。
- 固定 `http://s101.local:18080/`,仅Unity CLI Loop,不用UnitySkills、不打包。游戏只用101,102仅现有备份工具附带登录/Get,不在游戏使用或写102。
- 不重导、不合并、不补发、不更改引导/活动/随机鱼/装备以绕过门。生产源码、配置、场景、预制体均不改;允许在本业务证据目录保存只读采样脚本、命令结果、许可归档和对账结果,不新增通用框架。
## 2. 已知事实和前提
导入已由 [D5裁决](P2AlphaImport101/D5-执行复核裁决与关闭.md) 限定关闭。历史参考是 `P2AlphaImport101/runs/20260928T073630Z-345b3ee1f47a419abf876bf5b5506d89/after.json`,55键逐值等于固定PF源。该文件只用于对比,不直接作为游戏permit的backupPath:现有许可要求备份位于 `KVGameplayLoopTests` 下。
同run/account.json证明NewlyCreated=false、InternalId=2、CreateTimeUtc=2026-09-16T12:58:05.860603Z;不能当成刚创建的新玩家。历史主档等级62、金币36550472、体力7275、装备20001、地图102、倍率索引3;实际倍率、活动和玩法资格必须在运行时读取,不能根据旧档推定。FishingChallengeData历史值为字符串null;两类历史空态兼容已经通过独立复核。
`KVGameplayLoopSetup`已有101/102许可支持;v3负责一次钓鱼,v1负责恢复登录。游戏登录仍先执行PF身份登录,再执行s101登录和KV加载,存在PF域名解析依赖;不能宣称本包游戏完全不访问PF。PF存档写入不在本包授权范围,发现即停止并调查。恢复登录可能产生既有登录保存/跨日写,不能称整个恢复进程只读。
## 3. 备份、许可与数据边界
复用锁定的 `P2AlphaImport101/D1-bin/Preflight.dll --backup-101-102`,从项目根运行。DLL SHA256=`AAA1276630E8633C131072DDF638639B92F60134A0425E17616A4A5A2A436607`,355328字节。禁止调用任何import分支。每轮备份为101/102各1登录+1Get,无KV Set/Delete;登录自身仍有账号元数据副作用。
计划四轮完整备份:S0游戏前、S1登录稳定且尚未抛竿、S2收下并正常退出后、S3新进程恢复并正常退出后。成功路径合计8登录+8Get用于备份,另计两次游戏登录、游戏加载Get和所有实际保存Set;分开记录,不能把工具计数当游戏总请求数。失败只补必要的一轮状态取证,不自动重复业务动作。
S0必须55键与D导入after原值一致,身份/关键档/配置匹配且解码有效;不一致则保留现状,说明差异后停止本次既定运行,不覆盖历史进度。保存S0原件、hash、键表。v3许可使用S0下101.json和它的55键集合;这是允许现有登录链访问/保存已备份键的上限,不是允许点击55种业务。新键写入保持原拒绝规则。
允许的游戏动作只有登录、一次普通付费钓鱼、收下、退出。钓鱼期间保留现有更严格写门:NewPlayerDataDic、实际地图鱼档Map_5_{area}、BattlePassRecordTask、MiniBPKeyNew、EventLuckGameRecord、EventLuckMagicPlayfabData,且必须在S0键集中。S0→S1的登录规范化/跨日差异单列来源,不混为钓鱼奖励;出现无法解释的键变化或写入则停止,不扩大白名单。未知/未消费键应原样保持。
用户运行确认时需保持101其他客户端停用直至本包结束;不沿用已结束的导入15分钟窗口。102不要求停用,其附带快照只报告观测值,不能把其他客户端可能产生的变化归于本次101游戏。
## 4. 连续执行步骤(内部检查点,不是五次评审)
| 检查点 | 连续执行内容 | 通过证据 |
|---|---|---|
| 0 开始 | 裁决方案、记录本包授权;核焦点hash、实际API、Unity空闲/无活动permit;保存旧claims清单;读取S0。使用无旧本包claim的新进程,必要时正常关闭旧进程再启动。 | 批准范围、S0、进程身份、原claims、CLI状态齐全。 |
| 1 首次登录 | PrepareFishingRewardPermit(101,S0,55键);一次Play,等待登录/受控加载/首页稳定。禁止先操作签到或抛竿。采样游戏状态、准入环境、保存状态,读取S1并完成登录差异归因。 | Ready=true/Error为空、加载成功;登录保存确认;S1与运行时主档相符。 |
| 2 一次玩法 | 主会话完成动作前采样后才通知用户:手动抛竿→拉杆→收鱼,成功停在奖励界面;失败不重试。记录实际鱼/装备/地图/倍率、扣费和奖励票据、奖励画面/数据后,再协作点击收下返回首页。 | 仅一次付费动作;原扣费票据确认;fishing-reward-confirmed先于presented;收下回首页;原票据与最终值可关联。 |
| 3 保存退出 | 等既有保存确认,经QuitStage正常退出并确认closed/drained;归档v3许可,保留claim。取得S2并对账,再正常关闭Unity、确认旧进程已退出。 | 不靠强制Stop/杀进程模拟退出;未确认票据为0或有明确失败终态;S1→S2业务差异可解释。 |
| 4 重启恢复 | 新进程、S2的101备份建立v1许可,登录且不操作玩法/领奖/装备;核对恢复值,再正常退出,取得S3、归档许可和证据,汇总交付。 | 恢复金币/体力/鱼档/任务进度与S2一致;登录附带变化单独归因,最终无活动permit、旧新claims保留。 |
进程退出有场景保存对话框时请用户处理,不强杀;CLI未连接时请用户Start Server,不无限轮询。这些是执行协作,不追加方案轮次。游戏失败后的安全退出也走已有保存/drain;不能为了凑齐闭环重建许可重扣一次费用。
## 5. 必须保留的准入与失败处理
复用 `UserService.KVFishingReward.cs` 的全部实际门:普通付费鱼、非免费/重试/决斗/固定列表/活动类型,无特殊鱼技能;无冲突引导、巡游/收集目标/存钱罐/砍价/进行中挑战,频次与倍率/刺鱼解锁合格;事件配置和Guidance投影匹配。自然鱼只在动作中选择,事先不能保证抽中合格鱼;拦截照常停止,不能修改随机结果。
PF解析失败、账号不符、加载失败、配置漂移、准入拒绝、并发迹象、Set失败/Unknown或写门拒绝:保存现有日志和快照,停止后续玩法。扣费已确认而奖励失败则如实记账,不自动补发/重试。服务器结果不明不重放Set。快照也失败则明确证据缺口,不当作没写入。恢复失败不把S0重新导入。
本方案不授权任意故障修复代码。若查明必须改业务逻辑,集中记录实际阻塞及最小差异,完整评审补充后再改;一般CLI参数、证据采样或日志路径修正按原范围处理并记日志,不单独开方案。
## 6. 验收和交付
1. 101实际加载既有55键档,关键运行时数据与S1一致;历史null不再抛异常;未回退空档/PF旧进度。
2. S1是在动作前冻结;S1→S2核对体力/消费累计、金币、鱼数量/重量、钓鱼次数和实际任务变化,关联扣费/奖励票据与服务器结果。获取到公式输入才做独立重算;缺项如实列明,不能用同一结果自证公式正确。
3. 奖励确认后显示,收下真实回首页;S2保存成立,新进程恢复成立,S3差异有归因。登录跨日变化不能掩盖玩法未保存。
4. 无第二次付费、无导入/覆盖102、无放宽门/删claim/打包;所有非预期业务操作(如误点签到)记录,不能标成纯净单动作验证。
5. 一份交付记录汇总实际命令、进程、4快照、票据/日志/关键截图、逐键对账、授权与边界、缺口;一次独立执行复核后主会话关闭。本包最多证明101这条真实链,不代表26模块外键、全活动、热换号、完整4B3B/C或G4完成。
证据放在 `CodexOutput/upserver/Gameplay101Validation/`,运行产生的原有permit/run/backup沿用现有目录并在交付索引引用,不复制庞大历史材料。受审hash仅冻结本方案、直接依赖及历史参考,见同目录 `review-hashes.json`;共享状态/日志不纳入冻结清单,更新检查点无需滚动重封全部项目。
## 7. 交给评审AI的提示词
请独立审查本完整业务包,先核 `Gameplay101Validation/review-hashes.json`,再核对涉及源码与4C2既有闭环。重点检查:101既有账号与55键备份;v3/v1边界;PF身份依赖;登录写和钓鱼写的区别;动作前S1;一次扣费与奖励/退出确认;新进程恢复;备份工具附带102只读;失败后不重导/重放/绕过准入。
给出通过/有条件通过/不通过,逐条问题、严重级别、依据与最小修订。只将真实阻断项作为开工条件,不因文档样式或内部检查点另设实施前复核阶段。只读审查,不运行Unity或正式接口,不修改主会话共享文档。请只落盘 `Gameplay101Validation/完整业务包独立方案审查.md`。此次没有新生产代码,方案批准后直接连续运行并统一复核;不得假设未知运行结果已经成立。