Files
bj_power/问题记录.md
T
SunYF e852c7cd37 chore: 批量完成项目多模块迭代优化
1. 废弃半成品库存表并统一库存主表
2. 修复列表排序与搜索大小写不敏感问题
3. 新增用户最近登录时间、工单BOM名称字段
4. 完善角色管理、工位选择器功能
5. 增加拧紧数据补录、成品自动回流WMS能力
6. 统一导出时间范围校验规则
7. 丰富物料/备料单筛选条件
8. 调整菜单与权限命名适配产品型号业务
2026-09-08 11:44:04 +08:00

150 lines
17 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.
只给方案,待我确认后再动手
1、mes ---> 角色管理 ,名称,为什么显示红色呢? 没有特殊内容,不应该 有颜色区分。没有区分依据
2、mes ---> 账号管理,缺少 最近登录时间。(按照实际业务,总结一下如何更好,比如 用户体系 是不是 新建用户在 最下面好?工单,新建的在最上面最前面)。wms你也捋捋,如果真的需要改动
3、wms ---> 账号管理,列表排序是不是应该统一一下。全项目列表,都应该是创建时间 倒排 id辅助倒排 。
4、搜索条件,都要忽略大小写。例如: wms 的 物料档案 的 物料编码、规格
5、产品型号 和 物料档案 有没有用同一张表,最优方案, 思考一下
6、产品型号 ,缺少 搜索条件、缺少导出。 所有项目,增加数据,数据量大的数据。都要有搜索条件
7、已经被引用的 产品型号、物料档案,等基础数据,不允许被删除。给出提示。
8、工艺流程---> 流程列表 , 缺少 分页。 流程配置 --> 工序编号,不应该限制12,这个自动有用吗? 并且,绑定工位,在这个页面应该去掉,因为有关联工位页面了。请提供合理方案
9、页面业务错误提示: 工位 1 已被启用流程「工位1_默认」绑定,请先在流程/工位中解除绑定 。 和问题8结合审理吧
10、巡检终端:显示图片上传成功,实际,页面显示图片加载失败。显示, 提示签到成功,却换的记录查看,就不应该再让刷新了。 并且,缺少工单号、工位 筛选
11、巡检记录详情 ,没有显示图片,
13、工单号(输入搜索) ,应该按照 创建时间倒排。当前支持模糊搜索 并且支持大小写,这很好。
14、拧紧查询,工单号、SN 条件查询,应该改为支持大小写不敏感
15、扫码录入拧紧数据,显示方式,有问题。应该改成 菜单 拧紧查询 ,有两个tab页签。 扫码录入拧紧数据,应该是补录数据?补录哪个步骤?是不是应该在工位操作,所以,请思考,合理性,不合理,我就会删除它。
16、工件追溯,我输入 SN20260904-0003 ,没看懂数据显示。你审核一下是否合理。工件,名称有歧义? 物料?产品型号? 这些东西,都是如何定义的。你捋捋清楚。工单、工件,名称相互呼应,没问题,产品型号 ? 改为 工件型号 ? 你捋捋清楚,帮助文档说清楚些,统一主表。最优方案
17、 手动报工 菜单, 又把查询、新增,放到了一个页面,并且 报工记录,没有分页,搜索条件大小写 缺少 大小写脱敏。载入工艺步骤有歧义。。。 请提供最优方案
18、工位组合下发,和手动报工 一样的问题。 并且 ,当前工位 和 工位组合 的关系,没有说明确,如果是手动下发,当前工位,是带出来的吧,如果当前工位5,那么5之间的工位是不是就不用再选了? 请提供最优方案。
19、绩效报表, 顶部有操作人选项,缺少工位选项。并且下面三个tab缺少分页。分页,默认20比较合理。并且 导出,应该导出三个tab,对应excel的三个sheet 。
20、4个项目,所有导出,必须输入起始时间。最大时间间隔1年。当前所有有时间筛选条件的列表,默认带出时间,3个月。
21、备料单,缺少搜索条件,丰富些,并且,大小写要脱敏
把你的详细方案写到下面:
---
## 详细方案(2026-09-08,只给方案待确认)
> 标注说明:【已核实】= 已对照实际代码确认根因;改动点均列出具体文件。全程遵守:不打包 exe、前端改动全量重建产物、0 字节校验。
### 1、角色管理名称红色
【已核实】根因:`RoleManage.vue` 列表里角色名称用 `el-tag`,且 `SUPER_ADMIN` 用了 `type="danger"`(红色),普通角色是蓝色——颜色被当成了"等级"含义,但没有区分依据。
**方案**:名称列统一改为纯文本(不用 el-tag 着色)。超管身份已由"权限数=`*`(全部)"和按钮置灰天然体现,若仍想一眼识别,在名称旁加一个灰色小标"内置"(`el-tag effect="plain" type="info"`),红/蓝等级色全部去掉。
### 2、账号管理缺最近登录时间 + 新建记录位置规则
【已核实】MES `users` 表没有 last_login 字段,`AccountManage.vue` 也没有该列。
**方案**
- MES `users``last_login_at BIGINT`(unix 秒),登录成功(含工位终端登录?——工位登录不更新,避免混淆后台使用时间)时写入;账号管理列表加"最近登录时间"列(fmtTime)。WMS 同步加同名字段同名列(两系统一致)。
- **新建记录位置规则(全项目统一标准)**:
- **业务单据/记录类**(工单、备料单、出入库、巡检、日志、报表明细):`created_at desc, id desc`——新建在最上面,符合"刚做的最先看到"。
- **基础资料/人员类**(账号、角色、物料档案、区域、产品型号、BOM):按 `id asc` 稳定排序——新建在列表底部,位置稳定不打乱使用习惯,新增的也不会"闪跳"到顶。
- 按此标准全局巡检一遍所有列表(WMS+MES),把排序不符的统一掉(与问题 3 合并执行)。
### 3、WMS 账号管理排序 + 全项目列表排序统一
【已核实】WMS 账号列表已是 `created_at desc`(上轮已改),但按问题 2 的规则,账号属"基础资料类",应改为 `id asc`
**方案**:以问题 2 的两条标准做**全项目列表排序审计**,输出一张"页面 → 当前排序 → 目标排序"清单,一次性改齐。WMS 账号管理改 `id asc`
### 4、搜索条件忽略大小写(全项目)
【已核实】WMS `material.go` 物料编码/名称/规格用的 `Contains`(区分大小写),MES 侧部分查询同理。
**方案**:两系统所有文本类筛选(编码、名称、规格、SN、批次号、工单号、操作人等)统一换成大小写折叠查询——WMS ent 用自带 `*ContainsFold`(手写 LOWER 会报 42601,踩过坑),MES 按同样语义处理。给出改动清单逐文件过,`EqualFold` 用于精确匹配场景。工单号搜索已是模糊+大小写(你说"这很好"),保持并作为基准。
### 5、产品型号与物料档案是否同表(最优方案思考)
【已核实】现状:MES `product_types`(产品型号)与 WMS `materials`(物料档案)是两张独立表、两个系统各自维护,靠编码人工对齐——这与上轮定稿的"编码主数据 WMS 单一来源"矛盾。
**行业常规(ERP/PLM 视角)**:成品也是"物料"的一种,统一物料主数据一张表 + 物料类型字段(原材料/半成品/成品),是最优解;这也和我们已落地的统一库存主表(category 1/2/3)天然呼应。
**方案(推荐 A,分两步走控制风险)**
- **A(推荐)**WMS `materials``item_type`(1原材料/2半成品/3成品),产品型号档案迁入 `materials`item_type=3),作为唯一主数据源。MES 的"产品型号"页改为**实时从 WMS 拉取**(沿用 MaterialExists 同款降级:WMS 挂了允许手填仅提示);MES `product_types` 表保留只读过渡,工单/BOM 引用改为按编码关联(本就按 productCode 关联,改动集中在型号页数据源与编码生成——编码生成移到 WMS)。一步到位消除双录。
- **B(保守过渡)**:两表暂保持独立,但 WMS 加只读"产品型号"视图(从 MES 拉取展示),MES 型号页补搜索+导出;待稳定后再并表。
- 两条路的共同前置:先做问题 6/7(型号页搜索、导出、删除保护),无论选哪条都要做。**建议选 A,但第一步先只做"materials 加 item_type + WMS 可管理成品档案",MES 切换数据源放第二步验证后执行。**
### 6、产品型号缺搜索条件、缺导出
【已核实】`ProductType.vue` 只有"新增"按钮,无任何筛选、无导出。
**方案**:产品型号页加筛选区(名称/编码/类别,模糊+大小写折叠,沿用"统一交互规范"筛选+分页+导出三件套)+ 导出 xlsx(后端全量导出接口)。同样规则顺带审计:**所有数据量会增长的数据页面都必须有筛选条件**(BOM、关联工位、事件日志已达标,缺的补齐)。
### 7、被引用的基础数据禁止删除
**方案**(删除保护统一规则,两系统一致):
- **产品型号**:被工单/BOM 引用过 → 拒删,提示"已被 N 张工单引用,建议停用(下架)而非删除"。
- **物料档案**:被 BOM/库存/入库单/出库单引用 → 拒删,同样提示。
- **区域**:被库存占用(有在库行)→ 拒删。
- **角色**:被用户使用 → 拒删(WMS 已有,MES 核实补齐)。
- 实现:各 delete handler 删除前 count 引用,>0 返回 409 + 明确文案;前端无需改(错误提示已有通道)。给出引用关系清单表,逐条实现。
### 8、工艺流程:列表缺分页 + 工序编号限 12 + 绑定工位重复
【已核实】`processflow.go` 里 StationNo 硬校验 `1..12``ProcessFlow.vue` 流程列表无分页。
**方案**
- **分页**:流程列表接口改真分页(page/pageSize/totalcreated_at desc),前端 el-pagination,默认 20。
- **工序编号限制**:这个 12 来自"12 个物理工位"的产线现实,但放在"工序编号"上语义错了——工序是流程步骤,不该被工位数锁死。**建议**:工序编号放开为正整数(1~999),只校验"流程内不重复";与工位的对应关系交给"关联工位"页(Station.vue)维护,流程页不再承担工位绑定。若旧数据/PLC 下发依赖 1..12 映射,保留在"关联工位"页做映射校验,流程页彻底解耦。
- **去掉绑定工位**:同意去掉——`ProcessFlow.vue` 删除绑定工位区块,绑定关系只在 `Station.vue` 维护(单一职责)。
### 9、错误提示"工位1已被启用流程「工位1_默认」绑定"
与问题 8 同根因:一个工位只能绑一个启用流程的校验没问题,但触发时机和文案不合理。**方案**:绑定动作收敛到关联工位页后,此冲突校验只在关联工位页保存时触发;文案改为可操作式:"工位 1 已绑定启用中的流程「工位1_默认」,请先在【关联工位】页为该工位换绑或停用该流程,再保存。"(附跳转链接)。
孙彦飞答:放到 关联工位,就不存在 已关联的提示了,因为,本来就工位就只有一条数据,点击关联,直接更换即可。
### 10、巡检终端:图片上传成功但显示失败 + 签到后不应刷新 + 缺筛选
【已核实】后端已补 `GET /files/:date/:name` 路由;"上传成功但加载失败"最可疑的根因是:`el-image``<img>` 请求**不带 Authorization 头**,若 /files 路由走 JWT 鉴权 → 401 → 图片加载失败。
**方案**
- 图片路由加白名单(登录后可看的静态资源不拦 JWT,或 /files 内部接口化);工位终端与管理端统一用同一图片 URL 规则。实施时先用 curl 带/不带 token 各测一次确认根因再改。
- 签到成功提示后**当前页面不再轮询刷新**(停留页保持已提交状态,"记录查看"切换时才拉新)。
- 记录查看 tab 补:工单号、工位筛选(下拉 12 工位),与现有筛选并列。
### 11、巡检记录详情没有图片
【已核实】`Inspect.vue` 记录列表 L180 有图片列,详情抽屉需核对。结合问题 10 根因:若列表缩略图能显示、详情不能,是详情字段没传;若都不能显示,就是 JWT 白名单问题(问题 10 修复后自动解决)。
**方案**:详情抽屉补"现场照片"区(el-image + 点击预览大图),URL 与列表同一来源;实施时先复现确认归属哪个根因。
### 13、工单号搜索按创建时间倒排
**方案**:核实工单列表当前排序(疑似按工单号),统一改为 `created_at desc, id desc`。模糊+大小写折叠保持现状(已是标杆)。顺带把 MES 所有"输入搜索"的下拉数据源(工单选择框等)也按此排序。
### 14、拧紧查询大小写不敏感
**方案**`ListTorqueRecords` 的工单号/SN 查询改大小写折叠(精确匹配场景用 EqualFold,模糊场景上 LOWER 语义),与问题 4 一并批量执行。
### 15、扫码录入拧紧数据 → 改为"拧紧查询"两 tab
【已核实】拧紧查询 `Torque.vue` 目前是单列表页;"扫码录入拧紧数据"语义混乱(查询页里做录入)。
**方案**:**拧紧查询页改两 tab**(录入 tab 在前默认打开,遵循录入/记录范式):
- Tab1 记录查询:现有列表 + 筛选(工单号/SN/工位/时间)+ 分页 + 导出。
- Tab2 拧紧补录:定位为**补录**(设备漏传/手工修正),字段:工单号、SN、工位、螺丝号、扭矩/角度/结果、补录原因(必填,写操作日志)。合理——补录本质是数据修正,放管理端查询页合理;**实时采集不动**(那是工位终端/PLC 的事)。若你觉得连补录都不该在管理端,删掉 Tab2 即可,我预留开关。
### 16、工件追溯显示混乱 + "产品型号"命名歧义
【已核实】`Trace.vue` 输入 SN 后展示工位时间线/考核/拧紧数据,"产品型号"字段在工件语境下确实歧义。
**方案**
- **命名统一(全系统文案)**`产品型号``工件型号`?——不完全同意:型号是"物"的属性,工件是"这一台"的实例。行业惯用:**产品型号(物) → 工单(批次任务) → 工件(实例 SN)**。建议保留"产品型号",但追溯页字段改为:`工件 SN``所属工单``产品型号(编码+名称)``当前工位``状态`,层级一目了然;帮助文档明确三级关系图。若你仍倾向"工件型号",纯文案替换 8 个文件即可(同上次"产品类型→产品型号"套路)。
- **展示重构**Trace 顶部用 descriptions 分组(工件/工单/型号/时间),三个 tab(工位时间线/考核数据/拧紧数据)加分页与筛选;看不懂的字段逐个核对数据来源,来源为空的字段不显示而不是显示空值。
### 17、手动报工页面(Scan.vue)结构问题
【已核实】router`scan → 手动报工`。查询/新增混一页、记录无分页、搜索缺大小写折叠、"载入工艺步骤"歧义。
**方案**:按多 Tab 范式重做:Tab1 **报工录入**(前、默认打开)——输入 SN → 自动带出工单/当前工序/应做步骤("载入工艺步骤"改为自动触发,去掉按钮和歧义文案,改提示"已自动载入当前工位应做步骤");Tab2 **报工记录**(点击加载)——真分页 + 筛选(SN/工单/工位/时间,大小写折叠)+ 导出。
### 18、工位组合下发(PlcSend.vue)同款问题 + 当前工位语义
**方案**
- 页面结构同 17:Tab1 下发录入 / Tab2 下发记录(分页+筛选+导出)。
- **当前工位语义明确化**:手选工件 SN 后,"当前工位"由工件实际进度**自动带出**(只读展示),不再手填;工位组合选择器自动把 ≤ 当前工位的工位**默认剔除且禁选**(已完成的不用再走),只允许勾选之后的工位——解决"当前工位 5 时 1~5 还能选"的困惑。PLC 下发逻辑不变。
### 19、绩效报表
【已核实】`Performance.vue` 顶部只有操作人筛选,三个 tab(按人/按工位/明细)均无分页。
**方案**:顶部加**工位下拉筛选**(1~12,可多选);三个 tab 全部改真分页(默认 20);导出改一个 xlsx 三个 sheet(按人/按工位/明细),沿用 WMS sendExcel 机制在 MES 侧补多 sheet 能力(excelize 支持)。
### 20、导出时间规则(4 个项目统一)
**方案**:全项目导出统一三条硬规则:
- 必须有起始+结束时间(未选则用默认区间,不允许"全历史"一键导出);
- 最大间隔 1 年(前端校验提示 + 后端 export handler 双重校验,>366 天返回错误);
- 有时间筛选的列表页,时间默认值=近 3 个月。
执行方式:后端在导出 handler 统一加校验函数(一处实现,各导出调用);前端 WMS/MES 各加一个公共校验。逐导出接口过清单。
### 21、备料单
【已核实】`MaterialRequest.vue` 现有筛选:日期/工单号/状态——不够丰富。
**方案**:补筛选:产品编码(模糊+大小写折叠)、物料编码/名称(模糊)、接驳台;工单号等文本条件大小写折叠;列表确认真分页+created_at desc;导出带同筛选条件。帮助文档同步补字段说明。
---
## 实施顺序建议(确认后执行)
1. **全局横切类**(一次改齐、影响面广):4/14/21 大小写折叠、3/13 排序统一、20 导出时间规则、7 删除保护。
2. **页面结构重构类**15/17/18 三页多 Tab 重构、19 绩效分页+三 sheet 导出、8/9 工艺流程解耦。
3. **修复类**10/11 巡检图片(先 curl 验证 JWT 根因)、2 最近登录时间(两系统 DB 加字段)。
4. **设计类单独立项**:5 产品型号并表(先做 A 方案第一步)、6 型号页搜索导出、16 追溯展示+命名(等你对"工件型号 vs 产品型号"拍板)。
每批做完 `go build ./...` 验证 + 前端全量重建,不打包 exe、不重启你本地服务。