Files
AM516/capabilities/am516-delivery-prediction/docs/production_quantity.md

58 lines
3.4 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.
# 交期预测数量规则
可用成品库存已视为100%可用,只对需要新生产的缺口考虑合格率。
```text
D = 原始需求数量
S = 该型号可用库存(API字段:可用库存(扣除了待产数量))
净需求 = max(D - max(S, 0), 0)
最终排产测算数量 P = 5 × ceil(净需求 ÷ 0.95 ÷ 5)
```
净需求为0时,P为0;固定不良率5%,对应合格率95%。先扣库存,再除以合格率,最后向上取5的倍数。使用整数运算,避免边界浮点误差。库存缺失或不是有效整数时不能视作0;负整数余额按无可用库存参与计算。
| 原始需求 | 可用库存 | 净需求 | 排产测算数量 |
|---:|---:|---:|---:|
| 24 | 6 | 18 | 20 |
| 24 | 0 | 24 | 30 |
| 24 | 24 | 0 | 0 |
| 24 | 30 | 0 | 0 |
| 25 | 6 | 19 | 20 |
| 5 | 1 | 4 | 5 |
| 95 | 0 | 95 | 100 |
每个候选使用自己的库存,不累计多个候选的库存。续批保留原始需求,对新候选重新读取库存及计算,不对已折算数量重复折算。
报告示例(需求24,可用库存6):
```text
需求数量:24台
扣库存后净需求:18台
排产测算数量:20台
可用库存/覆盖情况:整机可用库存6台(部分覆盖,仍需补齐18台)
```
库存覆盖始终比较原始需求,不能比较排产量。各型号排产量可能不同,报告顶部显示计算规则,各型号明细及新记录元数据分别显示数量;历史记录不改写,候选表列不改变。
## 受控API查询
1. 先以D调用受控脚本,读取该型号库存。
2. 库存足量:P=0,沿用第一次查询的现货交期;不发送quantity=0。
3. 库存不足且P=D:第一次查询已符合排产数量,不重复查询。
4. 库存不足且P与D不同:以P调用同一受控脚本,交期、缺料明细及主导因素取第二次响应。两次库存必须一致,否则结果不可用,需要重新查询。
5. 第一响应无有效库存或必需工作日/日期字段时,结果不可用。
低层脚本仍原样传递quantity。日期与工作日仍直接使用API返回值,不在本地推算。
## 现有接口限制
现有WithTransit交接口径中,quantity同时参与成品现货判断和本次生产/BOM数量测算。若 `0 < P <= S < D`,传P会误判现货。例如D=24、S=20,净需求4、P=5,但20台库存不能覆盖24台需求。此时本地能计算正确排产量,却不能从现有单数量参数获得可靠生产交期;明确报交期不可用,原型号停止出具报告,候选列入不可用清单。需要AR836接口支持分别输入原需求和排产量后解除该限制。
不能改传S+P:这会使API按包含库存的数量测算物料和生产。也不能使用第一次D查询的交期充当P的交期。该限制依据既有接口交接说明,尚未完成当前服务端的实时验证;本次本机测试使用模拟响应。
## 运行电脑同步验收
运行电脑须拉取包含桥接代码、项目内Skill、测试及说明的完整版本并重启交期回复机器人。无需新增依赖、配置或重装物料名称刷新服务。
执行 `python3 -m unittest discover -s tests -q`,并在既有API审批及功能测试授权范围内检查需求24/库存6、库存完全覆盖、不同候选库存、续批,以及部分库存误走现货分支样例。核对数量、实际API参数、库存变化处理与API最终日期。推送成功不代表运行电脑已生效。