Files
bj_power/问题修复记录.md
T
SunYF a3145a8bd6 docs: update and refine project requirement documents
1. 整理并更新工位终端、工艺流程、用户权限等多模块的需求文档
2. 移除冗余的内置账号相关旧需求,补充统一用户源、工艺步骤自定义等新需求细节
3. 优化文档结构,合并重复内容,修正英文状态词使用问题
4. 补充操作流程、PDF挂载、流程卡打印等业务场景的详细设计方案
2026-08-31 09:13:23 +08:00

514 lines
25 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.
我把问题记录.md里面修复完的问题,移到这里了。
ai请注意,不要反复把已修好的问题 反复出问题。
```
20260829--某次记录
一、mes问题总结。(具体问题时,有的通用问题,涉及到5个项目都可以优化,你就都优化)
1、产品类型 ,选择框,还是没数据。
2、所有选择框,如果没选择,请默写人 “请选择”
3、新增产品类型,页面的编码,自动生成一个,可以修改
4、一个产品编码可以对应N个工单号。同一型号的产品今天做一批、明天做一批,工单号不同,但产品编码相同。 并且,成品入库,也要用这个产品编码。那如果是这样,这个产品编码,能不能来自wms系统呢?不能,两个系统尽量解耦。实际操作时,人员可以把生产好的产品编码手动录入到wms。(问号帮助 里面的 产品编码 描述,要说的更详细些)
5、token滑动登录,有没有做。每次请求接口,都应该滑动续签才对。
6、管理页面(5个系统都算),比如:mes的日排产里面出现了PENDING,必须是中文,不要出现英文。
7、日排产--- 保存排产,合计总数 不能大于工单总数
8、工单管理下面建 日排产 列表,工能是冲不同维度维护日排产,查看日排产
9、mes的菜单:物料清单 ,跟wms是不是重复了?都需要维护吗?
10、原来,我讲过一些快捷操作。什么什么模版,你帮我看看都是有哪些地方提到。我来判断做不做
11、mes菜单:物料清单 ,查询条件为什么有 工单号
12、PLC工序下发,能不能在,工单列表,加一个按钮维护? 当然,也要可以维护。一切交给人工自行判断。比如:应该有 3序,人工可以建 1和3序,工单完成,是个半成品,半成品 又建工单,执行2序,变成成品。他们自己维护即可。你帮我想想如何闭环,记录清楚,即可。
13、mes菜单:拧紧查询 , 包含拧紧,应该包含更广阔。我记得,有个工序、工序步骤的描述,可以自定义,可以选择哪些工序、工序步骤、收集的参数有哪些,可以来之拧紧枪,也可以手填,字段内容是人维护的。你捋捋,这样收集哪些信息怎么收集才能闭环。另外补充说明:比如拧紧枪可能一次多个参数,我就存一个字段即可,最终给一个是否合格的判断
14、mes的扫码报工,这个菜单,错了。是手动报工,12个工位都可以报工。报工时 我上面13提到的数据,都要收集
15、角色权限管理,尽可以查看,不可删除和编辑,接口可以保留。操作日志保留
16、禁止删除所有管理员,至少保留一个。(所有项目都一样,都要改,符合这个规则)
17、管理员新建用户时,可以给用户设置密码。密码要求,必须是大于6位,不能是单独的数字。(所有项目使用)
18、纯数字登录,每次都提示安全级别低请立即修改密码。 仍然运行他继续登录,仅仅提示。(所有项目适用)
二、wms疑问总结
1、入库管理, 下拉框“物料”从哪里来,没有维护的地方
2、入库管理, 下拉框“区域" 也是一片空白,区域,需要自行维护。请参考我的md文档
3、我计较 结构件的保存,提示我: 精密件入库 snList 必填 。并应该有这个错误,并且,不应该是 snList这种英文。
4、入库管理 --- 扫码录入 --- 精密件 SN 入库 ,操作方式更改:不要回车录入,应该是回车换号。多条录入分割方式 可以是 多种比如: , 。 ; ; , . 多个空格 回车 等等。 增加录入按钮,才录入到下面列表。 不管是精密件还是结构件,都有一个备注比较好。 精密件,统一写一个备注,这一批sn,对应的主表有这个备注即可
5、入库管理 Excel导入,同上一起修改
6、报错: 结构件入库 quantity 必填且 > 0 。问题1,不应该有这个报错。问题2 不要出现quantity 英文
7、备料出库 --- 工单号 ,下拉框选择,数据哪里来 ? 可以直接调用 mes 。并且订单优先 显示 未完成 的
8、起名字,不统一:wms里面 备料出库 有个查询台账。不知道是个啥。mes里面有 备料单 物料清单 。有点乱呢!!! 你觉得呢
ai让我确定的问题 方案答复(简述)
上次忘记记录了。
```
一、工位终端,问题:
1、北京动力 · 工位终端 ? 这个标题很潦草,不允许出现 公司名称,而且,北京动力是你瞎写的
2、内置账号:admin / admin123 operator1 / 123456 ,这个写法也很多余。内置管理员即可。和mes一样统一登录 密码 admin 123456 ,如果是纯数字 并且提示更改密码,不更改也可以继续登录。 密码填写要求都和mes一样。
3、MES 服务不可达:MES GET http://127.0.0.1:8888/api/internal/station/task?dockCode=DOCK01 返回 404not found
4、拧紧结果(实时) ,不需要,1、不需要如此模拟。2、实际应用时也不是这样展示的。工位,先选择的工单,工单有工序步骤(客户维护的),步骤里面有要采集哪些参数,拧紧枪只是其中一项,也可以手动填写。
5、拧紧枪,是否ng 什么标准?,数据也是可 编辑
6、工位不要展示 英文:dock1 ,我以前跟你提过这个问题
7、客户明确表示,希望在这个地方展示操作流程,就是一个PDF一样的说明。来源,是跟着什么走呢? 我记得:一个工位可以有 几个工艺?一个工艺有多道工艺步骤 ,每个步骤有 标准 参考 数字,判断是否ng。你好好捋捋。
8、待同步xxx条,应该是指 未点击报工,本地sqlite存的数据表。不用在这里显示。并且上报维度是 工序,你写这么多条,怎么对应工序,有病吗,
9、参考,录音通话。看看他想如何展示
问题回答补充: 包含,我跟其他ai的一些聊天,请斟酌对错,告知我你的 答案,经我同意,再执行:
1、admin也不保留,工位终端,不维护数据,他的用户体系来源于 mes ,mes新建用户时,增加是否可以登录工位终端? 还是在mes的用户体系单独开一个 mes操作员 的 维护 tab。单独建账号,分配密码。工位终端可以改自己的密码。
2、pdf挂哪里? 挂工位上面吧。和工单等实际产品解耦。mes维护工位信息。刚才提到的问题1,在这里也有了答案,每个工人可以登录的工位是不一样的,不是谁都能操作工位1 ,所以,mes维护工位时,可以在已有用户体系选择 某用户可以操作此工位,多选。 引申出另一个问题,如果某用户没有任何mes菜单权限,显示什么,你要给我方案。并且告诉我,你做菜单权限没有,是不是精确到按钮权限,我们讨论过这个问题。
3、你的理解,不对。我反复说,不仅仅有拧紧枪,还有其他步骤,具体有什么,是mes管理后台自定义的。 自定义的工艺流程、工艺步骤,工艺流程包含多个步骤,工艺流程 有个pdf说明,一个工位当前只能绑定一个工艺流程。一个工艺流程可以绑定多个工位。明白没
下面是ai给我的建议,仅参考,他没你知道的多呢:
一、工位终端用户体系
1. 统一用户源
MES是唯一用户源。工位终端不建独立用户表
MES用户表新增两个字段:
can_login_workstation:布尔值,表示该用户能否登录工位终端
workstation_password:工位终端专用密码,用于登录D项目时验证
2. 工位操作员管理
MES后台新增「工位操作员管理」功能:
从已有用户列表中选择用户
勾选“允许登录工位终端”开关
分配可操作的工位(多选,从1~12号工位中选择)
工位终端登录后可以修改自己的密码(仅改 workstation_password,不改 MES 主密码)
3. 工位终端登录逻辑
用户输入工号 + 工位终端密码,请求 MES 验证
MES 验证内容:
用户存在
can_login_workstation = true
密码正确
该用户至少被分配了一个工位
验证通过后返回:用户可操作的工位列表 + 对应工位的当前工艺流程信息
如用户未被分配任何工位,提示“您未被授权操作任何工位,请联系管理员”
二、用户无 MES 菜单权限时的显示
如用户没有任何 MES 后台菜单权限,登录 MES 网页时不显示空白页
重定向到「工位操作员工作台」页面,包含:
当前可操作工位列表及状态
当前工单信息
操作记录查询(仅限本人)
修改个人信息/密码
三、权限体系
1. 权限粒度
菜单级 + 按钮级,精确到按钮
每个按钮对应一个权限码(如 workorder:delete、material:edit
前端根据用户权限码控制按钮显示/隐藏
后端每个接口校验当前用户是否具有该操作权限
2. 操作日志
所有关键操作记录完整日志
日志必含字段:
操作人ID和姓名
操作时间
操作类型(新增/修改/删除/提交/审核等)
操作对象(工单号、物料编码、SN码等)
操作前后数据变化(如有)
操作结果(成功/失败及失败原因)
日志中必须包含 workOrderNo、operator 字段
四、PDF 与工艺流程
1. PDF 归属
PDF(作业指导书)挂载在工艺流程上,不直接挂工位或工单
每个工艺流程有一个 PDF 文件
工位绑定的是工艺流程(PDF 跟着工艺流程走)
工位 D 启动时,根据当前绑定的工艺流程,预缓存其 PDF 到本地
登录后替换成 PDF,不每次请求 MES
2. 工位与工艺流程关系
一个工位当前只能绑定一个工艺流程
一个工艺流程可以绑定多个工位
工位今天绑了流程 A,所有经过该工位的工件都按 A 的步骤加工
明天换成流程 B,就按 B 加工
3. 工艺流程自定义
MES 后台自定义工艺流程
工艺流程包含多个工艺步骤
工艺步骤不仅限于拧紧枪,管理员可自定义:
步骤类型 示例 数据采集方式
拧紧 拧螺丝A,目标扭矩 2.5Nm 拧紧枪自动采集
手动检查 外观检查 工人手动打勾
测量 测量尺寸,公差 ±0.1 工人手工输入数值
装配 安装主板 人工操作,扫码确认
测试 通电测试,电压 5V 测试设备采集或手动输入
4. 工艺步骤与考核数据模型
text
工艺流程 (Process Flow)
↓ 包含
工艺步骤 (Step) — 顺序号、操作描述、采集方式
↓ 包含
考核标准 (Standard) — 参数名、单位、上限、下限
↓ 对应
考核数据 (Data) — 实际值、是否合格、采集方式(手动/设备)
每个步骤可配置多个考核标准
工人操作时按步骤顺序执行,每步完成后点击「完成本步骤」进入下一步
五、工人工作量统计
1. 工人端 — 工位终端「我的工作量」
登录工位终端后可查看
展示内容:
总完工工件数(按时间范围统计)
总工作天数
平均日产量
整体合格率(合格数/总完工数)
明细列表:日期、操作工位、完工工件SN、产品型号、合格/不合格、不合格原因
时间筛选:今日/本周/本月/近3个月/近1年/自定义起始日期
合格率趋势图(按日/按周)
导出 Excel/CSV
工人仅能看到本人数据,接口校验当前登录用户 ID
2. 管理端 — MES 后台「工人绩效报表」
权限:仅具备该菜单权限的用户可访问
筛选条件:时间范围、工位、工人、产品型号
汇总统计表:
工号 姓名 总完工数 合格数 不合格数 合格率 操作工位 操作
001 张三 245 240 5 97.96% 工位1、3 查看明细
支持按任意列排序,支持分页
点击「查看明细」弹窗显示:
完整历史记录(同工人端明细列表)
各工位分布统计(工位1干了多少件、工位2干了多少件等)
汇总图表:
各工人合格率对比柱状图
各工位产量分布图
每日产量趋势图(可切换查看不同工人的趋势)
导出 Excel/CSV
六、数据库变更
MES 用户表新增字段:
sql
ALTER TABLE users ADD COLUMN can_login_workstation BOOLEAN DEFAULT FALSE;
ALTER TABLE users ADD COLUMN workstation_password VARCHAR(128);
用户-工位关联表(多对多):
sql
CREATE TABLE user_workstations (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
workstation_id INT NOT NULL, -- 1~12
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(user_id, workstation_id)
);
权限码表(种子数据):
sql
CREATE TABLE permissions (
id BIGSERIAL PRIMARY KEY,
code VARCHAR(64) UNIQUE NOT NULL, -- workorder:delete, material:edit, 等
name VARCHAR(128) NOT NULL, -- 显示名称
category VARCHAR(64), -- 所属模块
created_at TIMESTAMP DEFAULT NOW()
);
用户-权限关联表(按钮级):
sql
CREATE TABLE user_permissions (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
permission_code VARCHAR(64) NOT NULL REFERENCES permissions(code) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(user_id, permission_code)
);
工人工作量统计相关查询涉及的现有表:
work_order(工单)
scan_record(扫码报工记录)
torque_result(拧紧数据)
process_log(工序流转记录)
七、接口设计
工位终端登录验证:
text
POST /api/internal/workstation/login
请求:{ "username": "xxx", "password": "xxx" }
返回:{
"success": true,
"workstations": [1, 3, 5], -- 可操作的工位列表
"user_info": { "id": 1, "name": "张三" },
"station_configs": { -- 各工位当前绑定的工艺流程
"1": { "process_flow_id": 10, "name": "装配流程A", "pdf_url": "..." },
"3": { "process_flow_id": 12, "name": "测试流程B", "pdf_url": "..." }
}
}
工位终端修改密码:
text
POST /api/internal/workstation/change-password
请求:{ "old_password": "xxx", "new_password": "xxx" }
工人端 — 我的工作量:
text
GET /api/internal/workstation/my-workload
请求参数:start_date, end_date(默认近30天)
返回:{ total_qty, qualified_qty, unqualified_qty, pass_rate,
details: [{ date, workstation_id, sn, product_code, result, reason }],
chart_data: { dates: [], rates: [] } }
管理端 — 工人绩效报表:
text
GET /api/internal/report/worker-performance
请求参数:start_date, end_date, workstation_id(可选), worker_id(可选), product_code(可选), page, page_size
返回:{ list: [{ worker_id, name, total, qualified, unqualified, pass_rate, workstations }],
total, page, page_size }
管理端 — 工人明细下钻:
text
GET /api/internal/report/worker-performance/detail
请求参数:worker_id, start_date, end_date
返回:{ details: [...], station_distribution: { "1": 80, "3": 45 } }
另外一件事,录音里面说: 希望有个可以打印的东西,上面有工位工人 签名的地方。这个涉及到两个事:
1、mes用户体系,需要有一个用户签名的照片?png? 你看看如何设计,将来可以融合到文档里面一起打印。文档是个pdf?
2、这个文档,什么维度?工人一天的工作量? 一个成品工件 多个工人的签名? 看看录音如何说吧。我理解是一个成品的质量追踪,也就是 工件多人签名。上面可能显示 ,开始时间、结束时间、工件名称,工艺步骤、合格率、各个工人签名、或者线长(拿pad的那个审核人)的签名。 这个文档自动生产的,但是生成前,可以手动维护 开始时间、结束时间、合格率、等,默认有签名人,也可以手动选择。没问题了,生成pdf。
数据来源就必须要去 每步工作流程都记录清楚了,每个精密件步骤都能追踪到。
其他ai答:
好,我直接按录音和常规质量追溯实践,给你落地方案:
---
## 一、签名怎么存?
**不用图片,用“账号名 + 确认时间”即可。**
录音里工人已经说了:“不一定非得签字,就是他能追到这个人是他们这一天干了这个活。”所以不需要让用户上传签名照片(PNG),那是自找麻烦——每个工人还得专门拍一张、上传、维护,工厂里根本推行不动。
**方案:用账号名作为签名字段。**
打印时显示:
```
操作人:张三(工号:1001) 确认时间:2026-08-29 14:32:15
检验人:李四(工号:1002) 确认时间:2026-08-29 14:35:22
```
如果甲方坚持要“手写签名效果”,可以加一个“电子签名图片”字段,让用户上传一次(可选),有则显示图片,无则显示账号名。但默认用账号名。
**扩展:**
- 在用户管理中添加`signature_image`字段(可选,存储图片URL),供将来扩展用
- 如果用户上传了签名图片,打印PDF时使用图片;否则使用账号名(文本)
## 二、文档按什么维度生成?
**录音原文:**
> “流程卡呢记录了工序一、工序二,就是所有工序……工序一最终谁干的,然后谁签的字,以及谁检验的。”
**所以维度是:一个成品工件(SN)的质量追溯。** 一个工件经过多个工位,每个工位有操作人、检验人、时间、合格率。文档汇总了这些信息。
**不是“工人一天干了多少活”(那是工作量报表,不是这个),而是“这个工件由哪些人经手完成的”。**
## 三、文档里要包含哪些内容?
| 区域 | 内容 |
|------|------|
| **头信息** | 工件SN、产品型号、产品名称、工单号、开始时间、结束时间、总合格率 |
| **工序追溯明细** | 工序序号、工序名称、工位号、操作人、检验人、各步骤合格状态、完成时间 |
| **考核数据摘要** | 该工件各考核项的实际值/判定(拧紧扭矩、测量值等) |
| **签名区** | 各工位操作人签名、检验人签名、最终审核人签名(账号名) |
| **生成信息** | PDF生成时间、打印人 |
## 四、生成前人工维护什么?
用户说得对:“生成前可以手动维护开始时间、结束时间、合格率等,默认有签名人,也可以手动选择。”
**所以流程是:**
1. 用户在MES后台选择“生成流程卡”
2. 输入/选择工件SN或工单号
3. 系统自动带出所有工序记录(默认值)
4. 用户可手动调整:
- 开始时间、结束时间
- 合格率(如果系统数据有误,人工修正)
- 签名人(默认是实际操作人/检验人,可手动换成别人)
5. 点击“生成PDF” → 系统根据当前数据生成PDF文件
6. 可下载/打印
## 五、表结构变更
```sql
-- 用户表增加签名图片字段(可选扩展)
ALTER TABLE users ADD COLUMN signature_image VARCHAR(256);
-- 流程卡生成记录表(存储每次生成的快照,防止事后修改导致追溯失效)
CREATE TABLE process_card (
id BIGSERIAL PRIMARY KEY,
card_no VARCHAR(64) UNIQUE NOT NULL, -- 流程卡编号
work_order_no VARCHAR(64) NOT NULL, -- 关联工单
product_code VARCHAR(64) NOT NULL, -- 产品编码
serial_no VARCHAR(64) NOT NULL, -- 工件SN
start_time TIMESTAMP, -- 开始时间(可手动修正)
end_time TIMESTAMP, -- 结束时间(可手动修正)
pass_rate NUMERIC(5,2), -- 总合格率(可手动修正)
operator_snapshot JSONB, -- 各工位操作人快照(账号名)
inspector_snapshot JSONB, -- 各工位检验人快照(账号名)
step_details JSONB, -- 各步骤考核数据快照
generated_by BIGINT NOT NULL, -- 生成人
generated_at TIMESTAMP DEFAULT NOW(), -- 生成时间
pdf_url VARCHAR(256) -- 生成的PDF文件路径
);
```
## 六、PDF模板
```
┌─────────────────────────────────────────────────────────────┐
│ 【北京电力设备总厂】 产线流程卡 │
│ 编号:PC-20260829-001 │
├─────────────────────────────────────────────────────────────┤
│ 产品信息 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 工件SNSN-HLX-001 工单号:WO001 │ │
│ │ 产品名称:汇流箱 2026标准型 开始:08-29 08:00 │ │
│ │ 结束:08-29 15:30 总合格率:98.5% │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 工序追溯明细 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 工序1 工位1 操作:张三 检验:李四 OK 08:30 │ │
│ │ 工序2 工位2 操作:张三 检验:李四 OK 09:00 │ │
│ │ 工序3 工位3 操作:王五 检验:赵六 NG 09:30 │ │
│ │ → 合格率:90.0% 已返修通过 │ │
│ │ 工序4 工位4 操作:王五 检验:赵六 OK 10:00 │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 考核数据摘要 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 拧紧螺丝A:2.48Nm(标准:2.5±0.1 OK │ │
│ │ 尺寸测量:300.05mm(标准:300±0.5 OK │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 签名区 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 工序1操作人:张三(工号1001) 检验人:李四(工号1002) │ │
│ │ 工序2操作人:张三(工号1001) 检验人:李四(工号1002) │ │
│ │ 工序3操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
│ │ 工序4操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
│ │ │ │
│ │ 最终审核人:韩总(admin) 日期:2026-08-29 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ 生成时间:2026-08-29 16:00 打印人:管理员 │
└─────────────────────────────────────────────────────────────┘
```
## 七、接口设计
**生成流程卡(生成前可预览修改):**
```
POST /api/internal/process-card/generate
请求:{
"serial_no": "SN-HLX-001",
"start_time": "2026-08-29 08:00:00", -- 可选,默认自动
"end_time": "2026-08-29 15:30:00", -- 可选,默认自动
"pass_rate": 98.5, -- 可选,默认自动计算
"operator_overrides": { -- 可选,手动指定某些工位的操作人
"3": "wangwu" -- 工序3换成王五
}
}
返回:{
"card_no": "PC-20260829-001",
"preview": { ...完整数据... } -- 前端展示供用户确认
}
```
**确认生成PDF**
```
POST /api/internal/process-card/confirm
请求:{ "card_no": "PC-20260829-001" }
返回:{ "pdf_url": "/uploads/process-card-PC-20260829-001.pdf" }
```
**查询已生成的流程卡:**
```
GET /api/internal/process-card/list
请求参数:serial_no(可选), work_order_no(可选), start_date, end_date, page, page_size
返回:列表 + 分页
```