Warenwirtschaft: Doku nachgezogen — Nacharbeitsstand F-01…F-18, README/V7/Testleitfaden bereinigt (Bericht Abschnitt 8)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-08 11:10:52 +00:00
parent aa2fcc4656
commit dd93a99265
4 changed files with 64 additions and 11 deletions

View file

@ -2,9 +2,10 @@
> **Stand:** 26.08.2026 · **Basis:** Kundenfeedback aus der Testphase > **Stand:** 26.08.2026 · **Basis:** Kundenfeedback aus der Testphase
> ([entwicklungsplan-aktualisiert-2026-08-26.md](entwicklungsplan-aktualisiert-2026-08-26.md)) > ([entwicklungsplan-aktualisiert-2026-08-26.md](entwicklungsplan-aktualisiert-2026-08-26.md))
> **Vorgänger:** V6.0 ([entwicklungsplan-aktualisiert-06-07-2026.md](entwicklungsplan-aktualisiert-06-07-2026.md)) > **Vorgänger:** V6.0 ([entwicklungsplan-aktualisiert-2026-07-06.md](entwicklungsplan-aktualisiert-2026-07-06.md))
> **Verifikation:** Jeder Befund wurde am Code **und** an der eingespielten Live-DB geprüft (Dev-Container). Die Datei-/Zeilenangaben sind der aktuelle Stand. > **Verifikation:** Jeder Befund wurde am Code **und** an der eingespielten Live-DB geprüft (Dev-Container). Die Datei-/Zeilenangaben sind der aktuelle Stand.
> **Status:** Planungsdokument — **noch nichts umgesetzt.** Umsetzung erst nach Freigabe & Klärung (Abschnitt D). > **Status (historisch, 26.08.2026):** Planungsdokument — zu diesem Zeitpunkt noch nichts umgesetzt.
> **Status (aktuell, 08.09.2026):** AP-34…AP-51 umgesetzt (Tabelle unten). Die anschließende [Umsetzungsprüfung vom 08.09.2026](../02-audit/umsetzungspruefung-2026-09-08.md) fand 18 Restfehler, die ebenfalls alle behoben sind (Abschnitt 9 dort). Suite: 362 grün.
Die mit **`#`** markierten Punkte hat der Kunde als **buggy/dringend** priorisiert. Aufwände in Personentagen (PT), inkl. Test. Die mit **`#`** markierten Punkte hat der Kunde als **buggy/dringend** priorisiert. Aufwände in Personentagen (PT), inkl. Test.
@ -32,9 +33,9 @@ Die mit **`#`** markierten Punkte hat der Kunde als **buggy/dringend** priorisie
| **AP-38** WooCommerce-Ampel (Cron/Auth) | ✅ erledigt (0c8d321 ERP+Connector, b6ca332 Cron-Selbstheilung) — Live-Ursache behoben | | **AP-38** WooCommerce-Ampel (Cron/Auth) | ✅ erledigt (0c8d321 ERP+Connector, b6ca332 Cron-Selbstheilung) — Live-Ursache behoben |
| übrige APs | — | | übrige APs | — |
Suite: **338 grün**. Erledigt: **AP-34…AP-51 vollständig** (AP-34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50/51). **Keine offenen APs mehr.** Verbleibend nur der **Connector-Rollout v1.6.0** in den Shop (AP-34 + AP-38). Suite (26.08.2026): **338 grün**; nach der Nacharbeit vom 08.09.2026: **362 grün**. Erledigt: **AP-34…AP-51 vollständig** (AP-34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50/51). **Keine offenen APs mehr.** Verbleibend nur der **Connector-Rollout v1.6.0** in den Shop (AP-34 + AP-38).
> **AP-43-Hinweis:** „Zwischenspeichern" legt die Produktion als **Entwurf** ab (kein Bestand gebucht, keine Pflichtfeld-Prüfung); erst **„Produktion abschließen"** bucht Roh-/Produkt-/Verpackungsbestand. Entwürfe zählen nirgends in den Bestand. Eine bereits abgeschlossene Produktion kann nicht zurück in den Entwurf. > **AP-43-Hinweis:** „Zwischenspeichern" legt die Produktion als **Entwurf** ab (kein Bestand gebucht); erst **„Produktion abschließen"** bucht Roh-/Produkt-/Verpackungsbestand. Entwürfe zählen nirgends in den Bestand — auch nicht in die Chargenverfügbarkeit (F-01). Pflicht bleiben im Entwurf nur Produkt, Standort, Datum und Planmenge; Chargen- und Ergebniszeilen dürfen unvollständig sein und werden verlustfrei gesichert (F-03). Eine bereits abgeschlossene Produktion kann nicht zurück in den Entwurf.
> **Rollout-Hinweis AP-34:** Der ERP-Teil ist live-fähig (matcht die volle Variations-SKU gegen `wp_number`, „-"-Split nur noch Fallback). Der Shop zeigt die korrekte Zuordnung aber erst, wenn das **Connector-Plugin v1.6.0** (`dev/partnercenter-api/`, sendet ab jetzt die Variations-SKU statt der Eltern-SKU) im WooCommerce-Shop installiert ist. **Vorbedingung:** jede Variation braucht im Shop eine gepflegte eigene Artikel-Nr. (SKU) = die `wp_number` des jeweiligen ERP-Produkts. > **Rollout-Hinweis AP-34:** Der ERP-Teil ist live-fähig (matcht die volle Variations-SKU gegen `wp_number`, „-"-Split nur noch Fallback). Der Shop zeigt die korrekte Zuordnung aber erst, wenn das **Connector-Plugin v1.6.0** (`dev/partnercenter-api/`, sendet ab jetzt die Variations-SKU statt der Eltern-SKU) im WooCommerce-Shop installiert ist. **Vorbedingung:** jede Variation braucht im Shop eine gepflegte eigene Artikel-Nr. (SKU) = die `wp_number` des jeweiligen ERP-Produkts.

View file

@ -420,3 +420,40 @@ Eine spätere Abnahme sollte mindestens folgende zusammenhängende Abläufe enth
- Der Ordner heißt tatsächlich `product management ` mit abschließendem Leerzeichen. Name im Rahmen dieser Prüfung beibehalten; bei einer späteren Umbenennung sämtliche Verweise berücksichtigen. - Der Ordner heißt tatsächlich `product management ` mit abschließendem Leerzeichen. Name im Rahmen dieser Prüfung beibehalten; bei einer späteren Umbenennung sämtliche Verweise berücksichtigen.
**Abschluss der Prüfung:** Die beschriebenen Korrekturen sind Empfehlungen. Keine davon wurde am Anwendungscode umgesetzt. Bestehende fremde Änderungen wurden beibehalten. **Abschluss der Prüfung:** Die beschriebenen Korrekturen sind Empfehlungen. Keine davon wurde am Anwendungscode umgesetzt. Bestehende fremde Änderungen wurden beibehalten.
## 9. Stand der Nacharbeit (08.09.2026)
Alle 18 Befunde wurden am 08.09.2026 gegen den Code verifiziert (alle bestätigt) und anschließend umgesetzt — je Befund ein Commit mit Regressionstest. Suite danach: **362 Tests grün, 1.432 Assertions**.
| Befund | Status | Umsetzung |
|---|---|---|
| F-01 | ✅ `9e745d1` | Entwürfe zählen nicht mehr als Chargenverbrauch |
| F-02 | ✅ `7351289` | getrennter Produktkatalog für Ergebniszeilen |
| F-03 | ✅ `859b1f0` | Entwurf sichert Chargenzeilen verlustfrei |
| F-04 | ✅ `104671e` | Rezeptur-Phase an Verbrauchszeilen, keine Vervielfachung beim Wiederöffnen |
| F-05 | ✅ `a803e95` | historischer Verpackungs-Snapshot bleibt bei Notizkorrektur erhalten |
| F-06 | ✅ `122d28b` | Chargenzeilen nach Validierungsfehler aus old() wiederherstellen |
| F-07 | ✅ `fd1572d` | Verpackungsvorschau aus dem Produktionsergebnis |
| F-08 | ✅ `2796b11` | Füllgewicht mit Nachkommastellen |
| F-09 | ✅ `db27f04` | Ausschuss ohne Charge standort- und chargenkonsistent |
| F-10 | ✅ `f93b16c` | Versandabschluss nur mit Zahlungsfreigabe |
| F-11 | ✅ `691f763` | Einkaufspreise auf der Rohstoff-Detailseite nur für Admins |
| F-12 | ✅ `8c460aa` | Verkaufs-Gegenbuchungen im Monatsverbrauch netto verrechnen |
| F-13 | ✅ `1e7ebfb` | Produkthistorie zeigt Kappung mit Gesamtzahl und „Alle anzeigen“ |
| F-14 | ✅ `8808ff5` | „Enthalten in“ mit Anteil (%) und Verbrauch je Stück |
| F-15 | ✅ `c2a1783` | ml-Einkauf bleibt beim Kopieren ml-Bestellung |
| F-16 | ✅ `731b246` | fachliche Vorbedingungen innerhalb der Sperre prüfen |
| F-17 | ✅ `2859aa0` | Köln-Default zentral (Location::defaultId), auch beim Ausschuss, nur aktive Standorte |
| F-18 | ✅ `aa2fcc4` | Zwischenspeichern oben/mittig/unten, Notizfeld für Touch vergrößerbar und auto-wachsend |
**Entscheidungen bei der Umsetzung (fachlich relevant):**
- **F-03:** Entwürfe speichern Chargenzeilen roh (`production_ingredients.batch_key`, `stock_entry_id` nullable, Migration `2026_09_08_100000`). Auflösung auf Wareneingänge und Bestandsprüfung erst beim Abschluss. Ergebniszeilen dürfen im Entwurf ohne Stückzahl bleiben. Nicht mehr verfügbare Chargen werden im Formular markiert.
- **F-04:** `production_ingredients.recipe_phase_id` (Migration `2026_09_08_110000`); Altbestand ohne Phase wird beim Wiederöffnen nur einmal (erstes Vorkommen) eingesetzt.
- **F-05:** Regel: Snapshot bleibt, solange Ergebnisprodukte und Stückzahlen unverändert sind; bei echter Mengen-/Produktkorrektur wird er mit der **aktuellen** Stückliste neu gebildet.
- **F-08:** `products.fill_weight` → `decimal(10,3)` (Migration `2026_09_08_120000`). **Migrationen auf Dev-/Live-DB ausführen.**
- **F-09:** Ausschuss ohne Charge wird FEFO auf die Chargen des Lagerorts verteilt und je Charge gebucht (wie Produktionsverbrauch). Alt-Ausschuss ohne Chargenbezug bleibt unverändert.
- **F-12:** Netto-Verrechnung nur für `source=sale, direction=in` (technische Gegenbuchungen); manuelle Eingänge zählen weiterhin nicht gegen den Verbrauch.
- **F-16:** Parallelität bleibt ohne MySQL-Integrationstest; die Vorbedingungen werden jetzt innerhalb der Sperren erneut geprüft (Board-Status, Wareneingang, Ausschuss).
**Weiterhin offen (nicht Teil der Nacharbeit):** Abschnitt 4.3 (AP-14/15/16/17, AP-32 voll, AP-33c, Deckel-Varianten, LUCID), Abschnitt 4.4 (Verpackungsbestand als Übersicht, Bestandsalarm-E-Mail, zusätzliche Board-Filter), Abschnitt 5 (Optimierungen) sowie der Connector-Rollout v1.6.0 und die Browser-/iPad-Abnahme.

View file

@ -1,8 +1,8 @@
# Warenwirtschaft — Projektübersicht & Entwicklungsplan # Warenwirtschaft — Projektübersicht & Entwicklungsplan
> **Stand:** 26.08.2026 > **Stand:** 08.09.2026
> **Status:** Modul ist **live** und in der **Kundentestphase** (Dev-Container mit eingespielter Live-Datenbank inkl. Testdaten). > **Status:** Modul ist **live** und in der **Kundentestphase** (Dev-Container mit eingespielter Live-Datenbank inkl. Testdaten).
> **Testsuite:** 303 Tests grün (1130 Assertions, 0 Failures). > **Testsuite:** 362 Tests grün (1.432 Assertions, 0 Failures).
Dieses Dokument ist der Einstieg in den Ordner. Es skizziert den Gesamtstand, Dieses Dokument ist der Einstieg in den Ordner. Es skizziert den Gesamtstand,
listet die erledigten und die noch offenen Arbeitspakete und verweist auf die listet die erledigten und die noch offenen Arbeitspakete und verweist auf die
@ -16,8 +16,8 @@ Detaildokumente. Die maßgebliche, aktuellste Aufwands-/Leistungssicht ist die
| Ordner | Inhalt | | Ordner | Inhalt |
|---|---| |---|---|
| [`00-konzept/`](00-konzept/) | Ausgangs-Briefings, Fachkonzept, frühes Feedback (März–April 2026) | | [`00-konzept/`](00-konzept/) | Ausgangs-Briefings, Fachkonzept, frühes Feedback (März–April 2026) |
| [`01-entwicklungsplaene/`](01-entwicklungsplaene/) | Versionierte Entwicklungspläne — maßgeblich ist die neueste Fassung `…06-07-2026.md` (V6.0) | | [`01-entwicklungsplaene/`](01-entwicklungsplaene/) | Versionierte Entwicklungspläne — maßgeblich ist die neueste Fassung [`entwicklungsplan-V7-2026-08-26.md`](01-entwicklungsplaene/entwicklungsplan-V7-2026-08-26.md) (V7.0); V6.0 = `entwicklungsplan-aktualisiert-2026-07-06.md` |
| [`02-audit/`](02-audit/) | Qualitäts- & Sicherheits-Audit vom 15.07.2026 | | [`02-audit/`](02-audit/) | Qualitäts- & Sicherheits-Audit vom 15.07.2026; [Umsetzungsprüfung 08.09.2026](02-audit/umsetzungspruefung-2026-09-08.md) (18 Befunde, alle umgesetzt) |
| [`03-status-und-vorschlaege/`](03-status-und-vorschlaege/) | Aktuelle Leistungsübersicht, AP-32-Brückenlösung, Vorschlag Deckel-Varianten | | [`03-status-und-vorschlaege/`](03-status-und-vorschlaege/) | Aktuelle Leistungsübersicht, AP-32-Brückenlösung, Vorschlag Deckel-Varianten |
| [`screens/`](screens/) | Screenshots / Mockups zu Beständen, Rezeptur-Phasen, Produktion | | [`screens/`](screens/) | Screenshots / Mockups zu Beständen, Rezeptur-Phasen, Produktion |
@ -101,6 +101,19 @@ WooCommerce-Ampel ist voraussichtlich **kein** Partnercenter-Fehler, sondern
shopseitig (Status-Cron/Auth). Rohfassung des Feedbacks: shopseitig (Status-Cron/Auth). Rohfassung des Feedbacks:
[entwicklungsplan-aktualisiert-2026-08-26.md](01-entwicklungsplaene/entwicklungsplan-aktualisiert-2026-08-26.md). [entwicklungsplan-aktualisiert-2026-08-26.md](01-entwicklungsplaene/entwicklungsplan-aktualisiert-2026-08-26.md).
Offene Klärungspunkte (D-1…D-6) im Plan blockieren den Start einzelner Pakete. Offene Klärungspunkte (D-1…D-6) im Plan blockieren den Start einzelner Pakete.
**Stand 08.09.2026:** AP-34…AP-51 sind umgesetzt (siehe Umsetzungsstand in V7.0).
## Umsetzungsprüfung 08.09.2026 → Nacharbeit
Die unabhängige Prüfung der V7-Umsetzung
([umsetzungspruefung-2026-09-08.md](02-audit/umsetzungspruefung-2026-09-08.md)) fand
18 Befunde (5×P1, 11×P2, 2×P3) — u. a. Entwürfe blockierten Chargen, Entwurfszeilen
gingen verloren, Rohstoffe in zwei Phasen wurden beim Wiederöffnen vervielfacht,
historische Verpackungs-Snapshots wurden überschrieben, Versand ohne Zahlungsfreigabe und
Einkaufspreise für Copyreader. **Alle 18 Befunde sind umgesetzt** (je ein Commit mit
Regressionstest, Abschnitt 9 des Berichts). Drei neue Migrationen (`2026_09_08_*`) müssen
auf Dev-/Live-DB laufen. Weiterhin offen: die im Bericht (Abschnitte 4.3/4.4/5) genannten
nachgelagerten Pakete, Optimierungen, Connector-Rollout v1.6.0 und die Browser-/iPad-Abnahme.
## Offene / nachgelagerte Pakete (nach Kundentestphase) ## Offene / nachgelagerte Pakete (nach Kundentestphase)
@ -130,8 +143,10 @@ Offene Kundenfragen im Dokument. Details:
## Bekannte, bewusst akzeptierte Grenzen ## Bekannte, bewusst akzeptierte Grenzen
- **Parallelität** ist per Pest nicht testbar; abgesichert über `lockForUpdate()` + Review - **Parallelität** ist per Pest (SQLite) nicht belastbar testbar; die entscheidenden
(geringes Risiko im Ein-Personen-Admin-Betrieb). Übergänge (Board-Status, Wareneingang, Ausschuss, Produktion) prüfen ihre Vorbedingungen
seit F-16 innerhalb von `lockForUpdate()`-Transaktionen. Ein MySQL-Integrationstest mit
zwei Verbindungen steht weiterhin aus (geringes Risiko im Ein-Personen-Admin-Betrieb).
- **Self-Shipping** durch Partner erzeugt bewusst keinen Bestandsabzug (Partner versendet aus eigenem Lager). - **Self-Shipping** durch Partner erzeugt bewusst keinen Bestandsabzug (Partner versendet aus eigenem Lager).
- Board-gesetzte Versandstatus dürfen nicht von der Detailseiten-Automatik überschrieben werden - Board-gesetzte Versandstatus dürfen nicht von der Detailseiten-Automatik überschrieben werden
(Sperr-Flag `shipped_status_locked`) — in der Hinweise-Doku hinterlegt. (Sperr-Flag `shipped_status_locked`) — in der Hinweise-Doku hinterlegt.

View file

@ -137,4 +137,4 @@ Die Listen **Einkauf & Wareneingang** und **Produktionen** zeigen aus Performanc
## Was bewusst noch nicht dabei ist (nachgelagert) ## Was bewusst noch nicht dabei ist (nachgelagert)
Shop-Bestandsabzug beim Versand (inkl. Sets), Audit-Trail, 2FA, blockbasierte Rechte und die WaWi-Einstellungsseite folgen in der nächsten Runde — hier fließen zuvor noch weitere Anforderungen ein (siehe Entwicklungsplan V6.0, §3). Audit-Trail, 2FA, blockbasierte Rechte und die WaWi-Einstellungsseite folgen in der nächsten Runde — hier fließen zuvor noch weitere Anforderungen ein (siehe Entwicklungsplan V6.0, §3). *(Der Shop-Bestandsabzug beim Versand inkl. Sets ist inzwischen umgesetzt — AP-13; Versand über das Board nur mit Zahlungsfreigabe, Rechnung/API ausgenommen.)*