Files
FlowScope/docs/reviews/p2-phase1-baseline-audit.md
2026-06-04 11:33:59 +08:00

172 lines
7.2 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.
# 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 的物理迁移应分批进行,不应在第一阶段一次性搬迁。