Warenwirtschaft: OPT-8 Rezeptur-Robustheit (Audit H-4, H-5, M-8, N-11/12/14)
- H-4: Rezeptur-Neuaufbau (Delete-then-Insert) in DB::transaction; unbekannte Rohstoff-IDs brechen validiert ab (kein FK-Crash nach dem Delete mehr), Phasennamen auf varchar(100) gekappt. - H-5: Phasen werden auch ohne Rohstoffzeilen persistiert — Struktur mit Namen/Notizen geht beim Speichern nicht mehr verloren. - M-8: requiredGramsByIngredient() summiert doppelte Rohstoffe statt zu überschreiben. - N-11: Set-Umstellung löscht Rezeptur-Phasen mit. - N-12: Auto-Phasenname nach Z: AA, AB, … - N-14: Legacy-Zweig updateIngredients() nicht mehr destruktiv — bestehende gram/factor-Werte bleiben beim Listen-Sync erhalten (Verhalten lt. ProductPhase0Test unverändert). Tests: neuer RecipeRobustnessTest (6). Suite komplett grün. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c69721d174
commit
fa44af0a1f
3 changed files with 208 additions and 36 deletions
|
|
@ -295,7 +295,9 @@ class ProductionService
|
|||
]);
|
||||
}
|
||||
$factor = (float) ($ing->pivot->factor ?? 1.1);
|
||||
$required[(int) $ing->id] = (float) $gram * $factor * $producedQuantity;
|
||||
// Audit M-8: aufsummieren statt überschreiben — kommt derselbe Rohstoff
|
||||
// mehrfach vor (z. B. in zwei Phasen), zählt die Gesamtmenge.
|
||||
$required[(int) $ing->id] = ($required[(int) $ing->id] ?? 0.0) + (float) $gram * $factor * $producedQuantity;
|
||||
}
|
||||
|
||||
return $required;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue