Deterministic multi-level material requirements planning with auditable pegging
git clone https://github.com/sun-zhao12/moon-mrp
Set-Location moon-mrp
moon check --deny-warn --target all
moon test --deny-warn --target all
moon run examples/demo --target wasm --deny-warn
moon run examples/replenishment --target wasm --deny-warnlet request : @mrp.Request = {
horizon: 4,
items: [{
sku: "PART",
unit: "EA",
on_hand: @mrp.Qty::int(2),
safety: @mrp.SafetyStock::Fixed(@mrp.Qty::int(1)),
max_stock: @mrp.Qty::zero(),
lead_time: 1,
yield_per_mille: 1000,
lot: @mrp.LotForLot,
phantom: false,
}],
bom: [],
demands: [{ id: "repair", item: "PART", bucket: 3, quantity: @mrp.Qty::int(8) }],
receipts: [],
conversions: [],
policy: @mrp.Strict,
}
let result = @mrp.plan(request).unwrap()
// safety 1, on_hand 2, demand 8 at bucket 3, lead 1:
// net 7, quantity 7, receipt_bucket 3, release_bucket 2
println(result.to_json().stringify())| 0.1.0 | 0.2.0 |
|---|---|
| 数量是 Int64 整数单位 | 数量是 Qty 定点小数(3 位),用 Qty::int / Qty::milli 构造 |
| Item 含 sku/on_hand/safety_stock/lead_time/lot | 增加 unit、yield_per_mille |
| Component 含 parent/child/units_per | 增加 usage_unit、scrap_per_mille |
| Request 无换算与策略 | 增加 conversions、policy |
| Bucket 无 received | 增加 received(合格入库) |
| JSON moon-mrp.plan.v1 | moon-mrp.plan.v2,增加 received、late、incidents |
| 上限 64 物料 / 128 周期 | 4096 物料 / 1024 周期 / 100000 单据 |
pub(all) enum PlanningError {
InvalidHorizon
SizeLimit
InvalidItem(String)
DuplicateItem(String)
UnknownItem(String)
InvalidComponent(String, String)
DuplicateComponent(String, String)
InvalidMovement(String)
DuplicateMovement(String)
Cycle(Array[String])
QuantityLimit(String)
BeforeHorizon(String, Int, Int)
InvalidConversion(String, String)
} derive(Eq, Debug)Install
Download zipDeterministic multi-level material requirements planning with auditable pegging