Add configurable production machine constraints

This commit is contained in:
2026-09-26 10:47:53 +02:00
parent e6a7d4da72
commit 3e13d24405
12 changed files with 904 additions and 3 deletions
+17
View File
@@ -31,6 +31,23 @@ roll_calculation.calculate_roll()
The PDF endpoint accepts the same calculation request, recalculates it through the core, then adapts the authoritative result to the established one-page PDF layout. It does not accept calculated values from the browser.
## Production-Machine Feasibility
`config/machines.yaml` is the runtime source for configured production-machine
limits; `data/source/LineLimitations_RollCalc.csv` is retained as the reference
source document. `machine_constraints.py` loads and validates the YAML through
`MachineRepository`, resolves only stable IDs/names/configured aliases, and
evaluates independent constraints through `check_production_feasibility()`.
V1 compares material-only roll weight, nominal/average diameter, calculated
maximum diameter, core diameter, and product width. All configured V1 inputs
are required before a feasible result may be claimed. Nominal diameter is used
for a configured minimum; an average diameter over the maximum fails, whereas
an average fit whose calculated maximum exceeds the maximum is a retained
warning. Line speed remains configured but is outside the initial roll-only
scope. Flask and MCP are thin adapters; no machine constraints are duplicated
in those layers or in browser code.
## Constrained Natural-Language Flow
```text