diff --git a/AGENTS.md b/AGENTS.md index 78301d2..279b410 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -35,6 +35,7 @@ mingw32-make -j2 - 文件读写、终端查看和源代码统一使用 UTF-8。 - 一键构建并运行 Debug 程序:`pwsh -NoLogo -NoProfile -File .\scripts\build_and_run_qt.ps1`。 - 一键构建并运行 Release 程序:`pwsh -NoLogo -NoProfile -File .\scripts\build_and_run_qt.ps1 -Configuration Release`。 +- 打开 ui 文件:` & 'D:\Qt5.15.2\5.15.2\mingw81_64\bin\designer.exe' '.\app\src\ui\main_window.ui'` ## Git 提交约定 diff --git a/docs/architecture.md b/docs/architecture.md index 9448ba5..b541d7a 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -75,7 +75,8 @@ main.cpp -> UI + Services + Infrastructure `services/HmiEditorService` 负责 HMI 页面的控件添加、删除、移动和属性更新,不依赖 Qt 图元。 `ui/HmiEditorWidget` 使用 `QGraphicsScene` 将模型投影为画布项,画布项只保存控件标识,移动结束后 -才通过编辑服务提交新位置。保存时由 `Project::validate()` 拒绝缺失必需绑定或绑定区域错误的控件。 +才通过编辑服务提交新位置。草稿保存时 `Project::validate()` 只拒绝已填写但区域错误或非法的绑定; +进入离线运行前 `Project::validateForRunning()` 要求必需绑定完整。 `RegisterRepository` 是 HMI、逻辑执行器和运行服务唯一可见的寄存器边界。离线运行使用 `VirtualRegisterRepository`;真机运行后续注入由基础设施层实现的 PLC 缓存仓库。仓库读取的是 @@ -95,7 +96,8 @@ main.cpp -> UI + Services + Infrastructure 线圈表达。该结构是后续软件逻辑执行器的确定性求值契约,不需要通用图遍历或连接表。 `services/LogicEditorService` 负责新增和删除网络、追加串联条件、增加并联条件、设置输出线圈、 -修改属性和删除节点。空网络可作为编辑占位;非空网络保存时必须同时具备条件和输出线圈。 +修改属性和删除节点。空网络和未完成网络均可作为编辑草稿保存;进入离线运行前,非空网络必须同时 +具备条件和输出线圈,且所有节点均已配置。 `ui/LogicEditorWidget` 自动排列左右母线、串联级、并联支路和右侧线圈,不允许自由拖动或手动画线, 也不保存像素坐标。编辑器通过服务提交修改,不访问 HMI、寄存器仓库或 PLC。