Files
ft/CodexOutput/upserver/UnityCliLoop最小登录验收-2026-09-21.md

58 lines
6.7 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.
# Unity CLI Loop 最小登录实际验收
## 最新结论:第二轮验收收尾(2026-09-21 21:40)
先读[第二轮验收结果](最小登录收尾-第二轮验收结果.md)及[本轮限定自审](最小登录第二轮-限定代码审查.md)。本轮补齐真实Unity登录等待中退出、旧重试按钮、成功延迟中退出;快速101→102→101三轮错误0,Cookie/旧Hub释放通过,最终实际Hub Test=OK。测试发现问题后仅修复SoundService、FishingAct、FishingBehaviorB、FishingStage四文件,实施前均有方案裁决。编译0错误/271警告;新补丁只有主会话自审,尚无新独立复审。
101抽查的等级/金币/钻石/鱼竿前后相同,已打开战令预览及社交页;真实SDK/真机、HTTP故障、真实断网与业务推送、必要钓鱼玩法及完整存档仍待验收。正式API **http://s101.local:18080/**;Editor最后取证为PlayMode、101/FishingStage。下一步补验收条件,发现问题再评审编码;KV/俱乐部扩展/SDK删除暂停。下方较早状态均为历史,不能覆盖本条。
更新:2026-09-21 20:50。项目 C:/projects/ft/Client,Unity 2022.3.62f2c1,Unity CLI Loop 2.2.0。正式 API **http://s101.local:18080/**,Hub /gamehub。本文覆盖早期“Unity不可操作/仅待人工测试”的状态,历史证据保留。
## 当前结论
本轮完成实际输入登录、非法ID失败后更正重试、同号退出再登录、101→102→101,以及退出身份/Cookie/旧Hub释放的**生产阶段入口集成验收**。最终四轮进入FishingStage后错误日志均为0;最后实际Unity Hub Test返回OK。已修复测试发现的五处缺陷并完成限定主会话自审。
本阶段尚不宣称全部验收通过:真实渠道SDK、完整游戏存档隔离、真实断网自动重连、登录网络竞态及玩法专项仍待验收。没有Git提交/发布。游戏仍依赖PlayFab。
## 实际结果与边界
| 项目 | 结果 | 证据及限制 |
|---|---|---|
| S0 正常登录 | 通过 | `uloop-final-first101-state.json`:101/InternalId2/Authorized=true/FishingStage,运行地址正确。通过激活输入框与EventSystem点击登录。 |
| S1 失败重试 | 本地非法ID与纠错通过 | `uloop-fixed-failure-state.json`、`uloop-fixed-failure2-state.json`:not-an-id两次失败均未授权;`uloop-fixed-corrected-state.json`:更正101成功。真实HTTP401、断网超时恢复未注入,不能视作已测。此测试在后续仅增加退出/Home延迟保护前执行,PF登录代码此后未变。 |
| S2 同号重登 | 阶段集成通过 | `uloop-final-relogin101-exit/state/errors.json`。调用与渠道确认相同的QuitStage.Logout+SwitchStageAsync路径,再实际输入101。没有用停止PlayMode或清缓存代替注销。真实渠道按钮和SDK组合回调另待。 |
| S3 101→102→101 | 认证身份/Cookie/Hub通过;完整存档隔离待验收 | `uloop-final-switch102-*`、`uloop-final-return101-*`:102/InternalId3,返回101/InternalId2。所有旧身份清空、旧Cookie容器替换且新容器Count0、旧manager会话版本增加、旧Hub断开。未比较全部游戏存档或执行跨账号写入。 |
| S4 登录界面异步退出 | 离线回归通过,Unity竞态待验收 | LoginActTests覆盖等待/成功延迟/旧按钮和输入取消;本轮没有注入真实登录等待、SDK迟到回调、真实点击延迟竞态。 |
| S5 SignalR | 实际首连、只读RPC、退出释放通过;断网待验收 | 三次退出WasConnected=true、OldHubConnected=false;`uloop-hub-test-result.json`:Connected=true、HubTest=OK。使用实际IRTService.Publish,服务端GameHub.Test只记日志并返回OK。不是服务器业务推送或真实断网恢复测试。源码保持SkipNegotiation=true+WebSockets;未抓包另行证明请求数量。 |
| S6 首页/钓鱼 | 四次进入FishingStage无运行时错误;完整玩法待验收 | `uloop-final-*-errors.json`和`uloop-final-complete-errors.json`均0;最终Game截图留存。未逐个点击战令/礼包/俱乐部并抛竿,未验证完整存档保持。 |
所有退出结果均验证:OldUserAuthorized=false、OldInternalId=0、OldUserIdCleared/OldApiPlayerIdCleared=true、CookieJarReplaced=true、NewJarCount=0、SessionAdvanced=true、OldHubConnected=false。不输出Cookie/令牌。新容器的SessionVersion可以从头计数,不能用两个容器之间的数字大小判断退出是否成功。
## 复现、修复与审查
完整实施前方案/补充评审:《Unity重登缺陷-方案与评审.md》。最终限定审查:《Unity重登修复-限定代码审查.md》。五个生产文件:
1. PFLoginAct:输入模式下失败重试可更正ID。
2. ActivitySentryManager:容器重建后重新注册活动类型。
3. QuitAct:退出取消任务后销毁常驻TimerMgr。
4. PlayFabMgr:注销后不再无凭据上传/出队,销毁时保存已有本地PlayerPrefs。
5. HomePanel.LastShowPanel:旧面板/旧容器延迟回调不再访问新会话。
早期失败证据没有隐藏:`uloop-reentry-error-stacks.json`、`uloop-fixed-relogin-errors.json`、`uloop-before-home-guard/uloop-final-relogin101-errors.json`。最终通过总日志:`uloop-final-reentry-run-03.log`,宿主退出码0。没有清控制台冒充通过;修复后停止/重进Play载入代码,失败轮和最终轮分开记录。
## 验证
- 最新Unity编译:`uloop-home-repair-compile.json`,Success=true,0错误、271警告;不是0警告。
- LoginActTests、ExitTests、ReentryTests、LogoutStorageTests、HomeExitTests退出0,详见各目录Latest.log。后四类测试的SDK/引擎/容器依赖使用替身,实际生产文件或方法体来自当前源码。
- 五文件diff空白检查通过,源码校验和`uloop-repair-source-hashes.json`。
- 全程目标路径固定C盘,未操作D盘Editor。ULoop动态代码保持Restricted,不新增Input System或放宽权限。
- 未直接操作KV写删/会员/奖励/资产或清档;实际游戏登录会执行既有初始化、同步回调,不能声称这些Unity流程全部网络只读。
## 接手与下一步
当前Editor保持PlayMode,账号101、FishingStage,Hub连接正常(20:50取证)。先确认实时状态,勿重复执行已通过流程或将留在PlayMode当作新的测试结果。
下一步优先补**受控验收**:S4真实时序与网络失败/恢复(需可控的请求延迟或故障注入),S6由用户确认账号状态并测试必要入口/抛竿,真实渠道SDK/真机换号退出。真实断网测试需限定到目标客户端,不能断开整台机器或影响D盘项目。发现缺陷才补专项评审并编码,不自动展开KV/俱乐部/SDK删除。
本轮新补丁已做主会话限定review,尚无新的独立agent复审;旧独立R1复审不自动覆盖这些补丁。