综合平台编程器项目的远程存储
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

6.7 KiB

Current Handoff

  • Goal: 完成综合平台编程器的工程管理和后续编辑功能。
  • Branch: main
  • Current status: 已完成开发顺序第 6 步,HMI 编辑器、工程保存加载闭环和离线 HMI 寄存器适配已完成。
  • Changed files:
    • app/integrated_platform.pro
    • app/src/main.cpp
    • app/src/ui/main_window.h
    • app/src/ui/main_window.cpp
    • app/src/ui/main_window.ui
    • AGENTS.md
    • docs/C++代码规范.md
    • docs/architecture.md
    • app/src/domain/.gitkeep
    • app/src/services/.gitkeep
    • app/src/infrastructure/.gitkeep
    • app/tests/.gitkeep
    • scripts/build_and_run_qt.ps1
    • app/src/domain/register_address.h
    • app/src/domain/register_address.cpp
    • app/src/domain/register_repository.h
    • app/src/domain/register_repository.cpp
    • app/src/domain/hmi_model.h
    • app/src/domain/hmi_model.cpp
    • app/src/domain/control_logic_model.h
    • app/src/domain/control_logic_model.cpp
    • app/src/domain/project_model.h
    • app/src/domain/project_model.cpp
    • app/src/domain/runtime_state.h
    • app/src/domain/runtime_state.cpp
    • app/src/domain/project_storage.h
    • app/src/services/project_service.h
    • app/src/services/project_service.cpp
    • app/src/services/hmi_editor_service.h
    • app/src/services/hmi_editor_service.cpp
    • app/src/services/hmi_runtime_service.h
    • app/src/services/hmi_runtime_service.cpp
    • app/src/services/runtime_mode_service.h
    • app/src/services/runtime_mode_service.cpp
    • app/src/infrastructure/json_project_storage.h
    • app/src/infrastructure/json_project_storage.cpp
    • app/tests/domain_tests.pro
    • app/tests/domain_tests.cpp
    • app/tests/project_management_tests.pro
    • app/tests/project_management_tests.cpp
    • app/tests/hmi_editor_service_tests.pro
    • app/tests/hmi_editor_service_tests.cpp
    • app/tests/runtime_mode_service_tests.pro
    • app/tests/runtime_mode_service_tests.cpp
    • app/tests/main_window_tests.pro
    • app/tests/main_window_tests.cpp
    • app/src/ui/hmi_editor_widget.h
    • app/src/ui/hmi_editor_widget.cpp
  • Decisions made:
    • Qt 应用源码位于 app/,构建输出位于被忽略的 build/
    • 使用 qmake、Qt Widgets、Qt SerialBus 和 MinGW 8.1。
    • 主窗口只承载基础界面,不承担 PLC 通信或控制逻辑。
    • 简单函数、构造函数和析构函数不添加重复性注释。
    • 生产代码按 UI -> Services -> Domain 的方向依赖;基础设施实现领域接口。
    • 领域模型仅使用 C++17 标准库,不依赖 Qt UI、串口或 Modbus。
    • M 地址只承载布尔值,D 地址只承载带符号 16 位值,地址范围统一为 0~4000
    • RegisterRepository 统一虚拟寄存器和真实 PLC 缓存的访问契约。
    • ProjectStorage 是领域层的工程文件存储契约,具体 JSON 和 Qt 文件 API 位于基础设施层。
    • ProjectService 负责工程路径、修改状态和新建保存加载流程;加载成功后才替换当前工程。
    • 工程文件格式版本当前为 1.0,保存使用 QSaveFile 原子提交。
    • 控制逻辑节点使用 std::variant 组合触点、线圈和数值比较的独立配置类型。
    • 当前控制逻辑范围不包含定时器;不得因为设备手册或旧开发计划提前加入未确认功能。
    • 新增逻辑节点时增加独立配置类型,不向通用节点结构堆叠无关可选字段。
    • 测试按业务风险分级 优先覆盖领域规则 服务闭环 工程存储和通信异常 不为简单访问器堆叠单测。
    • 运行态之间不可直接切换;真机运行态必须先完成 PLC 初次读取,且不运行软件逻辑执行器。
    • 主窗口采用工程树、中央编辑标签页、属性区、输出区和状态栏组成的可停靠工具布局。
    • 编辑、离线运行和真机运行共用一个互斥模式入口,切换规则由服务层调用领域状态机。
    • RuntimeModeService 直接复用领域模式、策略和结果类型,不维护一比一的服务层副本。
    • 运行态禁用工程树和属性编辑区,中央页面保持可见供后续 HMI 运行画面使用。
    • 当前尚未接入 PLC 通信,真机运行入口会按领域规则提示先连接并完成首次读取。
    • 项目代码不使用自定义命名空间,分层由目录、接口和依赖方向表达。
    • HmiEditorService 负责页面控件的添加、删除、移动和属性修改,画布项只保存控件标识。
    • 控件拖动必须限制在页面内,控件标识在页面内唯一,保存前校验必需 M/D 绑定。
    • 新增控件先以未绑定状态进入编辑器,避免自动分配地址造成误绑定。
    • 离线运行的按钮采用点击切换 M 位语义,数值输入写入一个带符号 16 位 D 字。
    • HmiRuntimeService 仅通过 RegisterRepository 访问寄存器,不依赖虚拟寄存器、串口或 Modbus。
  • Validation run and results:
    • build/baseline/ 执行 qmake 与 mingw32-make -j2,构建成功。
    • 已启动 integrated_platform.exe 并正常退出。
    • 已通过 scripts/build_and_run_qt.ps1 完成 Debug 构建和启动验证。
    • 新增分层目录后再次完成 Debug 构建和启动验证。
    • 已确认构建目录、临时目录和本地草稿文档被 .gitignore 忽略。
    • build/core-model/ 重新执行 qmake 和 mingw32-make -j2,应用构建成功。
    • build/domain-tests/ 构建并运行领域测试,输出 domain tests passed
    • 控制逻辑节点配置重构后再次构建应用和领域测试,均通过。
    • build/project-management-tests/ 构建并运行工程管理测试,输出 project management tests passed
    • 工程管理加入应用后重新执行 Qt 应用构建,构建成功。
    • build/main-window/ 构建主窗口和运行模式服务,Qt 5.15.2 Debug 构建成功。
    • 运行模式服务测试输出 runtime mode service tests passed
    • 主窗口模式工作流测试输出 main window tests passed
    • 使用当前工作树重新构建并运行领域测试,输出 domain tests passed
    • 启动 Debug 应用完成窗口响应冒烟检查,程序正常启动和退出。
    • 移除自定义命名空间后,Release 应用及五个测试工程构建成功,全部测试通过。
    • build/hmi-editor/ 重新构建 Release 应用,构建成功并完成启动冒烟检查。
    • build/hmi-editor-service-tests/ 构建并运行 HMI 服务测试,输出 HMI editor service tests passed
    • 重新构建并运行领域、工程管理和主窗口测试,全部通过。
  • Remaining work: 进入开发顺序第 7 步,实现控制逻辑编辑器。
  • Known risks / blockers: 无。
  • Suggested next command: 为控制逻辑建立独立图形编辑器和服务层编辑用例。