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

6.7 KiB
Raw Blame History

Unity CLI Loop 最小登录实际验收

最新结论:第二轮验收收尾(2026-09-21 21:40)

先读第二轮验收结果及本轮限定自审。本轮补齐真实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复审不自动覆盖这些补丁。