Files
bj_power/部署手册.md
T
SunYF ebf901ad16 chore: 完成多系统功能迭代与优化
1. 通用优化:
   - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀
   - 调整内置账号密码为统一123456,优化密码校验逻辑
   - 新增数据库自动创建逻辑,简化部署流程
   - 修复日志时间格式配置,优化日志输出
   - 新增纯数字密码安全提示

2. MES系统优化:
   - 新增日排产管理功能,支持增删改查与自动算料生成备料单
   - 重构BOM模块,改为按产品编码维护而非工单维度
   - 新增工艺参数模板配置与手动报工页面
   - 新增产品类型自动编码功能
   - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由
   - 新增删除日排产接口与权限保护
   - 修复物料清单查询逻辑,适配新BOM结构
   - 新增refreshToken支持,优化登录会话管理

3. WMS系统优化:
   - 新增基础数据维护页面,支持区域与物料档案管理
   - 新增工单列表下拉接口,对接MES获取未完成工单优先展示
   - 优化入库管理提示文案,替换英文提示为中文
   - 修复精密件入库校验逻辑,优化错误提示
   - 优化Excel导入功能,新增备注字段支持
   - 优化登录页面与菜单文案,统一备料台账名称
   - 新增自动打开浏览器功能,优化客户端启动体验
   - 修复备料出库页面查询提示文案
   - 新增WMS与MES对接配置,完善内部API调用逻辑

4. 其他优化:
   - 删除冗余的旧版静态资源文件,更新资源引用路径
   - 新增帮助文档,完善基础数据模块说明
   - 修复多处文案不统一、英文残留问题
2026-08-29 15:30:25 +08:00

9.7 KiB
Raw Blame History

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 ≥14127.0.0.1:5432)、Redis ≥6127.0.0.1:6379)、Go ≥1.22、Node.js ≥18。

数据库约定:

  • MES 库名 bj_power_mesWMS 库名 bj_power_wms。两库独立,跨库数据一律走 API。
  • Dashboard 通过 MES 内部接口获取数据(Redis 缓存 60s 过期),业务变更经 SSE dashboard_update 实时推送。
  • 工位终端拧紧数据本地 SQLite 缓存,点"完成"才上报 MES。

内部 API 统一 tokenX-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.dbSQLite 首次启动自动创建,无需 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/123456store1/123456(出库)、insp1/123456(检验)。所有账号统一初始密码:123456

MES 表结构需手工执行一次迁移(必须输入管理员密码才生效):

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(先启动)

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:102Plc.Enable: false(模拟模式,直接写工序码+读完成信号逻辑);真实设备改 yaml 中 Plc.Host/Port 并 Enable: true。
  • 本产线仅有「扫码枪+拧紧枪」,无 AGV/机器人/接驳台/CNC/清洗机等设备,前端无相关页。

C — WMS 后端

cd d:\hardman\bj_power\bj_power_wms
go build -o bj_power_wms.exe .
.\bj_power_wms.exe

服务 :8890,首次启动自动建表+种子数据。

E — WMS 工位网关(出入库两台台式机各部署一份)

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 台触控一体机)

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 看板(厂房大屏主机)

开发调试:

cd d:\hardman\bj_power\bj_power_dashboard
npm install
npm run dev   # http://localhost:5173

生产部署(二选一):

  1. 构建后由 nginx 托管 dist
npm run build   # 产物 dist/

nginx 配置要点(关键:/api/internal/sse 反代到 MES):

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;
    }
}
  1. 或简单场景直接用 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

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.yamlCli.AdminPassword(默认 Hardman_2026,独立于后台登录密码)。
  • 明文传给命令执行审计:每次成功/失败均在日志记录时间与命令名。
  • 生产升级流程:migrateserve;如曾存在旧版本不兼容库,先手工确认后 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.dbSQLiteusers 表
库房客户端 (E) 复用 WMS 账号 同 WMS 登录 WMS 后改密
看板 (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 / 工位终端 / 库房客户端 / 看板)一律 npm install && npm run build,无需 pnpm。
  2. ent 代码生成:改 schema 后须到对应目录执行 go generate ./...MEScd bj_power_mes/schema && go generate ./...WMScd bj_power_wms/schema && go generate ./...)。
  3. PowerShell 下批处理改名会损坏含中文注释的 Go 文件编码——本仓库所有中文文件均已是 UTF-8,请勿用旧版 PowerShell 对源码批量改名。
  4. PLC 连不上:确认 yaml Plc.Enable: false(模拟)可先行联调;上真机再 Enable: true 并核对 S7 地址/机架槽位。
  5. 看板监控页一直显示空态:本产线仅「扫码枪+拧紧枪」,看板只展示装配线实时数据,勿按旧模型(CNC/清洗机等)判断。