Files
bj_power/临时.md
T
SunYF f35e9b5b75 docs(deployment): 更新部署手册和业务架构说明
- 更新MES和WMS服务端口配置说明
- 详细说明产线工位设备配置(扫码枪+拧紧枪)
- 明确AGV配送和接驳台的模拟模式与真实对接方案
- 更新WMS中AGV配送默认模拟模式说明
- 完善厂内物流(AGV/接驳台)的业务架构约束
- 修订临时文档为详细的项目问题和解决方案规划
2026-09-20 14:52:36 +08:00

952 lines
40 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 文档、客户提问"C:\Users\ThinkPad\Desktop\软件系统问题-hd.doc" 、 网上搜索行业实际案例和标准 ,其中客户提问里面的“答” 是ai生成的,仅供参考。
全文要求:不要改代码,出计划,要有详细的 更改方案,不确定问题,一个一个让我确认,再出 计划。
1、
1、附件中心----操作----查看,去除查看。
2、附件中心--- 帮助文档,添加清楚建议和说明,包括如何删除附件,有什么影响。个人电脑如何清楚,比如 回收站 下载中心 ,等。 本项目日志文件路径 和占用大小,等等,清除按钮,允许清除1个月前的所有日志文件和文件夹。 把空间清除,归拢到一起,方便查看和清除。 本清除页面,不可清除在使用的 工艺流程 、不可清除 1年内 的 检测单据。 清除时,一项一项清除 (比如: 导出、导入、上传的附件、检查单 不能一起清除一项一项确认,提示影响范围,点击确认,再删除)。 罗列相关内容,给我方案,做出指示以后再 开干
3、wms账号管理,页面空白了。查原因并修复
4、wms来料检验,缺少,其他入库的一个检查,要和入库一一对应。
5、接驳台维护,是给agv使用的。 和 实际接驳台一一对应,所以,不能新增、修改,只有要给查看功能。 种子数据相关sql ,默认初始化接驳台。 更新你的记忆,永远不允许出现 “关键字” 混合搜索,为什么总是这样设计呢?说了很多遍了。
6、所有的新建、编辑、保存,都要有 二次确认弹框。当前项目,很多地方还没有这个弹窗
7、区域维护--- 货架、层、位置号,都要有名称、备注说明。并显示库存实时库存总数量。 这4级,一旦新建,不允许删除,只能停用。 搜索条件,状态 默认只搜索 启用状态的。
8、区域维护--- 位置号,列表 显示全区域 编码,区域编码、名称,货架编码、货架名称,层编码、层名称
9、wms物料档案, 新增应该参考编辑页面,允许上传附件。并且,上面有要求:所有 新增、新建、编辑、上传、保存、导入,等涉及到更改数据 的操作,都要有 二次 确认框,等用户确认后再继续。弹出框明确描述 影响范围。
10、MES 不告诉 WMS “这个工单总共要多少料”,导致 WMS 没法出库。请出方案,并修复。
11、wms完工检验,等,缺少帮助文档。 并且 归属 字段 请和其他 菜单功能保持一致,参考客户是怎么要求的 。这个文档"C:\Users\ThinkPad\Desktop\软件系统问题-hd.doc" 里面的 答,是ai说的,不具备参考价值,上面的问题,是 用户提问的,是真实需求
12、当前项目无法闭环,请联网搜索 实操项目经验 , 产品级项目 方案,吸取有点,整合到我的项目,让我的项目能闭环。 给我详细的方案,不要改代码,等我决策再动手。
13、来料检查,也是个半成品,请重新设计。 并且,如果tab按物料统计是实时 聚合出来的数据,那也应该先 选择物料,再点击 统计按钮。你设计设计吧,太烂了。
14、退库确认,能闭环吗?库存怎么操作、回到原 仓库位置号?能不能手动选择。退库退的是 剩余物料or有问题的物料。退库sn编号,应该一个一个扫码录入,非 电子气件呢 ? 认真考虑这些问题,一个也不可以遗漏、忽略
15、AGV配送 ? 海康agv相关文档,能提供这些数据吗? 这个页面暂放,等真实对接agv时再改。
16、wms工单备料台账,搜索网页行业经验,看看是否符合标准,能否闭环。
17、用户提问中“增加科技项目出库类别” 。 实际 出库管理---通用出库,没看到这个。我理解:出库是无法和入库的批次号、合同号对应的, 所以出库的 出库 类别不需要和任何 地方联动,仅仅是个 标签记录。你直接实现它就可以了,列表、出库单 都显示清楚即可。 类似入库,让他必填编号。你动动脑子吧。
18、客户提问:通用出库:先区分一下类别(摁钮点选,退料、样品、报废、发货、其它“手动输入”),然后分别填写归属(工单号or科技项目号)、类型(电气件、结构件、其它)、名称(图号)、批次(非强制)/SN(强制)(能否根据类型选择自动更换?) 。 我的理解: 其他需要手动输入,说明 这些类型来源于数据库。 类型里面,还有一个 其他,你他妈也没给客户实现。你是瞎子吗? 批次号,根据 是 物料类型觉得。物料类型,物料选择里面就有,你还让客户手动输入,你有病吗? 物料 选择框,全项目统一组件,并新增下拉框显示字段,当前是 编码、图号 ,改为 编码、图号、类型、品类
问题18,不局限于某个 菜单,全项目 审查
19、 出库管理 ,同理,见 问题18
20、wms出库管理,目标工位,可以选择,不应该让输入。 并且客户明确表示 出库记录 要有 工单号 、 工位号
21、来料检验,是根据 入库管理 检查吧。当前无法闭环,并且 又要客户输入这么多参数,你是个傻逼吗。网上搜索 互联网 标准吧。
22、来料检验----归属--- 科技项目号、工单号、其他 ,当前显示的是 无,不对应该是其他吧,看客户要求。 这里的工单号,和 科技项目号 并列,不是跟mes的工单号 一个维度,也不是一个东西,改名叫工单编号。
23、客户问题:实际使用过程中不合格,转为退货或换修,系统如何修改和调整 。 文档中的回复,全是乱编,根本没有闭环,没有这些按钮功能。完全胡扯!!! 定义好,来料检、过程检、完工检——分工与边界,修复完成以后,再把客户问题闭环。
24、wms库存查询, 质量状态? 你是有病吗。整个区域为什么有个 是否合格。类型 也不对。 区域现在是4级,所以 都不对了。 如果没有好的方案or没必要显示这个tab,就去除此tab
25、数量定义一定要清楚,不能有任何差异,请一个一个审核,涉及到 数量核算的地方,参考:
26、客户问:物料汇总和库存明细有什么差别? 自我审核清楚,在帮助文档介绍清楚。
27、库存盘点。 全功能规划
下面都是ai生成的,仅供参考:
过程检验、完工检查,等等
我理解是完工检查,因为,左边菜单,有来料检查。如果是完工检查,就没有 目标类型 区分。你再捋捋,当前系统完全无法闭环。你能分析我本地项目代码吗
并且 ,按物料统计,有个统计按钮,完全不合时宜。整个 完工检查,是个半成品,请重新设计,必须闭环。
允许联网搜索 标准案例 实现情况
## 先回答你能不能分析代码
**不能。我无法访问你本地的 `D:\hardman\bj_power` 代码。** 我只能基于你发的截图和之前对话里给的信息来分析。如果要我基于真实代码分析,你得把相关文件贴出来,或者告诉我文件路径,我只能靠你贴的片段来判断。
---
## 你的理解是对的
**这个页面应该是完工检验,不是来料检验。**
理由:
1. 左侧菜单已经明确分开:来料检验、过程检验、完工检验。
2. 当前高亮的就是“完工检验”。
3. 如果这是来料检验,左侧就不会再有一个独立的“来料检验”菜单。
**所以:这是完工检验的壳,套了来料检验的字段。**
---
## 完工检验的准确定义
| 维度 | 完工检验是什么 |
|------|--------------|
| **检什么** | 一件成品工件(SN),走完全部工序后的最终检验 |
| **对象** | 成品SN(唯一),不是库存批次 |
| **选什么** | 选工单 → 选SN → 看该SN的所有工序记录 |
| **看什么** | 该SN经过的每道工序的检验结论、操作人、时间、拧紧数据 |
| **判什么** | 整件合格/不合格;不合格的处理方式(返修/让步接收) |
| **完成后** | 触发成品入库、生成流程卡/追溯报告 |
---
## 当前页面的问题
| 字段 | 问题 |
|------|------|
| **目标类型:批次/SN** | 完工检验的对象一定是成品SN,不存在“批次”选项。这是来料检验的逻辑。 |
| **生产厂家** | 来料检验的字段,完工检验不需要(成品是自己生产的) |
| **检测单号(与入库单关联)** | 来料检验的字段,完工检验不需要关联入库单 |
| **报检单号(与报检流程关联)** | 来料检验的字段 |
| **从库存选批次** | 来料检验的字段,完工检验是从已完工工件选SN |
| **检验数量/合格数量** | 完工检验是单件,不应该有“数量”概念,要么合格要么不合格 |
| **缺少工单号** | 完工检验必须关联工单,当前没有 |
| **缺少产品编号** | 完工检验必须知道检的是哪个产品 |
| **缺少工序汇总** | 完工检验要展示该SN经过的所有工序检验结论 |
| **缺少总合格率** | 完工检验要算整件的合格率 |
| **缺少审核人** | 完工检验需要最终审核人签字 |
---
## 完工检验应该长什么样
```
┌─────────────────────────────────────────────────────────────┐
│ 完工检验 │
│ │
│ 工单号 [WO001________] [查询] │
│ 产品编号 [HLX-01A] 产品名称 [汇流箱] │
│ │
│ 选择待检SN [扫码或输入SN________] [添加] │
│ │
│ 待检清单: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SN │ 产品 │ 工序完成情况 │ │
│ │ SN-HLX-001 │ HLX-01A │ 工序1✅ 工序2✅ 工序3✅ │ │
│ │ SN-HLX-002 │ HLX-01A │ 工序1✅ 工序2✅ 工序3❌ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 选中 SN-HLX-001,显示详情: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 工序1 操作人:张三 检验:李四 结论:合格 09:30 │ │
│ │ 工序2 操作人:张三 检验:李四 结论:合格 10:15 │ │
│ │ 工序3 操作人:王五 检验:赵六 结论:合格 11:00 │ │
│ │ 拧紧数据:螺丝A 2.48Nm ✅ 螺丝B 2.52Nm ✅ │ │
│ │ 总合格率:100% │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 检验结论: ● 合格 ○ 不合格 │
│ 不合格处理:[返修 / 让步接收] │
│ 审核人:[李四________] │
│ 备注:[________] │
│ │
│ [提交完工检验] │
└─────────────────────────────────────────────────────────────┘
```
---
## 为什么当前系统无法闭环
```
MES 生产 → 工件走完所有工序 → 工位报工
完工检验(当前页面)→ 用户不知道选什么(没有工单、没有SN入口)
检验完成后 → 没有触发成品入库
WMS 没有收到成品入库 → 成品库存为0
成品无法出库 → 销售发货断链
```
**根本原因:当前页面既没接上“工件已完工”的数据,也没触发“成品入库”的动作,中间是断的。**
---
## 给 AI 的修改描述
```
### 完工检验页面重做
当前问题:
- 页面标称“完工检验”,但字段是来料检验的(生产厂家、检测单号、报检单号、从库存选批次)。
- 缺少完工检验必须的字段(工单号、产品编号、SN、工序汇总、总合格率、审核人)。
- 检验完成后没有触发成品入库,闭环断裂。
修改方案:
1. 去掉字段:目标类型(批次/SN)、生产厂家、检测单号、报检单号、从库存选批次。
2. 增加字段:
- 工单号(下拉选择或输入查询)
- 产品编号、产品名称(选工单后自动带出)
- 待检SN(扫码或输入,可多选)
- 工序汇总(显示该SN经过的所有工序的检验结论、操作人、时间)
- 拧紧数据摘要
- 总合格率
- 审核人
- 不合格处理方式(返修/让步接收)
3. 交互流程:
- 选工单 → 带出产品信息
- 扫SN → 校验该SN是否走完全部工序
- 全部工序完成 → 展示工序汇总
- 未全部完成 → 提示“该SN未完工,无法进行完工检验”
- 填检验结论 → 提交
4. 提交后触发:
- 成品入库(调用WMS内部接口,写入成品库存)
- 生成流程卡/追溯报告
5. 页面 Tab 名称与左侧菜单一致:完工检验。
```
本系统,关于量的定义 必须准确、明确、正确,不能出任何差异。 请审核下面ai生成的内容。独立审计,如何正确,出方案,我确认后,记录到 库存查询的帮助文档里面(简要记录,帮助文档级别的记录不是照搬)
# 数量字段完整定义与落地方案
## 一、总原则
1. **每个量只表达一个含义,不混用。**
2. **所有量都有明确的计算公式和约束条件。**
3. **跨系统(MES/WMS)的量,必须注明存在哪一侧。**
4. **任何时刻,关系式必须成立,差一个就是账实不符。**
## 二、库存域(WMS 侧,权威数据)
| 字段 | 定义 | 计算公式 | 存在表 | 约束 |
|------|------|----------|--------|------|
| **库存量** | 仓库里实际有多少 | 入库累加 − 出库累减 | inventory_batch.quantity | ≥ 0 |
| **锁定量** | 已被备料单占用、未出库的数量 | 备料锁定累加 − 出库释放 − 解锁 | inventory_batch.locked_qty | ≥ 0,≤ 库存量 |
| **可用量** | 还能被新备料单占用的数量 | 库存量 − 锁定量 | 计算得出 | ≥ 0 |
| **已出库量** | 累计从仓库发出的数量 | 出库累加 | order_material_ledger.out_qty | ≥ 0,≤ 需求量 |
**关键约束:**
```
库存量 = 可用量 + 锁定量
可用量 ≥ 0
锁定量 ≤ 库存量
```
**关键点:**
- 锁定量在**备料单生成时**产生,不是排产时。
- 备料单生成时,调 WMS 锁定,锁定量 += 备料量。
- 出库时,库存量 −= 出库量,锁定量 −= 出库量。
- 锁定失败(可用量不足)→ 备料单生成失败,提示缺料。
## 三、MES 侧:线边库存域
| 字段 | 定义 | 计算公式 | 约束 |
|------|------|----------|------|
| **已出库量** | 累计从仓库发出的数量(从WMS同步) | 出库累加 | ≥ 0 |
| **已接料量** | 工位确认收货的数量 | 接料累加 | ≥ 0,≤ 已出库量 |
| **已消耗量** | 报工反冲扣除的数量 | 报工反冲累加 | ≥ 0,≤ 已接料量 |
| **在途量** | 已发出、工位还没接的数量 | 已出库量 − 已接料量 | ≥ 0 |
| **工位余量** | 工位上还没用完的料 | 已接料量 − 已消耗量 − 退库量 | ≥ 0 |
**关键约束:**
```
已出库量 = 已接料量 + 在途量
已接料量 = 已消耗量 + 工位余量 + 退库量
```
**关键点:**
- 出库即扣WMS库存,物料进入MES侧管理。
- 工位余量是MES侧的概念,不纳入WMS盘点。
- 报工反冲只动MES侧的已消耗量和工位余量,不动WMS库存。
## 四、工单域(MES 侧)
| 字段 | 定义 | 计算公式 | 约束 |
|------|------|----------|------|
| **工单数量** | 计划生产的产品总数 | 建单时填 | > 0 |
| **单台用量** | 生产1台产品需要该物料的数量 | 物料清单维护 | > 0 |
| **损耗率** | 考虑报废/损耗的加放比例 | 物料清单维护 | ≥ 0 |
| **需求量** | 该工单该物料的总需求 | 工单数量 × 单台用量 × (1+损耗率) | > 0 |
| **已完工数量** | 已完工的产品数 | 完工累加 | ≥ 0,≤ 工单数量 |
| **剩余缺口** | 该物料还差多少没出库 | 需求量 − 已出库量 | ≥ 0 |
**关键点:**
- **需求量是工单级的,不是日级的。**
- 出库累计约束:**累计出库 ≤ 需求量**。
- 用日级需求会误卡跨天生产。
## 五、排产域(MES 侧)
| 字段 | 定义 | 计算公式 | 约束 |
|------|------|----------|------|
| **排产计划量** | 某工单某天的计划数量 | 计划员填 | ≥ 0,可大于库存 |
| **工位分配量** | 同一工序多工位时,每个工位分到的数量 | 计划员分配或系统平均分 | 合计 = 排产计划量 |
| **已执行量** | 该排产实际完成的数量 | 报工累加 | ≥ 0,≤ 排产计划量 |
**关键约束:**
```
同一工单多天排产合计 ≤ 工单数量
工位分配量合计 = 排产计划量
```
**关键点:**
- **排产计划量可以大于库存**(提醒采购补料)。
- **排产不锁定库存**,锁定在备料单生成时才发生。
## 六、检验域(WMS/MES 通用)
| 字段 | 定义 | 计算公式 | 约束 |
|------|------|----------|------|
| **报检数** | 本次送检的总数量 | 人工填或扫码计数 | ≥ 0 |
| **合格数** | 判定为合格的数量 | 检验后统计 | ≥ 0,≤ 报检数 |
| **不合格数** | 判定为不合格的数量 | 报检数 − 合格数 | ≥ 0 |
| **让步接收数** | 不合格但允许使用的数量 | 审批后填 | ≥ 0,≤ 不合格数 |
**关键约束:**
```
报检数 = 合格数 + 不合格数
不合格数 = 退货数 + 报废数 + 让步接收数 + 待处理数
```
**关键点:**
- 报检数是送检总数,不是“检验合格数”。
- 合格入库,不合格入隔离区。
- 不合格禁止出库到产线。
## 七、备料/配送域
| 字段 | 定义 | 计算公式 | 约束 |
|------|------|----------|------|
| **应发量** | 备料单要求发出的数量 | 系统按物料清单算 | ≥ 0 |
| **已发量** | 累计已出库的数量 | 出库累加 | ≥ 0,≤ 应发量 |
| **实收量** | 工位确认收到的数量 | 接料时填 | ≥ 0 |
| **差异量** | 实收与应发的差值 | 实收量 − 应发量 | 可正可负 |
| **退库量** | 工位退回仓库的数量 | 退库单累加 | ≥ 0 |
| **待发量** | 还没发的数量 | 应发量 − 已发量 | ≥ 0 |
**关键约束:**
```
已发量 ≤ 应发量
差异量 = 实收量 − 应发量(正=多发,负=少发)
待发量 = 应发量 已发量
```
**关键点:**
- 分批出库时,已发量累加,待发量减少。
- 差异量非0触发数量不符处理流程。
## 八、绩效域(MES 侧)
| 字段 | 定义 | 计算公式 |
|------|------|----------|
| **完成数** | 操作工完成的工件数 | 报工累加 |
| **合格数** | 完成的工件里合格的 | 检验结论统计 |
| **不合格数** | 完成的工件里不合格的 | 检验结论统计 |
| **合格率** | 合格数 ÷ 完成数 | 百分比 |
## 九、所有关系式(必须成立)
```
库存量 = 可用量 + 锁定量
已出库量 = 已接料量 + 在途量
已接料量 = 已消耗量 + 工位余量 + 退库量
报检数 = 合格数 + 不合格数
需求量 = 已出库量 + 剩余缺口
应发量 = 已发量 + 待发量
工位分配量合计 = 排产计划量
同一工单多天排产合计 ≤ 工单数量
```
**任何时刻,这些等式必须成立。差一个,就是账实不符。**
## 十、每个操作的量变化
| 操作 | 库存量 | 锁定量 | 已出库量 | 已接料量 | 已消耗量 | 工位余量 |
|------|--------|--------|----------|----------|----------|----------|
| 备料单生成 | — | +备料量 | — | — | — | — |
| 出库 | −出库量 | −出库量 | +出库量 | — | — | — |
| 工位接料 | — | — | — | +实收量 | — | — |
| 报工反冲 | — | — | — | — | +消耗量 | — |
| 退库 | +退库量 | — | — | — | — | −退库量 |
| 盘点调整 | ±调整量 | — | — | — | — | — |
## 十一、给 AI 的落地描述
```
### 数量字段完整定义
1. 库存域(WMS侧):
- 库存量:实际在库数量,入库累加、出库累减
- 锁定量:备料单占用、未出库,备料时+,出库时−
- 可用量 = 库存量 − 锁定量
- 已出库量:累计发出,出库时+
2. 线边库存域(MES侧):
- 已接料量:工位确认收货,接料时+
- 已消耗量:报工反冲,报工时+
- 在途量 = 已出库量 − 已接料量
- 工位余量 = 已接料量 − 已消耗量 − 退库量
3. 工单域(MES侧):
- 需求量 = 工单数量 × 单台用量 × (1+损耗率)
- 已完工数量:完工时+
- 剩余缺口 = 需求量 − 已出库量
4. 排产域(MES侧):
- 排产计划量:可大于库存
- 工位分配量合计 = 排产计划量
- 同一工单多天排产合计 ≤ 工单数量
5. 检验域:
- 报检数 = 合格数 + 不合格数
- 让步接收数从不合格数里划出
6. 备料域:
- 应发量 = 已发量 + 待发量
- 差异量 = 实收量 − 应发量
7. 关键约束(必须成立):
- 库存量 = 可用量 + 锁定量
- 已出库量 = 已接料量 + 在途量
- 已接料量 = 已消耗量 + 工位余量 + 退库量
- 报检数 = 合格数 + 不合格数
- 需求量 = 已出库量 + 剩余缺口
8. 严禁混用:
- 锁定量 ≠ 排产计划量
- 排产计划量可以大于库存
- 锁定量必须 ≤ 可用库存
- 需求量是工单级,不是日级
- 报检数是送检总数,不是合格数
- 工位余量不纳入WMS盘点
9. 每个操作的量变化:
备料:锁定量+
出库:库存量−、锁定量−、已出库量+
接料:已接料量+
报工:已消耗量+、工位余量−
退库:库存量+、工位余量−
```
下面,又是一段ai聊天内容:
## 结论:主流程能跑,但细节有多处断点,严格说**不能闭环**。
---
## 一、能闭环的部分
| 环节 | 状态 |
|------|------|
| 发起盘点 → 生成盘点单号 | ✅ 有 |
| 扫码实盘 → 记录实盘数 | ✅ 有 |
| 完成盘点 → 生成差异 | ✅ 有 |
| 差异写回 → 修正库存 | ✅ 有 |
| 历史盘点单查询 | ✅ 有 |
**主链路是通的。**
---
## 二、断点(不能闭环的地方)
### 断点1:发起后状态不更新
截图中「盘点单号」显示“未发起”,「目标数量」显示“-”。发起盘点后,这两个字段会不会自动更新为实际的盘点单号和数量?**如果不会,用户不知道当前有没有进行中的盘点。**
### 断点2:扫码区和盘点单没自动关联
扫码区有个「盘点单号」输入框,写着“也可粘贴已有进行中的盘点单号”。**如果用户已经发起了盘点,为什么还要手动粘贴?** 应该发起后自动带入,不需要用户再操作。
### 断点3:完成盘点时不知道完成哪个单
「完成并生成差异」按钮独立存在,和上面的扫码区没有明显关联。**用户扫完码点完成,系统怎么知道是完成哪个盘点单?** 应该自动关联当前进行中的盘点单。
### 断点4:没有取消盘点的入口
如果发起错了,或者扫错了很多,怎么取消?**截图中没有取消按钮。** 用户只能重新发起,但旧的盘点单会一直挂在“进行中”。
### 断点5:未盘项没处理
盘点单覆盖 50 个批次,只扫了 45 个,剩下 5 个怎么办?**系统没说要怎么处理,直接完成会导致这 5 个的差异算不出来。**
### 断点6:按 SN 和按批次交互没区分
截图里「实盘数量」对所有类型都一样。但电气件(SN)逐件扫码,实盘数应该是 1,不需要用户填。**当前交互不区分,用户扫了 SN 还要手动填 1,多余且易错。**
### 断点7:盘点期间库存能变动
发起盘点时冻结了快照,但盘点期间如果有出库/入库,快照和实际就不一致。**没有锁定机制,盘点结果不可靠。**
### 断点8:差异写回用开关,不安全
开关容易被误触,写回库存是不可逆操作。**用户扫完码随手一划,库存就被改了。**
---
## 三、要闭环,必须补什么
| # | 补什么 | 作用 |
|---|--------|------|
| 1 | 发起后自动更新盘点单号、目标数量 | 用户知道当前状态 |
| 2 | 扫码区自动关联当前盘点单 | 不用手动粘贴 |
| 3 | 完成盘点自动关联当前单 | 知道完成哪个 |
| 4 | 增加「取消盘点」按钮 | 错了能退 |
| 5 | 未盘项处理弹窗 | 剩余项有归宿 |
| 6 | 按 SN/按批次区分交互 | SN 自动=1,批次填数 |
| 7 | 盘点期间锁定库存 | 快照和实际一致 |
| 8 | 差异写回改二次确认弹窗 | 防误触 |
| 9 | 盘点单状态机(进行中/已锁定/已完成/已写回) | 状态可追踪 |
| 10 | 写回用调整单,不直接覆盖 | 可追溯 |
**补完这 10 项,盘点才真正闭环。**
---
## 四、一句话总结
**主流程是通的,但“发起后状态不更新、扫码区和盘点单没关联、完成时不知道完成哪个单、没有取消、未盘项没处理、SN和批次没区分、盘点期间能改库存、写回用开关”——这 8 个断点任何一条都会导致盘点结果不可靠。补完这 8 条加状态机和调整单,才算闭环。**
结合刚才,我讲的 ,量 ,的定义
## 结合“量”的定义,重新评估盘点页面
### 一、盘点盘的是哪个量?
根据刚才的定义:
```
库存量 = 可用量 + 锁定量
```
**盘点盘的是「库存量」,即实物在仓库里的总数。**
| 量 | 是否参与盘点 | 原因 |
|----|-------------|------|
| **库存量** | ✅ 盘这个 | 实物在仓库里,能数 |
| **锁定量** | ❌ 不盘 | 只是账面占用,实物还在仓库里,已经包含在库存量里了 |
| **可用量** | ❌ 不盘 | 计算值,不独立存在 |
| **在途量** | ❌ 不盘 | 已出库,不在仓库里 |
| **工位余量** | ❌ 不盘 | 在工位上,不在仓库里 |
**盘点结果:实盘数 = 实际数到的库存量。**
差异量 = 实盘数 − 账面库存量(快照时的库存量)。
---
### 二、关键问题:盘点期间库存变了怎么办
**这是当前页面最大的断点,和量的定义直接相关。**
场景:
```
发起盘点 → 快照库存量 = 100(其中锁定量 30,可用量 70)
盘点期间有工单出库 → 库存量变成 80,锁定量变成 10,可用量 70
用户扫完码,实盘数 = 80
差异 = 80 − 100 = −20 ❌ 错!这是出库导致的,不是盘亏
```
**如果不锁库存,差异会包含正常业务变动,盘点结果不可信。**
**两种解法:**
| 解法 | 做法 | 优点 | 缺点 |
|------|------|------|------|
| **A. 锁库存** | 发起盘点时,锁定该范围库存,不允许出库/入库 | 差异干净,全是盘盈盘亏 | 盘点期间产线领不了料 |
| **B. 动态对账** | 不锁,但记录盘点期间所有出入库,差异里扣除这些变动 | 不影响生产 | 实现复杂,容易算错 |
**你们规模小,建议选 A(锁库存)。** 盘点本身就是短时间操作(几十分钟),锁一下影响不大。
**锁的是「库存量」还是「锁定量」?**
锁的是**该范围库存不允许任何变动**——即:
- 不允许出库(库存量不能减)
- 不允许入库(库存量不能加)
- 不允许锁定(锁定量不能变)
**盘点期间,库存量、锁定量、可用量全部冻结。**
---
### 三、盘点后的写回
盘点完成,差异写回时:
```
调整前:库存量 = 100,锁定量 = 30,可用量 = 70
实盘数 = 95,差异 = 5
调整后:库存量 = 95,锁定量 = 30,可用量 = 65
```
**关键约束:写回后,`库存量 = 可用量 + 锁定量` 仍要成立。**
如果锁定量是 30,库存量从 100 调到 95,可用量自动变成 65。**锁定量不动。**
---
### 四、结合量定义的完整盘点闭环
```
① 发起盘点
- 冻结快照:记录当前库存量、锁定量、可用量
- 锁定库存:不允许出库/入库/锁定
- 盘点范围:全库 / 按区域 / 按物料
- 生成盘点单号,状态=进行中
② 扫码实盘
- 扫批次号(结构件)→ 弹实盘数量框 → 用户填
- 扫 SN(电气件)→ 实盘数=1,自动提交
- 记录:批次/SN、货位、账面数(快照库存量)、实盘数、差异
③ 完成盘点
- 检查未盘项 → 弹窗选处理方式(按账面保留 / 盘亏为0)
- 展示差异汇总
- 二次确认弹窗:是否写回库存
- 写回:生成盘盈/盘亏调整单,修正库存量
- 解锁库存
- 状态=已写回
```
**每一步都要保证:**
```
库存量 = 可用量 + 锁定量 (写回后仍成立)
```
---
### 五、当前页面缺什么(结合量定义)
| # | 缺什么 | 结合量定义的影响 |
|---|--------|----------------|
| 1 | 发起后状态不更新 | 不知道当前盘点单、目标数量 |
| 2 | 扫码区和盘点单没关联 | 不知道在盘哪个单 |
| 3 | 没有取消盘点入口 | 发起了退不出 |
| 4 | **盘点期间没锁库存** | **库存量会变,差异算错** |
| 5 | 未盘项没处理 | 部分批次没盘,差异不完整 |
| 6 | SN 和批次交互没区分 | SN 实盘数应该自动=1 |
| 7 | 写回用开关 | 误触导致库存被改 |
| 8 | 写回没走调整单 | 库存量改了,但查不到谁改的 |
| 9 | 没有状态机 | 盘点单状态不可追踪 |
| 10 | 写回后没校验等式 | 写完库存量,可用量、锁定量可能对不上 |
**第 4 条最严重——不锁库存,差异直接算错,盘点结果不可信。**
**第 10 条次严重——写回后如果 `库存量 ≠ 可用量 + 锁定量`,整个库存账就崩了。**
---
### 六、给 AI 的修改描述(结合量定义)
```
### 库存盘点页面修改(结合数量定义)
1. 盘点对象:盘的是「库存量」,不是可用量,不是锁定量。
- 账面数 = 快照时的库存量
- 实盘数 = 实际数到的库存量
- 差异 = 实盘数 − 账面数
2. 发起盘点时锁定库存:
- 冻结该范围的库存量、锁定量、可用量
- 盘点期间不允许出库/入库/锁定
- 盘点完成或取消后解锁
3. 差异写回:
- 生成盘盈/盘亏调整单,记录调整前后数量
- 修正库存量,锁定量不动
- 写回后校验:库存量 = 可用量 + 锁定量(必须成立)
- 走二次确认弹窗,不用开关
4. 按物料类型区分扫码:
- 扫批次号(结构件)→ 弹实盘数量框
- 扫 SN(电气件)→ 实盘数=1,自动提交
5. 未盘项处理:
- 完成盘点时,如有未盘项,弹窗选:按账面保留 / 盘亏为0
6. 取消盘点:
- 增加「取消盘点」按钮,解锁库存,状态=已取消
7. 状态机:进行中 → 已锁定 → 已完成 → 已写回 / 已取消
8. 发起后自动带入盘点单号到扫码区,扫码区自动关联当前盘点单
9. 历史盘点单增加字段:差异项数、是否写回、写回时间
10. 盘点明细导出:盘点单号、批次/SN、货位、账面数、实盘数、差异、操作人、时间
11. 写回权限:主管以上
12. 目标数量定义:本次盘点覆盖的批次/SN 总数,发起时自动算出
```
---
### 七、一句话总结
**盘点盘的是「库存量」,不是可用量;盘点期间必须锁库存,否则差异会混入业务变动;写回后必须校验 `库存量 = 可用量 + 锁定量`;不锁库存、不校验等式,盘点结果就是错的,不能闭环。**
库存盘点,你给我总结成 严厉的问题提问,并给我相应最优方案,我问问其他ai,
## 库存盘点模块——严厉问题清单与最优方案
---
### 问题1:盘点对象没定义清楚
**问题:** 盘点页面没有明确说盘的是「库存量」、「可用量」还是「锁定量」。用户不知道账面数从哪来,实盘数对应哪个量。
**最优方案:** 盘点盘的是**库存量**(实物在仓库里的总数)。
- 账面数 = 快照时的库存量
- 实盘数 = 实际数到的库存量
- 差异 = 实盘数 账面数
- 锁定量、可用量不参与盘点(它们是计算值,不是实物)
**约束:** 写回后必须满足 `库存量 = 可用量 + 锁定量`
### 问题2:盘点期间库存会变,差异算错
**问题:** 发起盘点时冻结了快照,但盘点期间如果发生出库/入库/锁定,快照和实际就不一致。差异里会混入正常业务变动,不是纯盘盈盘亏。
**最优方案:** 发起盘点时**锁定该范围库存**,盘点期间不允许出库/入库/锁定。盘点完成或取消后解锁。
- 库存量、锁定量、可用量全部冻结
- 差异干净,全是盘盈盘亏
- 盘点本身就是短时间操作(几十分钟),锁一下影响不大
### 问题3:差异写回用开关,容易被误触
**问题:** 截图里「差异写回库存」是一个开关,用户随手一划就可能改了库存。而且写回库存是**不可逆操作**,改了很难恢复。
**最优方案:** 去掉开关,改为「完成盘点」时弹**二次确认弹窗**:
- 显示盘点单号、盘点范围、已盘项/总数、差异项数
- 默认勾选「将差异写回库存」,用户可取消
- 确认后执行写回或仅记录差异
- 写回是主动确认的动作,不是误触的开关
### 问题4:写回直接改库存,没有审计痕迹
**问题:** 差异写回时如果直接覆盖库存数量,查不到是谁在什么时候改的、改了多少。出问题无法追溯。
**最优方案:** 写回时生成一张「**盘点调整单**」(盘盈/盘亏),记录:
- 调整前数量、调整量、调整后数量
- 操作人、时间、盘点单号
- 原库存量 + 调整量 = 新库存量
- 调整单入操作日志,可追溯、可反查
### 问题5:未盘项没处理
**问题:** 盘点单覆盖50个批次,只扫了45个,剩下5个怎么办?系统没说要怎么处理,直接完成会导致这5个的差异算不出来。
**最优方案:** 完成盘点时,如果有未盘项,弹窗让用户选择:
- **按账面保留**(视为无误,推荐)——未盘项不改库存
- **盘亏为0**(视为丢失)——未盘项库存量全部调为0
- 用户必须选一个才能完成盘点
### 问题6SN和批次交互没区分
**问题:** 截图里「实盘数量」对所有类型都一样,用户扫了SN还要手动填1,多余且易错。
**最优方案:** 按物料类型区分交互:
- 扫**批次号**(结构件)→ 弹出实盘数量输入框,用户填
-**SN**(电气件)→ 实盘数量自动=1,不可编辑,直接提交
- 扫码枪扫进去的内容先判断类型,再决定是否弹数量框
### 问题7:发起盘点后状态不更新
**问题:** 截图中「盘点单号」显示“未发起”,「目标数量」显示“-”。发起盘点后,这两个字段会不会自动更新?如果不会,用户不知道当前有没有进行中的盘点。
**最优方案:**
- 发起盘点后,自动更新盘点单号、目标数量、状态=进行中
- 步骤条自动高亮步骤②
- 扫码区自动带入盘点单号,不用用户手动粘贴
### 问题8:完成盘点时不知道完成哪个单
**问题:** 「完成并生成差异」按钮独立存在,和上面的扫码区没有明显关联。用户扫完码点完成,系统怎么知道是完成哪个盘点单?
**最优方案:** 完成盘点时自动关联**当前进行中的盘点单**。如果同时有多个进行中的盘点单,弹窗让用户选择。
### 问题9:没有取消盘点的入口
**问题:** 如果发起错了,或者扫错了很多,怎么取消?截图中没有取消按钮。用户只能重新发起,但旧的盘点单会一直挂在“进行中”。
**最优方案:** 增加「取消盘点」按钮:
- 解锁库存
- 状态=已取消
- 记录取消原因、操作人、时间
- 已扫描的记录保留,但不写回库存
### 问题10:没有盘点单状态机
**问题:** 盘点单没有明确的状态流转,用户不知道当前盘点处于哪个阶段。
**最优方案:** 盘点单状态机:
```
进行中 → 已锁定 → 已完成 → 已写回 / 已取消
```
- 进行中:刚发起,未开始扫
- 已锁定:库存已锁,正在扫
- 已完成:扫完提交,未写回
- 已写回:差异已修正库存
- 已取消:中途取消
### 问题11:写回后没校验等式
**问题:** 写回后库存量改了,但可用量、锁定量可能对不上。如果 `库存量 ≠ 可用量 + 锁定量`,整个库存账就崩了。
**最优方案:** 写回后强制校验:
```
库存量 = 可用量 + 锁定量 (必须成立)
```
- 写回时只改库存量,锁定量不变,可用量自动重算
- 如果校验不通过,拒绝写回,报错并记录
### 问题12:权限没定义
**问题:** 谁能发起盘点?谁能写回差异?没有定义。
**最优方案:**
- 发起盘点:仓管/主管
- 扫码实盘:仓管
- 写回差异:主管以上(写回是高权限操作)
- 取消盘点:发起人以上
### 问题13:历史盘点单字段不全
**问题:** 截图里历史列表只有 ID、盘点单号、操作人、目标数、状态、发起时间、完成时间。缺差异项数、是否写回、写回时间。
**最优方案:** 历史盘点单列表增加:
- 差异项数
- 是否写回
- 写回时间
- 取消原因(已取消的)
- 支持按状态、时间、操作人筛选
### 问题14:盘点明细无法导出
**问题:** 盘点完成后无法导出明细,没法给财务或审计。
**最优方案:** 支持导出:
- 盘点单号、批次/SN、货位、账面数、实盘数、差异、操作人、时间
- 格式:Excel
### 问题15:目标数量定义不明
**问题:** 截图里有「目标数量」,但功能定义里没解释。用户不知道这个数字代表什么。
**最优方案:** 明确定义:
- 目标数量 = 本次盘点覆盖的批次/SN 总数
- 发起时系统自动算出
- 例:按区域Z01盘点,Z01有30个批次,目标数量=30
## 给其他 AI 的提问模板
```
请独立审计以下库存盘点模块,指出问题并给出最优方案:
【当前实现】
- 三步流程:发起盘点 → 扫码实盘 → 完成盘点(可写回差异)
- 盘点范围:全库/按区域/按物料
- 差异写回用开关控制
- 扫码区有盘点单号输入框,需手动粘贴
【数量定义】
- 库存量 = 可用量 + 锁定量
- 盘点盘的是库存量
【我认为的问题】
1. 没说明盘的是哪个量(库存量/可用量/锁定量)
2. 盘点期间库存会变,差异算错
3. 差异写回用开关,容易被误触
4. 写回直接改库存,没有审计痕迹
5. 未盘项没处理
6. SN和批次交互没区分
7. 发起后状态不更新
8. 完成时不知道完成哪个单
9. 没有取消盘点的入口
10. 没有盘点单状态机
11. 写回后没校验 库存量=可用量+锁定量
12. 权限没定义
13. 历史盘点单字段不全
14. 盘点明细无法导出
15. 目标数量定义不明
【要求】
- 逐条判断我的问题是否成立
- 如果成立,给出最优方案
- 如果有遗漏,补充问题
- 结合数量定义,确保写回后库存账不崩
```