# bj_power 项目部署手册 > 五个子项目统一仓库、独立编译、独立部署。 ## 一、项目与端口总览 | 项目 | 说明 | 端口 | 技术 | |------|------|------|------| | 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),无前端 | | 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 库名 `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 数据库 ```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/admin123`、`store1/123456`(出库)、`insp1/123456`(检验)。 MES 表结构需手工执行一次迁移: ```powershell cd d:\hardman\bj_power\bj_power_mes go run schema/tools/migrate.go ``` MES 启动时会自动 Seed 数据(见 internal/logic/seed.go):默认角色(SUPER_ADMIN/OPERATOR/INSPECTOR)、菜单权限、12 道工序步骤、12 工位↔工序派工。默认账号:`admin / Hardman_2026`。 ## 三、编译与运行 ### 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,首次启动自动建表+种子数据。 ### 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 && npm install && npm run 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 "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 轮询兜底。 ## 四、启动顺序与验证 顺序:PostgreSQL/Redis → MES(8888) → WMS(8890) → 工位网关/终端 → Dashboard。 验证清单: | 检查项 | 方法 | |--------|------| | MES 健康 | 浏览器开 http://127.0.0.1:8888 能看到登录页,admin/Hardman_2026 登录成功 | | 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 / 工位终端 / 库房客户端 / 看板)一律 `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/清洗机等)判断。