diff --git a/README.md b/README.md index 4e2e838..a054696 100644 --- a/README.md +++ b/README.md @@ -47,25 +47,59 @@ PLC Control 是一个面向 PLC / OPC UA 场景的本地控制与监控系统, - SSE 推送日志增量 - 日志流默认跟随最新 `app.log*` 文件,支持轮转切换 -## 系统设计 +## 项目结构 -## 后端结构 +```text +plc_control/ + Cargo.toml # Workspace root + crates/ + plc_platform_core/ # 共享平台核心库(配置、数据库、连接、事件、WebSocket 等) + app_feeder_distributor/ # 投煤器布料机专用版 + app_operation_system/ # 运转系统专用版 + web/ + core/ # 共享 HTML/CSS(数据源、点位、设备、图表、日志等) + feeder/ # 投煤器布料机页面 + JS + ops/ # 运转系统页面 + JS +``` -- `src/main.rs` - - 启动 Axum 服务 - - 注册 HTTP 路由、WebSocket 路由和静态页面 -- `src/handler` - - HTTP 接口层 -- `src/service` - - 数据查询与写入封装 -- `src/control` - - 自动控制引擎、运行时存储、手动控制校验、模拟反馈 -- `src/connection.rs` - - OPC UA 连接管理、订阅、轮询、批量写点 -- `src/event.rs` - - 控制事件、实时点位事件和事件持久化 -- `src/websocket.rs` - - WebSocket 房间与实时消息广播 +### 共享平台核心库 (`plc_platform_core`) + +- `model` — 数据模型 +- `db` — 数据库初始化 +- `connection` — OPC UA 连接管理、订阅、轮询、批量写点 +- `service` — 数据查询与写入封装 +- `control/command` — 通用控制命令 +- `control/runtime` — 运行时状态存储 +- `event` — 事件信封与命名空间 +- `websocket` — WebSocket 房间与消息广播 +- `telemetry` — 点位遥测 + +### 业务应用 + +- `app_feeder_distributor` — 投煤器/布料机控制引擎、业务 handler、业务事件 +- `app_operation_system` — 运转系统控制逻辑(开发中) + +## 构建 + +```powershell +# 投煤器布料机 +cargo build -p app_feeder_distributor --release + +# 运转系统 +cargo build -p app_operation_system --release +``` + +## 部署 + +将编译产物和 `web/` 目录放在同一级目录下: + +```text +deploy/ + app_feeder_distributor.exe + web/ + core/ + feeder/ +``` ## 控制引擎设计 @@ -86,22 +120,13 @@ PLC Control 是一个面向 PLC / OPC UA 场景的本地控制与监控系统, ## 前端 Web 设计 -前端采用原生 ES Module 和分片 HTML 结构。 +前端采用原生 ES Module 和分片 HTML 结构,按应用拆分目录: -关键模块: +- `web/core/` — 共享 HTML 面板(数据源、点位、设备、图表、日志、文档抽屉)和样式 +- `web/feeder/` — 投煤器专用入口、运维面板、控制单元表单、全部 JS 模块 +- `web/ops/` — 运转系统专用入口(开发中) -- `web/js/app.js`: 页面启动、视图切换、事件绑定 -- `web/js/ops.js`: 运维视图渲染 -- `web/js/logs.js`: WebSocket 与日志 SSE 处理 -- `web/js/docs.js`: Markdown 文档抽屉 -- `web/js/units.js` / `equipment.js` / `points.js`: 配置视图业务逻辑 - -文档查看入口: - -- 可在前端页面中查看 `API.md` -- 可在前端页面中查看 `README.md` - -两者都通过统一的文档抽屉组件展示。 +每个应用的 Axum 路由使用 `ServeDir` 回退链:先查应用目录,再查 core 目录,URL 路径无需变化。 ## 实时日志设计 @@ -140,6 +165,7 @@ PLC Control 是一个面向 PLC / OPC UA 场景的本地控制与监控系统, ## 文档索引 - API 接口说明: `API.md` +- 双应用共享核心设计: `docs/superpowers/specs/2026-04-14-dual-app-shared-core-design.md` - 控制引擎计划: `docs/superpowers/plans/2026-03-24-control-engine.md` - 双视图前端计划: `docs/superpowers/plans/2026-03-25-dual-view-web.md`