Files
ft/CodexOutput/upserver/网络故障验收方案-2026-09-22.md

24 lines
3.3 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,用户明确执行独立审查与网络自动化测试;当前不打包。目标仅 C:/projects/ft/Client,正式 http://s101.local:18080/,现有101游戏会话不变。
## 方法与边界
1. 先核对Unity实例、当前授权/API及错误基线。独立审查agent只审查前轮五文件与本轮四文件,不修改生产代码。
2. 在127.0.0.1临时端口运行标准库测试代理,固定上游s101.local:18080。只允许account/Login(账号101/102)、playerdata/Get(空对象只读)、gamehub升级;其他路径拒绝。不记录Cookie、令牌、存档正文。控制端点仅loopback;全部测试后停止进程。
3. Unity内通过现有公开构造函数创建独立S101AccountSession和Config/CustomServerMgr/SignalRService,不注册到GContext,不改全局配置、PlayerPrefs或当前服务。测试使用102,避免服务端单连接策略挤掉当前101。Config源码IL已确认Set仅写实例内字典。
4. HTTP:代理一次返回401→实际会话未授权;恢复转发→真实登录成功。再一次延迟超过生产15秒超时→Timeout/未授权;恢复真实转发→登录成功且只读授权Get成功。可加真实TCP中断→Network分类恢复。数据不写KV。
5. SignalR:独立实际生产SignalRService、实际Unity SignalR DLL、真实102认证;只调用Test只读方法。由代理在已有WebSocket通道上断开底层socket,并短暂拒绝重连;期间观察IsConnected=false,然后不手动Connect而观察自动恢复、再次Test=OK;ReleaseAsync后确认通道关闭且无新连接。
6. 临时动态C#均先compile-only再执行,保持Restricted权限。finally释放独立Hub、认证会话和代理。正式101状态及错误日志前后核对,不停止Play/清控制台制造通过。
## 完整评审裁决
- 方法不需要管理员、不影响整机网络或D盘Editor,不改客户端生产地址。代理只有固定上游和白名单,可逆且范围可控,允许实施测试脚本。
- 401为代理注入的真实HTTP响应;超时和WebSocket断开为真实传输故障,非HttpMessageHandler/Hub替身。但这是Unity中独立生产对象的集成测试,不能冒充PFLoginAct完整UI流程/用户正在玩的连接,不能关闭其尚未覆盖的验收项。
- Test RPC不是服务端主动业务推送;订阅恢复仍需可安全触发的实际消息。没有明确安全端点时不制造奖励/资产/会员事件。
- 不修改生产代码。独立审查若发现问题,先另行裁决具体修复边界及测试,再修改。匹配APK与真机均留到最后。
- 本方案由主会话完整评审通过;独立代码审查结论另存,不将本方案自审冒充独立审查。
## 工具权限核对后的修订(实施前)
Unity Restricted 同时拒绝直接 HttpClient 与认证构造器参数中的 HttpMessageHandler 元数据;两次compile-only失败均已存证,未执行也未放宽权限。改用独立net9.0测试宿主编译实际S101AccountSession/CustomServerMgr/RTService源文件、加载Client/Assets/Plugins/SignalR真实DLL;仅引擎/UI事件胶水使用替身,HTTP/WebSocket/服务端真实。由外部宿主控制loopback代理。允许执行这一更小隔离范围,不将结果记作Unity运行或完整UI验收;C盘现有101仍保持不动。