完成 P2 第一阶段包与编辑器准备

This commit is contained in:
JSD\13999
2026-06-04 11:33:59 +08:00
parent 7cde2cfaec
commit 37e6d4ca57
49 changed files with 1996 additions and 2 deletions

View File

@@ -0,0 +1,171 @@
# FlowScope P2 第一阶段基线审查
日期2026-05-26
## 审查目的
本文用于锁定 P2 第一阶段执行边界。P2 第一阶段只推进 package 分发边界、安装接入文档、Addressables 真实验收、Editor 最小诊断入口和 MainMenuP0 样例说明,不重写 P0/P1 Runtime 生命周期,不扩大到完整包迁移或编辑器平台化。
## 当前分支与工作树
- 当前分支:`codex/pre-p2-architecture-fixes`
- 本文创建前 `git status --short --branch` 未显示待提交文件;命令输出包含本机 `C:\Users\13999/.config/git/ignore` 权限 warning。
- 本阶段提交信息必须使用中文。
- 本阶段计划、审查、报告必须使用中文。
## P0/P1 Runtime 基线
当前 P0/P1 基线以 `docs/requirements/p0-requirements-set.md``docs/requirements/p1-production-hardening.md``docs/reviews/p1-completion-report.md``docs/guides/flowscope-runtime-usage.md` 为主要依据。
已确认的实现状态:
- `FlowScope.Runtime` 已包含 Container、Feature、GameFlow、Config、Save、Resource、Audio、UI、UIPreload、UIScreenNavigator 等 P0/P1 Runtime 能力。
- `FlowScope.Runtime` 的 asmdef 只引用 `R3.Unity`,不直接引用 Addressables、Editor 或 Samples。
- 资源系统已拆成 Runtime 核心 `ResourceService` + `IResourceBackend`Addressables 适配位于独立 `FlowScope.Addressables` 程序集。
- `UIPreloadService.Release<TPanel>()` 已包含 panel 级 in-flight invalidation并有 `Release_WhenLoadInFlight_DoesNotCacheAndDisposesLoadedHandle` 测试覆盖;旧的第五轮审查中提到的该项中风险在当前代码中已收口。
- `MainMenuP0` 仍在 `Assets/FlowScope/Samples/MainMenuP0`,尚未迁移到 `Samples~`
## Package / Editor 现状
当前项目仍是 `Assets/FlowScope` 内开发模式,不是标准 Unity Package 目录。
已确认缺口:
- 当前未发现根级或包级 `package.json`
- 当前未发现 `Samples~``Tests~``Documentation~` 标准包目录。
- 当前未发现 `Assets/FlowScope/Editor``FlowScope.Editor.asmdef`
- 当前还没有 package 安装说明覆盖本地 path、Git URL、项目内 Assets 开发模式三种路径。
第一阶段边界:
- 可以新增 package 结构方案文档和最小 package 元数据草案。
- 可以新增最小 Editor 诊断入口。
- 不在第一阶段直接搬迁 Runtime、Addressables、Samples 或 Tests。
- 不删除 `Assets/FlowScope` 当前开发模式。
## Addressables 验收缺口
当前 `FlowScope.Addressables` 程序集存在:
- `My project/Assets/FlowScope/Addressables/FlowScope.Addressables.asmdef`
- `My project/Assets/FlowScope/Addressables/AddressablesResourceBackend.cs`
- `My project/Assets/FlowScope/Addressables/AddressablesResourceService.cs`
当前 `AddressablesResourceBackendTests` 只验证:
- `Name_ReturnsAddressables`
缺失的真实验收:
- 使用真实 Addressables key 加载资源。
- 验证 `AddressablesResourceBackend.LoadAsync<T>` 成功返回真实资源。
- 验证 `Release<T>` 对已加载资源可重复进入释放流程且不产生业务层重复释放异常。
- 验证缺失 key 或类型不匹配时,错误信息能定位 key、类型和 backend。
- 如果自动化 PlayMode 准备成本过高,至少要有可重复人工验收步骤与结果记录。
## 当前验证证据
本轮已执行 generated csproj 编译验证:
```powershell
dotnet build "My project\FlowScope.Runtime.csproj" --no-restore
dotnet build "My project\FlowScope.Tests.EditMode.csproj" --no-restore
dotnet build "My project\FlowScope.Tests.PlayMode.csproj" --no-restore
```
结果:
- `FlowScope.Runtime.csproj`0 error。
- `FlowScope.Tests.EditMode.csproj`0 error。
- `FlowScope.Tests.PlayMode.csproj`0 error。
- 存在 Unity generated csproj 常见引用冲突 warning主要涉及 `System.Net.Http``System.Security.Cryptography.Algorithms``System.ComponentModel.Annotations`
未完成验证:
- 本轮未执行 Unity Test Runner 全量 EditMode。
- 本轮未执行 Unity Test Runner 全量 PlayMode。
- 本轮未执行 MainMenuP0 人工场景验收。
- 本轮未执行真实 Addressables load/release 验收。
## P2 第一阶段并行任务边界
### Task APackage / 安装接入文档
Owned files
- `docs/guides/flowscope-package-layout.md`
- `docs/guides/flowscope-installation.md`
- 可选:`docs/reviews/p2-phase1-baseline-audit.md` 的补充备注
Do not modify
- `My project/Assets/FlowScope/Runtime`
- `My project/Assets/FlowScope/Addressables`
- `My project/Assets/FlowScope/Editor`
- `My project/Assets/FlowScope/Samples`
- `My project/Assets/FlowScope/Tests`
验收:
- 文档说明标准 Unity Package 目标结构。
- 文档说明第一阶段为什么暂不搬迁 Runtime/Samples/Tests。
- 安装文档覆盖本地 package path、Git URL、Assets 开发模式。
- Bootstrap 示例只使用当前真实 API 名称。
### Task BAddressables 真实验收
Owned files
- `My project/Assets/FlowScope/Tests/PlayMode/Resources/AddressablesResourceBackendTests.cs`
- 必要的最小测试资源及 `.meta`
- `docs/reviews/addressables-integration-acceptance.md`
Do not modify
- `My project/Assets/FlowScope/Runtime`
- `My project/Assets/FlowScope/Addressables/AddressablesResourceBackend.cs`,除非测试证明当前实现存在真实 bug
- Package 文档与 Editor 文件
验收:
- 优先提供自动化 PlayMode 测试证明真实资源 load/release。
- 若自动化资源维护成本过高,必须提供可重复人工验收步骤、预期结果和未自动化原因。
- `dotnet build "My project\FlowScope.Tests.PlayMode.csproj" --no-restore` 保持 0 error。
### Task CEditor 最小诊断入口
Owned files
- `My project/Assets/FlowScope/Editor/FlowScope.Editor.asmdef`
- `My project/Assets/FlowScope/Editor/FlowScopeDiagnosticsWindow.cs`
- 必要 `.meta`
- 可选:`docs/guides/flowscope-editor-diagnostics.md`
Do not modify
- Runtime、Addressables、Samples、Tests 实现文件。
- 不自动生成、移动、删除用户资源。
验收:
- Unity Editor 中有 `Tools/FlowScope/Diagnostics` 菜单入口。
- 窗口只检查并输出状态,不自动修复。
- 检查 Addressables package、Runtime asmdef、Addressables asmdef、MainMenuP0 关键场景和 prefab 是否存在。
- generated csproj 编译保持 0 error。
## 第一阶段完成 Gate
P2 第一阶段完成前必须满足:
1. `FlowScope.Runtime.csproj``FlowScope.Tests.EditMode.csproj``FlowScope.Tests.PlayMode.csproj` generated build 均为 0 error。
2. Unity Test Runner 全量 EditMode / PlayMode 至少有明确执行记录;若无法执行,必须记录原因。
3. Addressables adapter 有真实集成验收记录,不再只靠 `Name_ReturnsAddressables`
4. 新增 package/editor 内容不破坏 `Assets/FlowScope` 当前开发模式。
5. 文档说明安装、接入、验证、已知限制和后续迁移边界。
6. 所有提交信息使用中文。
## 第一阶段之后
第一阶段完成后进入 P2 第二阶段:本地 package 试迁移。
第二阶段才开始创建真正 package 目录雏形并用本地 path 在干净 Unity 项目验证安装。Runtime、Addressables、Samples、Tests 的物理迁移应分批进行,不应在第一阶段一次性搬迁。