Aethiumian.AI Graph 编辑器开发流程¶
本页定义 Aethiumian.AI Graph Editor 的开发与验证流程,目标是在保留交付门槛的前提下提高反馈速度。
修改前检查¶
- 确认行为语义、所属边界、受影响的表现层类型与验收标准。
- 检查当前包内变更范围并保留无关资产。
- 将实现与聚焦测试打包在同一批次提交,避免在完整回归后才补普通用例。
仅 USS 的视觉迭代¶
当修改 AI Editor Graph 的颜色、透明度、线宽、图案等 .ai-editor-graph-canvas 自定义属性时,按该路径处理。
- 编辑
AIEditorWindow.uss,等待 Unity 导入样式表完成。 - 在已打开的 Graph 页面中选取一个代表性树进行观察;若 live visual tree 未刷新,关闭后重开该标签页。
- 不要为每次视觉微调发起脚本重编译,也不要运行拓扑测试。USS 导入不应触发程序集重载。
- 视觉稳定后,只运行覆盖样式解析且不修改资产的最窄窗口冒烟测试。
节点尺寸、表现几何、布局间距、拓扑与执行语义属于 C# 范畴,这类改动不走 USS-only 路径。
C# 可视化或交互迭代¶
- 在请求重编译前,完成一组完整实现和聚焦测试。
- 重编译一次并等待终态结果。
- 先发现并执行新增或受影响的方法级测试。
- 这组方法通过后,再运行最小受影响套件,例如对应
Aethiumian.AI.Editor.Tests.Graph.GraphCanvasInteractionTests的 Graph Editor 夹具。 - 失败时先修复并复测该方法,确认失败稳定后再重跑套件。
- 文档-only 或仅 test-only 的修正,若不影响生产代码且先前结果仍有效,不要重启完整 Editor 程序集。
提交与交付门槛¶
生产改动提交前或任务准备交付时,按以下门槛执行一次:
- 确认受影响 Editor 测试可被发现。
- 若变更涉及 Graph 表现、布局或交互,运行受影响的 Graph Editor 夹具;跨域 Graph 变更使用
GraphEditor分类。 - 若改动影响 shell、选择、生命周期或窗口归属,运行
AIEditorWindowMultiTreeTests。 - 运行完整
Aethiumian.AI.Editor.Tests程序集一次。 - 运行后清理预期日志,等待编辑器空闲,再检查结构化 Console 错误。
- 对比运行前后 AI Editor 窗口计数;测试必须只关闭由测试自己创建并通过
EditorWindow.Close()释放的窗口。 - 分离审查最终包 diff 与根项目 diff,避免把无关 AI 资产夹带入包提交。
任何后续生产代码改动都会使该门槛失效并要求重新执行;文档-only 改动可跳过。
Graph Editor 夹具选择¶
- 拓扑构建与端口:
GraphTopologyBuilderTests。 - 拓扑引用、集合与重定向校验:
GraphTopologyReferenceEditTests、GraphCollectionEditTests、GraphRedirectValidationTests。 - Decorator 编辑:
GraphDecoratorEditTests。 - 节点生命周期:
GraphNodeLifecycleEditTests。 - 菜单与命令:
GraphCommandMenuTests。 - 基础表现与节点尺寸:
GraphPresentationTests。 - 复合表现族:
GraphCompositePresentationTests。 - 布局、移动、吸附、对齐、分布:
GraphLayoutTests。 - 画布交互、节点面板、视图控制、键盘导航:
GraphCanvasInteractionTests。 - 剪贴板、重复、删除与跨树事务:
GraphClipboardTests。
七类夹具统一归入 GraphEditor 分类。多域 Graph 改动可运行该分类;单域的内循环修复或仅测试变更优先只跑受影响夹具。
证据上报¶
分项报告以下边界:
- 脚本编译;
- 测试发现;
- 精准聚焦用例执行;
- 受影响套件执行;
- 完整 Editor 程序集执行;
- 回到空闲后结构化 Console 状态;
- 人工可视化验收。
初始异步结果若未实际执行测试(executed test count = 0),只能算任务排队,不是执行证据。静态检查与测试发现均不等同于运行证据。
预期反馈时长¶
- 仅 USS 的绘制变更应以样式导入和视觉检查为主,不应强行触发 C# 重编译。
- 小规模 C# Graph 变更一般应在开发期间执行一次编译 + 精准测试 + 一个受影响套件。
- 完整 Editor 程序集执行是最终交付门槛,不是内循环命令。