No description
AP-35 (Mengenberechnung): Die Hersteller-Rezeptur ist in Prozent hinterlegt; die Sollmengen skalieren jetzt auf das Füllgewicht statt fest auf ~100 g. Neuer Faktor recipeGramScale = Füllgewicht/100. Basis = neues, optionales Produkt-Feld "fill_weight" (g); ist es leer, gilt bei ml-Produkten (unit=1) die Füllmenge (contents_total) als Gramm (1 g/ml). Ohne Massenbasis (z. B. Stück-Produkte) bleibt es beim Altverhalten (Anteil = Gramm), sodass Bestandsprodukte/Tests unverändert rechnen. Skala wird an die Maske durchgereicht (recipe_gram_scale), damit Client und Server identisch rechnen (Service + 4 JS-Stellen). AP-39 (Abwiegen): Die Ist-Menge je INCI muss nicht mehr aufs Gramm passen — assertLinesMatchRecipe erlaubt ±5 % (kleiner absoluter Sockel), gebucht wird der reale Ist-Wert. Status-Ampel in der Maske: Orange = nichts eingetragen, Grün = eingetragen und ±5 %, Rot = >5 % daneben (Zahlendreher-Schutz). Migration add_fill_weight_to_products auf Dev-/Live-DB ausgeführt (nullable). Product fillable/cast + Produktformular-Feld ergänzt. 5 Tests, Suite 310 grün. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .cursor | ||
| .devcontainer | ||
| .idea | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| dev | ||
| docker/8.4 | ||
| docs | ||
| packages | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| tools | ||
| .env | ||
| .gitignore | ||
| .mcp.json | ||
| .php-cs-fixer.php | ||
| .phpstorm.meta.php | ||
| _ide_helper.php | ||
| _ide_helper_models.php | ||
| artisan | ||
| CLAUDE.md | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.yml | ||
| package-lock.json | ||
| package.json | ||
| partner.gruene-seele.bio.code-workspace | ||
| PAYMENT_REMINDER_CRON.md | ||
| phpunit.xml | ||
| pint.json | ||
| server.php | ||
| ssh-cron-info.readme | ||
| ssh-info.readme | ||
| webpack.mix.js | ||