Files
bj_power/部署手册.md
T
SunYF 2544c6141d refactor: 合并原库房客户端到主WMS服务,退役8891端口
1.  将bj_power_wms_client的前端代码、配置及网关逻辑全部迁移到bj_power_wms主项目
2.  删除原库房客户端相关的所有文件与配置
3.  更新README与部署文档,说明合并后的服务架构
4.  新增Web配置项支持自动打开浏览器开关,统一服务端口为8890
2026-09-07 15:55:30 +08:00

197 lines
9.6 KiB
Markdown
Raw Blame History

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