feat: 五项目业务实现并对接完成
- MES(B): 工单/BOM/备料/工序字典/PLC下发/拧紧/扫码报工/半成品/AGV/追溯逻辑,WMS与海康RCS客户端,看板Redis缓存API(概览/设备/进度/报警/趋势)+SSE - WMS(C): JWT滑动续签、Excel导入、盘点、内部API、种子数据、独立Postgres配置 - WMS客户端(E): Go网关8891反向代理+内嵌Vue3十页 - 工位终端(D): SQLite本地缓存+模拟拧紧源+内嵌Vue3页面 - Dashboard(A): 看板数据改接MES内部缓存API,SSE实时刷新+vite代理 - 清理各项目球形磨遗留代码,新增部署手册.md
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# bj_power 项目部署手册
|
||||
|
||||
> 五个子项目统一仓库、独立编译、独立部署。
|
||||
|
||||
## 一、项目与端口总览
|
||||
|
||||
| 项目 | 说明 | 端口 | 技术 |
|
||||
|------|------|------|------|
|
||||
| bj_power_dashboard (A) | 厂门口看板 H5 | 开发 5173 / 生产静态 | Vue3 + React 架构前端(React + Zustand + ECharts) |
|
||||
| bj_power_mes (B) | MES 智能产线控制 | **8888** | Go (go-zero + ent) + 内嵌 Vue3 前端 |
|
||||
| bj_power_wms (C) | WMS 仓库系统后端 | **8890** | Go (go-zero + ent),无前端 |
|
||||
| bj_power_wms_client (E) | WMS 出入库工位网关(扫码枪) | **8891** | Go 网关 + 内嵌 Vue3 十页 |
|
||||
| bj_power_workstation (D) | 12 个工位终端软件 | **8892** | Go + 内嵌 Vue3 + SQLite 本地缓存 |
|
||||
|
||||
依赖:PostgreSQL ≥14(127.0.0.1:5432)、Redis ≥6(127.0.0.1:6379)、Go ≥1.22、Node.js ≥18。
|
||||
|
||||
数据库约定:
|
||||
- MES 库名 `back_cover`;WMS 库名 `bj_power_wms`。两库独立,跨库数据一律走 API。
|
||||
- Dashboard 通过 MES 内部接口获取数据(Redis 缓存 60s 过期),业务变更经 SSE `dashboard_update` 实时推送。
|
||||
- 工位终端拧紧数据本地 SQLite 缓存,点"完成"才上报 MES。
|
||||
|
||||
内部 API 统一 token:`X-API-TOKEN: bj-power-internal-2026`(各 etc/*.yaml 中 `Internal.Token` / `Wms.Token` 可改)。
|
||||
|
||||
## 二、准备
|
||||
|
||||
### 1. 创建 PostgreSQL 数据库
|
||||
|
||||
```sql
|
||||
CREATE DATABASE back_cover; -- MES
|
||||
CREATE DATABASE bj_power_wms; -- WMS
|
||||
```
|
||||
|
||||
连接信息默认 `postgres/postgres@127.0.0.1:5432`,不一致时修改:
|
||||
- `bj_power_mes/etc/bj_power_mes-api.yaml` → Database 段
|
||||
- `bj_power_wms/etc/bj_power_wms-api.yaml` → Postgres 段
|
||||
- `bj_power_mes/schema/tools/migrate.go` 第 25 行 DSN
|
||||
|
||||
Redis 不一致时同样改上述 yaml 的 Redis 段。
|
||||
|
||||
### 2. 初始化表结构与种子数据
|
||||
|
||||
WMS 启动时自动建表并预置数据,无需手工操作。
|
||||
默认账号:`admin/admin123`、`store1/123456`(出库)、`insp1/123456`(检验)。
|
||||
|
||||
MES 表结构需手工执行一次迁移:
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_mes
|
||||
go run schema/tools/migrate.go
|
||||
# (可选)导入基础数据:doc/data.sql、doc/signals.sql 等,详见 doc/README_DB.md
|
||||
```
|
||||
|
||||
MES 默认账号:`admin/123456`(见 doc/data.sql)。
|
||||
|
||||
## 三、编译与运行
|
||||
|
||||
### B — MES(先启动)
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_mes
|
||||
go build -o bj_power_mes.exe .
|
||||
.\bj_power_mes.exe
|
||||
```
|
||||
|
||||
- 服务 :8888;访问 http://127.0.0.1:8888 即内嵌登录页(前端已构建进 `public/` 并 go:embed)。
|
||||
- 若需改 MES 前端源码:`cd frontend && pnpm install && pnpm build`,产物输出到 `../public/` 后重新 `go build`。
|
||||
- PLC 默认 `Host: 127.0.0.1:102` 且 `Mock.Enable: true`(模拟模式);真实设备改 yaml 中 PLC.Host 与 ConnectType。
|
||||
- AGV 海康 RCS 默认模拟模式(`AgvRcs.Sim: true`)。
|
||||
|
||||
### C — WMS 后端
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_wms
|
||||
go build -o bj_power_wms.exe .
|
||||
.\bj_power_wms.exe
|
||||
```
|
||||
|
||||
服务 :8890,首次启动自动建表+种子数据。
|
||||
|
||||
### E — WMS 工位网关(出入库两台台式机各部署一份)
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_wms_client
|
||||
go build -o bj_power_wms_client.exe .
|
||||
.\bj_power_wms_client.exe
|
||||
```
|
||||
|
||||
服务 :8891,反向代理 WMS 8890 并内嵌前端。浏览器打开 http://127.0.0.1:8891。
|
||||
若需改前端:`cd frontend && pnpm install && pnpm build` 后重新编译 Go。
|
||||
|
||||
### D — 工位终端(12 台触控一体机)
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_workstation
|
||||
go build -o bj_power_workstation.exe .
|
||||
.\bj_power_workstation.exe
|
||||
```
|
||||
|
||||
服务 :8892。配置在 `etc/bj_power_workstation.yaml`:
|
||||
- `Mes.BaseURL` 指向 MES 8888;
|
||||
- `Sqlite.Path` 本地缓存库(默认 workstation.db,与程序同目录);
|
||||
- `Sim.Enable: true` 为拧紧枪模拟数据源,现场接入真实拧紧枪后关闭。
|
||||
|
||||
### A — Dashboard 看板(厂房大屏主机)
|
||||
|
||||
开发调试:
|
||||
|
||||
```powershell
|
||||
cd d:\hardman\bj_power\bj_power_dashboard
|
||||
npm install
|
||||
npm run dev # http://localhost:5173
|
||||
```
|
||||
|
||||
生产部署(二选一):
|
||||
|
||||
1. 构建后由 nginx 托管 dist:
|
||||
|
||||
```powershell
|
||||
npm run build # 产物 dist/
|
||||
```
|
||||
|
||||
nginx 配置要点(关键:`/api/internal` 与 `/sse` 反代到 MES):
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
root /opt/bj_power/dist;
|
||||
|
||||
location /api/internal/ {
|
||||
proxy_pass http://127.0.0.1:8888;
|
||||
proxy_set_header X-API-TOKEN "bj-power-internal-2026";
|
||||
}
|
||||
location /sse {
|
||||
proxy_pass http://127.0.0.1:8888;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_buffering off; # SSE 必须关缓冲
|
||||
proxy_read_timeout 24h;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. 或简单场景直接用 vite dev 常驻(vite.config.ts 已内置同样的代理规则)。
|
||||
|
||||
说明:
|
||||
- 看板 Page1 数据(概览/设备/进度/报警/趋势)全部来自 MES `/api/internal/dashboard/*`(Redis 60s 缓存),SSE 实时刷新 + 10s 轮询兜底;
|
||||
- 设备监控页的 CNC/清洗机明细仍走原有采集通道(本地兜底 :3001),无采集数据时页面显示空态,模拟器仅做本地动画补齐缺失字段并以 SIM 角标标注。
|
||||
|
||||
## 四、启动顺序与验证
|
||||
|
||||
顺序:PostgreSQL/Redis → MES(8888) → WMS(8890) → 工位网关/终端 → Dashboard。
|
||||
|
||||
验证清单:
|
||||
|
||||
| 检查项 | 方法 |
|
||||
|--------|------|
|
||||
| MES 健康 | 浏览器开 http://127.0.0.1:8888 能看到登录页,admin/123456 登录成功 |
|
||||
| WMS 健康 | `curl -H "X-API-TOKEN: bj-power-internal-2026" http://127.0.0.1:8890/api/internal/stock/overview` 返回 JSON |
|
||||
| MES→WMS 联通 | MES 建 BOM 后发起备料,观察库存检查结果 |
|
||||
| 内部接口 | 同上 header 访问 `http://127.0.0.1:8888/api/internal/dashboard/overview` |
|
||||
| SSE 推送 | 看板打开后操作工单下发,看板秒级刷新(DevTools Network → sse 连接 pending) |
|
||||
| 工位终端 | 打开 http://127.0.0.1:8892 登录,扫一个 SN 报工,回 MES 追溯页查询 |
|
||||
|
||||
## 五、常见问题
|
||||
|
||||
1. **`pnpm install` 报 ERR_PNPM_IGNORED_BUILDS**:新版 pnpm 拦截 esbuild 安装脚本。Dashboard 直接用 `npm install && npm run build`;其余前端项目 workspace 里已带 pnpm-workspace.yaml 允许 esbuild。
|
||||
2. **ent 代码生成报错**:须切到对应目录执行,如 MES:`cd schema && go generate ./...`;WMS:`go generate ./tools`。
|
||||
3. **PowerShell 下批处理改名会损坏含中文注释的 Go 文件编码**——本仓库所有中文文件均已是 UTF-8,请勿用旧版 PowerShell 对源码批量改名。
|
||||
4. **PLC 连不上**:确认 yaml `Mock.Enable: true` 可先行联调;上真机再关闭 Mock 并核对 S7 地址/机架槽位。
|
||||
5. **看板监控页一直显示空态**:CNC/清洗机原始数据未接入采集链路属预期降级,不影响 Page1 概览。
|
||||
Reference in New Issue
Block a user