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:
SunYF
2026-08-27 19:50:57 +08:00
parent c85c3bd6f1
commit a2afd2f6dc
335 changed files with 87495 additions and 7357 deletions
+76
View File
@@ -3221,3 +3221,79 @@ WMS(C)
3 WMS和MES独立数据库,API查询 ✅ 采纳
4 拧紧数据:工位终端本地缓存,点击完成上报MES ✅ 采纳
5 半成品流转记录已完成工序 ✅ 采纳
---
# 开发前最终确认问题(2026-08-27 追加,请逐条回答)
> 说明:以下是我开工前必须向你确认的全部问题,一次性提完。每题都附了【默认方案】,你在题目后直接写答案即可;未给出回答的题目我将按【默认方案】执行,之后不再追问,直接完成全部开发。
## Q1 各项目代码基线策略(关键)
现状:
- WMS(C):已有完整 ent schema(物料/批次/SN/锁定/出入库/检验/半成品/包装箱)和部分 handler 骨架,但业务 logic 不完整。
- WMS客户端(E):目录里只有 .gitignore,等于空项目。
- 工位终端(D):目录里只有 .gitignore,等于空项目。
- MES(B)go-zero+ent 大骨架可用,缺 工单/BOM/排产/备料/PLC工序下发/拧紧接收/追溯 等。
- Dashboard(A)React+Vite 较完整,仍是 simulator 模拟数据。
问题:是否按下面方式实施——
① E 和 D 从零新建,后端统一 go-zero+ent(D 本地加 SQLite 缓存)、前端 Vue3
② C 在现有 schema 上补全 logic/handler 并保留既有表设计;
③ B 在现有骨架上加缺失模块,不推翻重写;
④ A 保持 React 技术栈不重写为 Vue,改造为接真实 API。
你的回答:1
## Q2 技术栈统一
全部 Go 后端统一 go-zero + ent + PostgreSQL,前端(E/D 新建的)统一 Vue3。【默认:是】
你的回答:是
## Q3 开发环境与端口
① 你本机现在有可直接连接的 PostgreSQL 和 Redis 吗?如果没有,我提供 docker-compose.yml 一键起 PG+Redis,并用脚本自动建库 bj_power_mes / bj_power_wms,表结构用 ent 自动迁移。【默认:docker-compose】
② 数据库连接参数(主机/端口/账号密码)按什么填?(默认本机 localhost:5432 / postgres/postgres
③ 端口约定:MES 8888、WMS 8890、WMS客户端 8891、工位终端 8892,Go 服务各自托管自己的前端静态页面,Dashboard 打包后也由一个静态服务托管。【默认:同意】
你的回答:本地有pgsql和redis,见bj_power_mes-api.yaml。并且,yaml里面的back_cover,是错误的,每个项目都有自己的Dbname,你自己建吧,yaml里面的配置也改成符合项目名称的Dbname
## Q4 PLC 对接(S7-1214
① 协议选 OPC UA 还是 S7 直连(gos7) 还是 Modbus TCP?(若现场方案未定,默认用 gos7 直连,且实现为可替换接口)
② 现场调试前没有真机时,是否允许 mock 模式:配置开关 sim=true 时自动生成工序完成信号,用于联调。【默认:做】
③ 寄存器地址先用默认约定且全部走配置文件:工序码 DB100.DBW0(int,如135)、完成位 M100.0(bool),收齐后清复位。之后与乙方对齐再改配置即可。【默认:是】
你的回答:1 ,说明,目前和plc的信号都没定义,可以暂放预留。但是逻辑是确定的:告诉plc一个工序,例如,产线有 12个,我告诉plc: 125,他就执行1序2序5序
## Q5 丹尼科尔拧紧枪对接
文档答复是"暂放"。默认方案:
- MES 提供接收接口 POST /api/internal/tightening/report(字段:SN、工位、螺丝编号、扭矩、角度、时间、OK/NG、操作人、工单号);
- Workstation 内置"模拟拧紧数据源"开关用于调试;
- 拧紧采集层做成 adapter 接口,未来协议确定只换 adapter(支持 TCP server 监听控制器推数的形态占位)。
是否同意?如果你已有丹尼科尔的报文样例或协议资料,请贴出。
你的回答:没有协议资料。并且 正式环境时, 项目D ,应该可以收集 拧紧枪的数据,比如通过网络串口,当时项目d没有做纯前端而是有go后端,就是因为希望能接收拧紧枪数据 并且用sqlite暂存,等用户点击确认以后上报到mes。暂放。
## Q6 扫码枪接入方式
默认按 HID 键盘模式处理(扫码=键盘输入+回车),E 的入库/盘点和 D 的报工均用"聚焦输入框的连续扫码"承载,不做串口/TCP 服务端监听程序。是否同意?
你的回答:同意
## Q7 授权与 Token 方案细化
① 项目间 API 写死 token:固定 Header `X-API-TOKEN: bj-power-internal-xxxx`,值放各自 etc 配置文件。【默认:是】
② 用户登录 JWT 失效时间要短——设多长?(默认 30 分钟,无滑动续签,到期重新登录)
③ 有登录页的项目(B/E/D):用户业务接口(/api/*)与项目间内部 API/api/internal/*)完全分开路由。【默认:是】
你的回答:1、是 。 2、需要滑动续签,只要有操作,不退出 。 3、是
## Q8 范围裁剪确认
① 本轮一次做完 5 个项目全部功能(含全部 UI 页面、联调通路),即《需求规格与开发规划.md》阶段 0~6 全量?还是有优先级裁剪?【默认:全量】
② 两项"暂放"内容本轮只预留不实现:看板 3D 模型、丹尼科尔具体协议解析。【默认:是】
③ 55 寸电视的"库存总览展示页",放 E 库房客户端里做一个免登录大屏路由。WMS 的产线状态/AGV 展示数据经 C 转 MES API 取。【默认:是】
你的回答:全部默认
## Q9 种子数据
是否预置一套演示种子数据:12 道工序字典、21 个接驳台(DOCK01~21)、区域(待检/合格/不合格/退货)、若干物料模板+一套产品BOM(含套件)、1 个测试工单+日排产、示例库存批次和 SN。【默认:预置】
你的回答:默认
补充:12道工序,可以维护,用户自定义描述做什么操作等描述
补充:物料模版,也可以维护。
## Q10 完成标准与交付动作
① 验收标准:每个 Go 项目 `go build ./...` 通过、每个前端 `pnpm build` 通过、核心链路(工单→锁库→AGV任务→PLC工序→报工→完工→追溯)可跑通(依赖的 mock/模拟开关均可配)。
② 根目录新增一份《部署手册》:按硬件清单说明每台机器安装/启动哪些服务与配置要点。【默认:写】
③ 全部完成后自动 `git commit` 并推送到 bjhardman.cn/SunYF/bj_power.git?【默认:提交并推送】
你的回答: 全部默认