2026-08-27 19:50:57 +08:00
|
|
|
|
# bj_power 项目部署手册
|
|
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
> 五个子项目统一仓库、独立编译、独立部署。(2026-09-07 起原库房客户端 E 并入 WMS,实际为 A/B/C/D 四个可部署服务。)
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
## 一、项目与端口总览
|
|
|
|
|
|
|
|
|
|
|
|
| 项目 | 说明 | 端口 | 技术 |
|
|
|
|
|
|
|------|------|------|------|
|
2026-08-28 14:07:22 +08:00
|
|
|
|
| bj_power_dashboard (A) | 厂门口看板 H5 | 开发 5173 / 生产静态 | React + Zustand + ECharts |
|
2026-08-27 19:50:57 +08:00
|
|
|
|
| bj_power_mes (B) | MES 智能产线控制 | **8888** | Go (go-zero + ent) + 内嵌 Vue3 前端 |
|
2026-09-07 15:55:30 +08:00
|
|
|
|
| bj_power_wms (C) | WMS 仓库系统(后端+前端一体) | **8890** | Go (go-zero + ent) + 内嵌 Vue3 前端 |
|
2026-08-27 19:50:57 +08:00
|
|
|
|
| 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。
|
|
|
|
|
|
|
|
|
|
|
|
数据库约定:
|
2026-08-28 14:07:22 +08:00
|
|
|
|
- MES 库名 `bj_power_mes`;WMS 库名 `bj_power_wms`。两库独立,跨库数据一律走 API。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
- Dashboard 通过 MES 内部接口获取数据(Redis 缓存 60s 过期),业务变更经 SSE `dashboard_update` 实时推送。
|
|
|
|
|
|
- 工位终端拧紧数据本地 SQLite 缓存,点"完成"才上报 MES。
|
|
|
|
|
|
|
2026-08-28 09:22:19 +08:00
|
|
|
|
内部 API 统一 token:`X-API-TOKEN: Hardman_2026`(各 etc/*.yaml 中 `Internal.Token` / `Wms.Token` 可改,各项目 JWT AccessSecret 也统一为该值)。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
## 二、准备
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 创建 PostgreSQL 数据库
|
|
|
|
|
|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
程序会在需要时**自动检查并创建对应数据库**(连接 postgres 维护库检查目标库,不存在则 CREATE DATABASE),因此多数场景无需手工建库:
|
|
|
|
|
|
|
|
|
|
|
|
| 项目 | 数据库 | 自动建库时机 |
|
|
|
|
|
|
|------|--------|-------------|
|
|
|
|
|
|
| bj_power_mes (B) | `bj_power_mes` | 执行 MES `migrate` / `reset-all` / `seed` 任意命令时自动检查并创建 |
|
|
|
|
|
|
| bj_power_wms (C) | `bj_power_wms` | **WMS 服务启动时**自动检查并创建 |
|
|
|
|
|
|
| 工位终端 (D) | 本地 `workstation.db`(SQLite) | 首次启动自动创建,无需 PostgreSQL |
|
|
|
|
|
|
|
|
|
|
|
|
如仍想手工创建,等价 SQL:
|
|
|
|
|
|
|
2026-08-27 19:50:57 +08:00
|
|
|
|
```sql
|
2026-08-28 14:07:22 +08:00
|
|
|
|
CREATE DATABASE bj_power_mes; -- MES
|
2026-08-27 19:50:57 +08:00
|
|
|
|
CREATE DATABASE bj_power_wms; -- WMS
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
连接信息默认 `postgres/postgres@127.0.0.1:5432`,不一致时修改:
|
2026-08-28 14:07:22 +08:00
|
|
|
|
- `bj_power_mes/etc/bj_power_mes-api.yaml` → Database 段(建表工具 migrate 也读此段,无硬编码)
|
2026-08-27 19:50:57 +08:00
|
|
|
|
- `bj_power_wms/etc/bj_power_wms-api.yaml` → Postgres 段
|
|
|
|
|
|
|
|
|
|
|
|
Redis 不一致时同样改上述 yaml 的 Redis 段。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 初始化表结构与种子数据
|
|
|
|
|
|
|
|
|
|
|
|
WMS 启动时自动建表并预置数据,无需手工操作。
|
2026-08-29 15:30:25 +08:00
|
|
|
|
默认账号:`admin/123456`、`store1/123456`(出库)、`insp1/123456`(检验)。**所有账号统一初始密码:`123456`**。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
2026-08-28 17:03:03 +08:00
|
|
|
|
MES 表结构需手工执行一次迁移(**必须输入管理员密码才生效**):
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
cd d:\hardman\bj_power\bj_power_mes
|
2026-08-29 15:30:25 +08:00
|
|
|
|
.\bj_power_mes.exe migrate # 输入管理员密码(默认 Hardman_2026,独立于后台登录密码)
|
2026-08-27 19:50:57 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-28 17:03:03 +08:00
|
|
|
|
> 或者对全新/可丢弃的库直接 `.\bj_power_mes.exe reset-all`(清空重建全部表,不可恢复)。
|
|
|
|
|
|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
MES 启动时会自动 Seed 数据(见 internal/logic/seed.go):默认角色(SUPER_ADMIN/OPERATOR/INSPECTOR)、菜单权限、12 道工序步骤、12 工位↔工序派工。默认账号:`admin / 123456`。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
## 三、编译与运行
|
|
|
|
|
|
|
|
|
|
|
|
### 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)。
|
2026-08-28 15:06:01 +08:00
|
|
|
|
- 若需改 MES 前端源码:`cd frontend && npm install && npm run build`,产物输出到 `../public/` 后重新 `go build`。
|
|
|
|
|
|
- PLC 默认 `Host: 127.0.0.1:102` 且 `Plc.Enable: false`(模拟模式,直接写工序码+读完成信号逻辑);真实设备改 yaml 中 Plc.Host/Port 并 Enable: true。
|
|
|
|
|
|
- 本产线仅有「扫码枪+拧紧枪」,无 AGV/机器人/接驳台/CNC/清洗机等设备,前端无相关页。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
### C — WMS(后端+前端一体)
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
cd d:\hardman\bj_power\bj_power_wms
|
|
|
|
|
|
go build -o bj_power_wms.exe .
|
|
|
|
|
|
.\bj_power_wms.exe
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
服务 :8890,首次启动自动建表+种子数据。内嵌前端页面,浏览器打开 http://127.0.0.1:8890。
|
2026-08-28 15:06:01 +08:00
|
|
|
|
若需改前端:`cd frontend && npm install && npm run build` 后重新编译 Go。
|
2026-09-07 15:55:30 +08:00
|
|
|
|
出入库两台台式机无需单独部署客户端(原 8891 库房客户端已并入),浏览器直接访问 8890 即可;扫码枪为 USB 键盘口(HID)设备,页面输入框直接读取。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
### 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;
|
2026-08-28 09:22:19 +08:00
|
|
|
|
proxy_set_header X-API-TOKEN "Hardman_2026";
|
2026-08-27 19:50:57 +08:00
|
|
|
|
proxy_http_version 1.1;
|
|
|
|
|
|
proxy_set_header Connection "";
|
|
|
|
|
|
proxy_buffering off; # SSE 必须关缓冲
|
|
|
|
|
|
proxy_read_timeout 24h;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. 或简单场景直接用 vite dev 常驻(vite.config.ts 已内置同样的代理规则)。
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
2026-08-28 14:07:22 +08:00
|
|
|
|
- 看板数据(概览/工位状态划/工单进度/报警/趋势)全部来自 MES `/api/internal/dashboard/*`(Redis 60s 缓存),SSE 实时刷新 + 10s 轮询兜底。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
2026-08-28 17:03:03 +08:00
|
|
|
|
## 四、MES 命令行维护命令(需管理员密码)
|
|
|
|
|
|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
所有涉及建表/清库/改密的命令**都必须先输入管理员密码**(默认 `Hardman_2026`,独立于后台登录密码),密码错误会记录日志并终止,绝不执行。所有命令均写入按天日志 `bj_power_mes/logs/bj_power_mes-YYYY-MM-DD.log`。
|
2026-08-28 17:03:03 +08:00
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
cd d:\hardman\bj_power\bj_power_mes
|
|
|
|
|
|
|
|
|
|
|
|
.\bj_power_mes.exe migrate # 建表/补列(只增,不删数据)——常规升级用
|
|
|
|
|
|
.\bj_power_mes.exe reset-all # 清空并重建全部表 + 写基础数据(破坏性,不可恢复)
|
|
|
|
|
|
.\bj_power_mes.exe seed # 仅对齐基础数据(角色/admin/菜单/工序模板/工位派工)
|
|
|
|
|
|
.\bj_power_mes.exe serve # 正常运行服务(可省略;默认即 serve)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
要点(三条命令执行前都会**自动检查并创建 `bj_power_mes` 数据库**,若不存在则自动新建):
|
|
|
|
|
|
- 门禁密码配置在 `etc/bj_power_mes-api.yaml` 的 `Cli.AdminPassword`(默认 `Hardman_2026`,独立于后台登录密码)。
|
2026-08-28 17:03:03 +08:00
|
|
|
|
- 明文传给命令执行审计:每次成功/失败均在日志记录时间与命令名。
|
|
|
|
|
|
- 生产升级流程:`migrate` → `serve`;如曾存在旧版本不兼容库,先手工确认后 `reset-all`。
|
|
|
|
|
|
- 用户改密码在**管理后台登录后**「修改密码」完成(`POST /api/v1/user/change-password`),命令行不改密。
|
|
|
|
|
|
|
|
|
|
|
|
## 五、各系统管理员账号(部署后请尽快修改默认密码)
|
|
|
|
|
|
|
|
|
|
|
|
| 系统 | 管理员账号 | 默认密码 | 修改方式 |
|
|
|
|
|
|
|------|-----------|---------|---------|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
| MES (B) | admin | `123456` | 管理后台登录后点右上「修改密码」(旧密码+新密码)|
|
|
|
|
|
|
| WMS (C) | admin | `123456` | WMS 登录后改密,或直接改 `bj_power_wms` 数据库 users 表 |
|
|
|
|
|
|
| 工位终端 (D) | admin / operator1 | `123456` / `123456` | 终端登录后改密,或直接改本地 `workstation.db`(SQLite)users 表 |
|
2026-08-28 17:03:03 +08:00
|
|
|
|
| 看板 (A) | 无登录账号 | — | 只读,无管理员 |
|
|
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
> 工位终端若需与 MES/WMS 一致的统一密码,请在对应 yaml/种子中调整后再部署。
|
2026-08-28 17:03:03 +08:00
|
|
|
|
|
|
|
|
|
|
## 六、启动顺序与验证
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
顺序:PostgreSQL/Redis → MES(8888) → WMS(8890) → 工位终端 → Dashboard。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
验证清单:
|
|
|
|
|
|
|
|
|
|
|
|
| 检查项 | 方法 |
|
|
|
|
|
|
|--------|------|
|
2026-08-29 15:30:25 +08:00
|
|
|
|
| MES 健康 | 浏览器开 http://127.0.0.1:8888 能看到登录页,admin/123456 登录成功 |
|
2026-08-28 15:06:01 +08:00
|
|
|
|
| WMS 健康 | `curl http://127.0.0.1:8890/api/health` 返回 JSON,或 `curl -H "X-API-TOKEN: Hardman_2026" http://127.0.0.1:8890/api/internal/stock/query` |
|
2026-08-27 19:50:57 +08:00
|
|
|
|
| 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 追溯页查询 |
|
|
|
|
|
|
|
2026-08-28 17:03:03 +08:00
|
|
|
|
## 七、常见问题
|
2026-08-27 19:50:57 +08:00
|
|
|
|
|
2026-09-07 15:55:30 +08:00
|
|
|
|
1. **前端依赖/构建**:所有前端(MES frontend / WMS frontend / 工位终端 / 看板)一律 `npm install && npm run build`,无需 pnpm。
|
2026-08-28 15:06:01 +08:00
|
|
|
|
2. **ent 代码生成**:改 schema 后须到对应目录执行 `go generate ./...`(MES:`cd bj_power_mes/schema && go generate ./...`;WMS:`cd bj_power_wms/schema && go generate ./...`)。
|
2026-08-27 19:50:57 +08:00
|
|
|
|
3. **PowerShell 下批处理改名会损坏含中文注释的 Go 文件编码**——本仓库所有中文文件均已是 UTF-8,请勿用旧版 PowerShell 对源码批量改名。
|
2026-08-28 15:06:01 +08:00
|
|
|
|
4. **PLC 连不上**:确认 yaml `Plc.Enable: false`(模拟)可先行联调;上真机再 Enable: true 并核对 S7 地址/机架槽位。
|
|
|
|
|
|
5. **看板监控页一直显示空态**:本产线仅「扫码枪+拧紧枪」,看板只展示装配线实时数据,勿按旧模型(CNC/清洗机等)判断。
|