Files
youle_cocos/docs/superpowers/reports/2026-09-05-remote-config-memory-acceptance.md

39 lines
4.4 KiB
Markdown
Raw Permalink 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-05。分支:codex/local-platform-login。设计与计划提交:62328b6。
## 范围
debug、release 均读取远程 JSON,按原工程身份层级读取参数,仅保存在内存变量。无远程配置文件落盘、localStorage 快照或失败缓存兜底。Login Layer/MainMenu 和其他 RPC 接线不在本批。
## 实际浏览器预检
- funplay MCP `fp_c4e73df9a6e175c3`:Creator 打开 `G:/Works/YouleGamesCocosCreator/cocoscreator_projects/YouleNexus`,场景 dirty=false;已有预览窗口 9 位于 `http://127.0.0.1:7456/?profile=local`。
- `fp_bc76fa976d3b5404`:在该真实 Chromium 预览 origin 使用 POST 空 body 读取源码 DEFAULT_GAMESERVER(附时间戳)。HTTP 200,JSON 文本字符数 31519、根字段 25,agentlist 为数组,无根 data 包装。未保存响应文件,也未输出配置内容。
- `fp_aadb469bca47420b`:使用源码 BUILD_IDENTITY 比对该次真实响应,匹配 agentid;其下没有匹配的 gameid,故 channel/market 层未进入。按原 get_paravalue 应继承 agent/全局值,不更换身份。
- 上述仅验证浏览器能读取配置及响应结构;新代码的完整启动验收在实现后单独记录。
## 新代码实际边界
实现提交 `053302c`。通过 MCP 逐个刷新五个既有 TS 资源,无序列化资源写入;重新加载已有本地预览窗口。
- `fp_dc324592cdfbe09c`:实际 LocalPlatformLogin 启动,loading-first-draw=848.4ms,startup-config=905ms,source=remote,最终唯一目标为 ws://127.0.0.1:3088,诊断数据无 rawConfig;resources-ready=907.4ms,最短展示门=1353.5ms,login 页激活=1354.5ms。ready=true,未显示错误。未点击登录,未验收其他 RPC。
- `fp_5524451aad3e7ff5`:从 Creator import map 导入实际编译的 runtime-config 与 HttpConfigFetcher,在真实 Chromium 中调用两种模式,底层仍使用真实 fetch。debug/local 请求一次,HTTP 200,source=remote,唯一目标为本地;rawConfig===remoteConfig.raw,getValue 可用,游客服务器字段存在;前后 localStorage 内容未变化。
- 同一调用中 release 也请求一次、HTTP 200;之后因 game_server_tcp/player_server_tcp 缺失明确报错,未创建生产 WebSocket,localStorage 未变化。说明读取和内存解析入口实际执行,不能称 release 正式启动已通过。
- `fp_a0676df82b7d83ae`:停止实际本地预览后 ready=false、stopped=true、pendingCount=0。
- `fp_115a6f611fcebfc0`:地址校验修复后再次刷新编译并重开实际预览,source=remote、ready=true、page=login;从 Creator 编译模块调用解析器确认空 `#` 片段抛出 ConfigParseError。停止后 stopped=true、pendingCount=0。
## 当前配置来源限制
真实响应经新生产解析器确认:当前身份的 game_server_tcp、player_server_tcp 均为 null,visitor_server_tcp 为字符串;hall_config、logimage 为 null。debug/local 在读取与层级解析成功后按原 serverType 语义使用明确本地地址。release 保持显式缺失错误,未切换身份、未选择真实子游戏、未用游客服务器兜底。
因此:本地远程读取→内存解析→本地连接→登录页通过;当前 BUILD 身份对应的正式启动因远程配置缺少地址而未通过。本批不修改远程配置服务或服务器。
## 自动验证和工作区
- `053302c`:纯 TS 显式枚举 606/606;指定 import-boundaries/presentation-boundaries 架构测试 49/49;框架类型与导入边界检查通过。
- TDD 包含原函数差分对照、local 必须等待读取、读取失败/停止期间零连接、正式地址缺失、不泄露远程配置到诊断等。保留既有错误路径测试的预期 boom 日志。
- 原有 50 个未跟踪文件 SHA256 全部不变,两项历史 meta 删除仍保留,共 52 项原有改动未处理。没有新资源文件,没有 worktree,没有合并或推送。
- 独立审查发现 URL 片段会通过 URL 解析却被 WebSocket 构造器拒绝;`58c974e` 已在配置入口拒绝字面 `#`(包含空片段),保留合法 `%23`。该修复 RED 为 5/6,GREEN 为 6/6;仅修改解析器及对应测试,未重复无关全量测试。
- 独立规格/质量审查在片段修复后通过;最终整体复审覆盖 `556c47a..d79bed0`,无新增可操作缺陷。release 来源限制准确保留,未误报正式启动成功。