From d6168299889f2049f9f9c3bb8e0cba8f20674b6c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 19 May 2026 10:23:36 +0800 Subject: [PATCH] Add run.md with operation-system bring-up instructions Covers manual migration (db.rs intentionally does not auto-migrate), env vars (DATABASE_URL / OPS_SERVER_HOST / OPS_SERVER_PORT / RUST_LOG / OPS_SEED_TEMPLATES / SIMULATE_PLC), dev + release run commands, verification endpoints, and a no-PLC end-to-end smoke flow using the seed + simulator. Co-Authored-By: Claude Opus 4.7 (1M context) --- run.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 run.md diff --git a/run.md b/run.md new file mode 100644 index 0000000..1f20cb3 --- /dev/null +++ b/run.md @@ -0,0 +1,63 @@ +# 怎么运行 operation-system + +## 1. 准备数据库 + +应用启动**不会自动执行迁移**(`db.rs:13` 注释:「如有迁移请手动执行」),第一次启动前要把 `migrations/` 目录里的 SQL 跑到 Postgres 里: + +```bash +# 任选一种 +sqlx migrate run --source migrations +# 或用 psql / DataGrip 直接执行 migrations/*.sql 按文件名升序 +``` + +仓库根目录已有 `.env`,指向远程 `postgresql://postgres:zcDsj%402024@10.0.11.51:5432/gateway`。要本地跑就在 `.env` 里改 `DATABASE_URL`。 + +## 2. 设置环境变量 + +`.env` 会被 `bootstrap::init_process` 通过 `dotenv` 自动加载,所以直接改 `.env` 或在 shell 里 export 都行。 + +| 变量 | 默认 | 说明 | +| --- | --- | --- | +| `DATABASE_URL` | **必填** | Postgres 连接串 | +| `OPS_SERVER_HOST` | `127.0.0.1` | 监听 host | +| `OPS_SERVER_PORT` | `3100` | 监听端口 | +| `RUST_LOG` | — | 建议 `info` | +| `OPS_SEED_TEMPLATES` | 关 | 设为 `1` 启动时自动写入 12 段 + 11 工位骨架 | +| `SIMULATE_PLC` | 关 | 设为 `1` 引擎发命令后自动回写确认信号,无需 PLC 也能跑通段 | + +## 3. 启动 + +```bash +# 开发态 +cargo run -p app_operation_system + +# 或带种子 + 模拟器,方便首次端到端验证 +OPS_SEED_TEMPLATES=1 SIMULATE_PLC=1 cargo run -p app_operation_system + +# 打 release exe +cargo build -p app_operation_system --release +# 产物在 target\release\app_operation_system.exe +``` + +启动日志会打印 `Starting operation-system server at http://127.0.0.1:3100`。 + +## 4. 验证 + +- 健康检查 — `curl http://127.0.0.1:3100/api/health` → 返回 `operation-system:ok` +- 段总览 — `curl http://127.0.0.1:3100/api/runtime/overview` +- 前端 — 浏览器打开 `http://127.0.0.1:3100/ui/`,左上角两个 tab: + - **运行监控** — 段卡片 + WebSocket 实时刷新 + 启停 / 故障确认 / 复位 + - **段 / 工位配置** — 工位 CRUD(含信号绑定)和段 CRUD(含步骤 / 联锁 / 资源声明) + +## 5. 端到端冒烟(无 PLC) + +1. 用 `OPS_SEED_TEMPLATES=1 SIMULATE_PLC=1` 启动。 +2. 浏览器进 **段 / 工位配置**,挑一个段(例如 `SEG-DRY1-INFEED`),把 `mode` 改成 `auto`。 +3. 切到 **运行监控**,点该卡片的「启动」。 +4. 看着卡片上 state 从 `idle` → `checking` → `executing` → `confirming` → 下一步循环(因为 `SIMULATE_PLC` 在每步派发后会注入确认信号)。 + +## 注意事项 + +- 与 feeder 同时跑没问题:进程互斥名是 `PLCControl.OperationSystem`,端口默认 3100(feeder 是 60309)。 +- Windows release 用 `windows_subsystem = "windows"`,不出黑窗;要看日志直接打开 `logs/` 下的 `app.log*`,或者从命令行跑 debug build。 +- OPC UA 数据源在 `source` 表里配,启动时 `connect_all_enabled_sources` 会自动连。没配数据源不影响 UI / 段配置使用。