3.8 KiB
3.8 KiB
F1/F2/F3实现与验收记录
2026-09-21。依据《F1-F2-F3实施方案.md》及其追加评审。当前仅完成代码/离线验证,独立review结论另见《F1-F2-F3代码审查.md》。
变更
- F3:QuitAct在UI/配置清理和第一个await前按Logout标记注销,消费标记防重复;非注销保持。AGG先基类失效、后渠道退出。基类身份字段和PF凭据先清理,再通知HTTP会话更换,避免通知期间仍暴露旧InternalId。
- F1:ClubService 11个已列本人playerId请求改认证ApiPlayerId,创建自身缓存同步;每方法授权和会话检查,成员目标保持数字目标含义并验证;签到/系统消息发送数字本人ID。3个成员UI的本人判断同步修正。
- F2:CreateClub仅显式code0+有效clubInfo成功;code1已有会员不返回创建成功,避免UI重复扣费。QuitClub仅显式code0/1后清理,其他失败/非法/过期响应保留状态;HandleApply/Kickout将预先副作用移至成功之后。
本轮实际验证
- ExitTests:4组通过(注销/非注销×停止正常/抛错),使用实际QuitAct源,账号/Hub/引擎为替身;验证进入Hub等待前Logout已执行,异常继续清理、重复执行不重复注销。替身迟到回调不能证明真实SDK内部全局状态。
- ClubRegression:25用例通过,生成器每次从生产ClubService提取helper及Create/Quit/Demote/Promote/Kickout方法,模型亦从生产提取;传输/引擎为替身。覆盖无授权、失败/业务失败/非法和缺字段响应、成功、创建code1、成员目标、旧会话、Kickout失败无预扣。
- MinimalLoginTests:31项通过,实际认证会话/HTTP管理器源码;与ExitTests分开,不冒充真实QuitAct+SDK端到端。
- RealtimeTests:实际RTService源+替身Hub,既有生命周期测试通过。
- 最新2079运行时源文件和工程引用重新生成,Roslyn编译退出0。git diff --check通过。
- 本轮没有调用正式服写接口,未创建/退出俱乐部、未扣资产、未写KV;没有宣称Unity运行或AGG真机验收通过。
尚待完成
- 独立review及其问题整改后填写最终裁决。
- Unity UI、真实SDK、阻塞实际Hub时的真实HTTP/渠道回调组合场景复测。
- F1列明范围外:ClubService.SendHelpOthersEnergy的donateId、其他聊天/点赞/体力显示及SocialClubJoined等旧UserId引用仍要单独迁移。不能将本次11个请求修正写为全社交模块完成。
- KV生产会话桥接、存档切换、SDK删除没有实施,继续按原阶段门。
复跑
$env:DOTNET_CLI_HOME='C:/projects/ft/CodexOutput/dotnet-home'
$env:APPDATA='C:/projects/ft/CodexOutput/dotnet-appdata'
dotnet run --project CodexOutput/upserver/ExitTests/ExitTests.csproj --verbosity quiet
python CodexOutput/upserver/ClubRegression/generate.py
dotnet run --project CodexOutput/upserver/ClubRegression/ClubRegression.csproj --verbosity quiet
Review整改与复验
- R1:HandleApply空ID批量拒绝按服务器code4处理;空ID同意不发送;普通目标仍只接受code0。
- R2:签到新增会话内在途防重和完整日期成功防重;失败释放锁可重试,旧会话结果不发奖/写入。ClubSingin返回Task,SocialClubJoined等待完成再刷新CD,期间禁用按钮且旧会话不刷新UI。
- ClubRegression扩大为31用例,新增生产方法/模型提取覆盖上述分支,全部通过;2079源码最终重编译退出0。
- 仍未进行Unity实际按钮交互、真实SDK或会员/资产线上操作。独立agent正在复审本次整改。
最终裁决
独立agent复审通过:R1/R2已修复,本批源码无剩余已确认阻塞项,并独立重跑ClubRegression31项通过。F1/F2/F3列明范围的代码整改与离线验收完成;Unity/SDK实机场景仍待执行,不能标记为全社交迁移完成。开发状态与TODO已同步。