Files
ft/CodexOutput/upserver/开发进度存档-2026-09-21-最小登录交接.md

114 lines
9.8 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.
# 开发进度存档:最小登录交接
## 最新进度:2026-09-22 独立复审与故障验收完成
先读[本轮执行结果](最小登录收尾执行结果-2026-09-22.md)→[修复后独立复审](最小登录独立复审-2026-09-22.md)→[真实网络故障结果](网络故障验收结果-2026-09-22.md)。独立审查发现两处P2,实际Unity另复现Stage停止窗口;按实施前裁决最小修复四文件,58项定向测试及限定独立复审通过。最终Unity快速101→102→101三轮Error=0、核心进度相同、实际Hub Test=OK;已核对加载新程序集。当前Editor最后为PlayMode、101/FishingStage。
HTTP401/真实断流/15秒超时恢复、WebSocket断线自动恢复已在生产源码+实际SignalR DLL外部宿主通过;Unity Restricted不允许独立网络构造测试,故不冒充Unity完整UI/最终平台通过。仍待Unity/最终平台故障补验、主动业务推送、必要人工钓鱼及完整存档核对;真实SDK/真机最后统一打包确认。正式API仍为 **http://s101.local:18080/**。KV/俱乐部扩展/SDK删除暂停;无Git提交/发布。下方更早进度为历史,不覆盖本条。
## 最新结论:第二轮验收收尾(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。本文件是交接时的进度快照,后续变化请继续写开发日志;不要覆盖历史证据。本次存档未修改业务代码、重跑测试、操作正式服或提交Git。
## 1. 当前结论
**最小登录代码收尾、已具备条件的验证和独立限定复审已完成;Unity场景及真实渠道SDK/真机仍待验收。** 当前没有剩余已确认的限定范围代码阻塞,但不能标记端到端阶段验收全部通过。
优先级最高的范围文件是《当前阶段范围裁决-仅最小登录.md》。旧文档中的“优先KV”“A/B并行”“继续完整俱乐部”是历史计划,不是当前授权。
## 2. 环境与不可弄错的配置
| 项目 | 当前值 |
|---|---|
| 工作区 | C:/projects/ft |
| Unity客户端 | C:/projects/ft/Client |
| 服务端参考源码 | C:/projects/N3-Server-CN,只读核对契约,不默认修改 |
| 当前分支/基线 | feat/upserver / f40a816cc(本次存档实际核对) |
| 正式API | **http://s101.local:18080/** |
| 登录/Hub | account/Login / gamehub |
| 测试账号 | 101、102,用户已授权 |
| 工作区状态 | 多项业务修改及新增文件尚未提交;CodexOutput也未跟踪 |
源码已核对Svr101配置和默认API;实际Unity持久化配置仍需现场确认,不能改回192.168.9.101或误写101.local。保留其他环境配置,不用全局替换主机名。
落盘不等于Git提交或独立代码备份。接手应使用当前工作区,只有基线commit无法恢复这些未提交修改。不得reset/clean、整文件回退或覆盖其他任务的改动。
## 3. 身份语义与实现位置
| 项目 | 当前语义/位置 |
|---|---|
| UserId | 仍是旧PlayFabId,保留存档与旧链路兼容,不能全局替换 |
| CustomId | 涂游或测试输入的数字ID |
| ApiPlayerId | 当前已认证的数字ID,正式API本人身份使用它 |
| InternalId | account/Login返回的服务器内部编号,不替代上述所有身份用途 |
| 认证与Cookie | Client/Assets/Scripts/Services/Account/S101AccountSession.cs;数字ID校验、响应检查、独立Cookie/身份销毁 |
| HTTP会话 | Client/Assets/Scripts/Core/CustomServerMgr.cs;会话版本、替换传输及迟到响应隔离 |
| 用户登录/注销 | Services/UserService.cs、Services/AggUserService.cs;世代检查、提前注销与LoginLifetime令牌 |
| 登录界面 | Stages/PFLoginAct.cs、Stages/AggLoginAct.cs;关联注销/销毁令牌、重试防重、旧续体失效 |
| 退出入口 | Stages/QuitAct.cs;注销先于等待Hub释放,保留非注销退出语义 |
| SignalR | Services/RTService.cs;WebSockets+SkipNegotiation、首连预绑定、串行释放和旧回调隔离 |
| 首页必要兼容 | Services/ClubService.cs中的GetSelfClub;数字身份、授权/版本检查,非法响应不清状态 |
后面几行代码路径均相对Client/Assets/Scripts。活动/战令既有缺配置保护见DataCenter/BargainPackData.cs、PiggyBankPackData.cs、BattlePassData.cs及UI/Home/HomeBtnBattlepass.cs;不要扩展玩法。
## 4. 最后完成的小步骤
1. 核对范围与已有实现,避免重做;增加101→101→102→101会话/Cookie回归。
2. 复现GetSelfClub空响应清状态;完成专项方案裁决后,仅对该方法增加合法响应校验。
3. 重跑必要回归,2079源码编译成功;正式服4轮认证/只读授权/raw Hub探测成功。
4. 独立审查发现R1:旧登录界面在退出后仍可能弹重试框或继续Mail/IAP/Unload。先落盘专项方案,再修复PF/Agg生命周期及服务注销令牌,增加LoginActTests。
5. 原独立审查agent复审并独立复跑LoginActTests,关闭R1;更新状态、TODO、验证入口与开发日志。
本轮最后一批生产差异为GetSelfClub保护,以及UserService/PFLoginAct/AggLoginAct取消保护;其他最小登录能力复用既有实现。
## 5. 验证证据及局限
| 已完成验证 | 证据与不能替代的内容 |
|---|---|
| MinimalLoginTests 32项通过 | 实际认证会话/manager源码;不是完整Unity/渠道登录 |
| ExitTests 4组通过 | 实际QuitAct+依赖替身,验证注销与释放调用顺序 |
| RealtimeTests通过 | 实际RTService+Hub替身;不代表真实断网重连 |
| HomeLoginTests通过 | 提取实际GetSelfClub;合法/非法/空/旧响应、未授权路径 |
| LoginRegression通过 | 提取实际活动/战令方法;缺配置不重置、不写回,非场景验收 |
| LoginActTests通过,独立审查者复跑通过 | 提取PF/Agg登录/重试/销毁及PF输入、实际Logout;SDK/UI为替身。Agg类型面板仅静态核对 |
| 2079源码Roslyn编译通过 | 最新工程源码及引用,不等于Unity导入、IL2CPP打包 |
| s101正式探测4轮成功 | 101→101→102→101登录、授权playerdata/Get 200、raw WebSocket gamehub/Test=OK,每轮关闭/清Cookie;不等于Unity HubConnection或SDK换号 |
| 独立限定复审通过 | 《仅最小登录-限定代码审查.md》,保留初审和R1关闭证据 |
复跑命令集中在《验证入口.md》及测试宿主;测试生成器必须重新从生产源码提取,源码编译必须重新生成RuntimeCompile.rsp,不可沿用旧DLL声称新代码通过。
上轮探测没有KV写删、会员或资产写入。当前测试范围为登录、只读授权与Hub探测;不能以历史测试账号授权恢复已暂停的KV开发。不要在日志输出Cookie或令牌。
## 6. 接手后按顺序执行
- [ ] 先读取范围/验收/复审/外围清单并检查当前git差异;确认没有其他任务在修改同一文件。
- [ ] 确认可用的Unity实例与项目路径、Svr101实际配置、控制台状态。上轮有两个Unity进程但UnitySkills registry为空,这是历史观测,接手需重新发现。
- [ ] Unity测试正常登录、认证失败重试、同账号退出再登录、101→102→101;记录账号、操作、预期、实际、证据路径,不记录Cookie值。
- [ ] 登录待返回时退出、重试成功延迟中退出/销毁、旧按钮再次触发、重复点击;确认旧界面不再推进初始化/Unload。
- [ ] 真实渠道SDK/真机验证换号、登录途中注销、迟到回调和全局账号状态;模拟测试不能勾选这一项。
- [ ] Unity SignalR首连业务消息、退出释放、重登与实际断网重连;区分raw测试、替身Hub与Unity真实连接。
- [ ] 首页/钓鱼复测缺配置30801336、30701029、BattlePass空引用、GetSelfClub身份兼容,确认没有清档/重置。
- [ ] 发现范围内缺陷时,先补完整方案评审、裁决和文件边界,再修复/回归/限定代码review;每小步或最多15分钟更新开发日志。
- [ ] 无法执行的项目明确写待验收、缺少的环境和下一操作;不要为填进度扩展外围业务。
## 7. 暂停范围与外围差异
暂停完整俱乐部业务、聊天/捐赠身份迁移、KV适配/存档切换和PlayFab SDK删除。已有ClubService F1/F2、成员UI、签到等外围改动仍留在工作区,不等于已剥离。
详见《仅最小登录-外围差异清单.md》。如未来需要只包含最小登录的提交/发布包,先逐差异段归属与评审再拆分,不能整批回退ClubService/UserService等混合文件。当前未要求提交、推送或发布。
## 8. 文档阅读顺序
1. 当前阶段范围裁决-仅最小登录.md
2. 本存档
3. 仅最小登录-最终验收.md
4. 仅最小登录-限定代码审查.md(包含最终复审)
5. 仅最小登录-核对验证方案.md、仅最小登录-外围差异清单.md
6. TODO.md顶部、验证入口.md、开发日志.md末尾
所有文档均在C:/projects/ft/CodexOutput/upserver。供复制给其他AI的任务指令见《其他AI接手提示词-最小登录.md》。