gruene-seele/dev/product management /README.md

157 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Warenwirtschaft — Projektübersicht & Entwicklungsplan
> **Stand:** 09.09.2026
> **Status:** Modul ist **live** und in der **Kundentestphase** (Dev-Container mit eingespielter Live-Datenbank inkl. Testdaten).
> **Testsuite:** 370 Tests grün (1.506 Assertions, 0 Failures).
Dieses Dokument ist der Einstieg in den Ordner. Es skizziert den Gesamtstand,
listet die erledigten und die noch offenen Arbeitspakete und verweist auf die
Detaildokumente. Die maßgebliche, aktuellste Aufwands-/Leistungssicht ist die
[Leistungsübersicht 23.07.2026](03-status-und-vorschlaege/leistungsuebersicht-warenwirtschaft-23-07-2026.md).
---
## Ordnerstruktur
| Ordner | Inhalt |
|---|---|
| [`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 [`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; [Umsetzungsprüfung 08.09.2026](02-audit/umsetzungspruefung-2026-09-08.md) (18 Befunde) [Nachprüfung der Behebung](02-audit/nachpruefung-befundbehebung-2026-09-08.md) (6 Restbefunde) und [Gegenprüfung 09.09.2026](02-audit/gegenpruefung-restbefunde-2026-09-09.md) (2 Randfälle) — alle umgesetzt |
| [`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 |
> Hinweis: Der Ordnername `product management ` trägt ein **abschließendes Leerzeichen**.
> Das ist fehleranfällig (Shell/Tooling). Empfehlung: bei Gelegenheit in
> `product-management` umbenennen — nicht ohne Rücksprache erledigt, da evtl.
> externe Verweise darauf zeigen.
---
## Was das Modul kann (Ist-Stand, live)
Eine vollständige Warenwirtschaft im Admin-Bereich des Partnercenters:
- **Stammdaten:** Lieferanten (Bestellweg, Lieferzeit, Land-Default DE), Rohstoffe/INCI
(Mehrfach-Lieferanten inkl. URL, Qualität, Alternativname, Lagerort Raum/Regal/Fach),
Verpackungsartikel, Set-Produkte, konfigurierbare Einstellungen (USt-Sätze,
Lieferzeit-Vorlagen, Ausschuss-Gründe).
- **Einkauf & Wareneingang:** Bestellungen mit Netto/Brutto-Automatik & Duplizieren,
Chargen-/MHD-Erfassung, Zusammenführen gleicher Chargen (FEFO).
- **Produktion:** Rezeptur auf Hersteller-Basis mit **Phasen** (Drag & Drop), Chargen-Nr.
mit Präfix + Auto-Generierung (`TP1` + `ttmmjj`), neue Produktionsmaske mit
**Produktionsergebnis-Repeater** (mehrere Ergebnis-Produkte je Charge, FEFO-Chargenwahl).
- **Bestände:** Rohstoffbestand (Restmengen je Charge, Verbrauchsprognose, Kritisch-Warnungen),
Produktbestand (revisionssichere Historie, manuelle Buchungen, Dringlichkeits-Sortierung,
Kacheln), Ausschuss-Erfassung.
- **Shop-Anbindung (API):** automatischer **Bestandsabzug beim Versand** inkl. Set-Auflösung
und Storno-Rückbuchung, Protokoll-Seite „API-Bestellungen", Stichtags-Schutz für Altbestellungen.
- **Abwicklung:** iPad-optimiertes **Fulfillment-Board** „Bestellungen" mit Versand-Sperre,
Sammel-PDF (Lieferscheine/Rechnungen einer Auswahl als ein Dokument).
- **DHL-Versand (Brückenlösung):** Label wird im WooCommerce-Shop erzeugt und per
Connector 1.5.0 (Base64) ins Partnercenter übernommen; Anzeige von Label-Download +
Sendungsnummer. Details: [AP-32-Brückenlösung](03-status-und-vorschlaege/ap-32-brueckenloesung-connector-update.md).
---
## Erledigte Arbeitspakete
Alle folgenden APs sind umgesetzt, committet und durch die Testsuite abgedeckt:
- **AP-00–AP-12, AP-18, AP-19** — V4.0-Basis: Bugfixes, Stammdaten, Einkauf, Produktion,
Bestände, Ausschuss, WaWi-UI, integrierte Doku.
- **AP-20** Rohstoffbestand-Filter + „Kein Rohstoffbestand"-Flag (Default „nur Rezeptur").
- **AP-21** INCI-Erweiterungen (Lieferanten-Repeater + URL, Alternativname, Lagerort-CRUDs).
- **AP-22** Produktbestand-Erweiterungen (Sortierung, Kacheln, Verbrauch/Monat).
- **AP-23** Rezeptur-Phasen (Drag & Drop).
- **AP-24** Chargen-Nr.-Präfix mit Auto-Generierung.
- **AP-25** Lieferbestand „Wieder lieferbar ab"-Datum.
- **AP-26** Ausschuss-Gründe konfigurierbar.
- **AP-27** Wareneingang: Charge zusammenführen (FEFO).
- **AP-28** Neue Produktions-Maske + Produktionsergebnis.
- **AP-31** Löschen: Soft-Delete + Abhängigkeitsprüfung (`DeletionGuard`).
- **AP-13** Shop-Bestandsabzug bei Versand (Sets, Gegenbuchungen, Stichtags-Schutz) + API-Protokoll.
- **AP-33a/b** Fulfillment-Board + Sammel-Dokumente.
- **OPT-1–OPT-4** Code-Optimierungen (N+1-Fix, Settings-CRUD-Basisklasse, Pagination, `show()`-Refactoring).
- **OPT-6–OPT-9** Behebung aller Audit-Befunde (siehe unten).
### Audit 15.07.2026 — vollständig abgearbeitet
5 hohe, 10 mittlere, 16 niedrige Befunde; alle behoben oder per Kundenentscheid gelöst.
Kern-Fixes: Ausschuss in Chargen-Restmengen (H-1), Härtung gegen Doppel-/Negativbuchungen
(H-2/H-3), transaktionssicherer Rezeptur-Neuaufbau inkl. Phasen (H-4/H-5), CSRF-/AuthZ-Härtung
(M-2/3/6/7/10). Audit bestätigte: solide Architektur, kein SQLi/XSS, kein falscher Plan-Status.
Details: [Audit-Bericht](02-audit/audit-bericht-15-07-2026.md).
### Review vor Live-Release (20.07.2026) — abgefangene Risiken
- Stichtags-Schutz auf unveränderliches Flag `sale_stock_exempt` umgestellt (verhinderte
rückwirkenden Abzug bei Storno+Wiederversand von Altbestellungen).
- Auto-Storno im Mahnwesen über zentralen `OrderStatusService::setShipped()` geführt
(verhinderte zahlbare Provision auf versendete, nie bezahlte Bestellung).
- AP-32-Brücke auf Base64/Connector 1.5.0 gehärtet (kein 403/SSRF/Timeout mehr).
---
## Testphasen-Feedback 26.08.2026 → Plan V7.0
Aus der laufenden Testphase kam eine neue Feedback-/Bug-Runde. Alle Punkte sind am
Code **und** an der Live-DB verifiziert und in einen Umsetzungsplan überführt:
**[Entwicklungsplan V7.0](01-entwicklungsplaene/entwicklungsplan-V7-2026-08-26.md)**
(9 bestätigte Bugs + Erweiterungen, ca. 15–26 PT, AP-34…AP-51). Wichtig: die
WooCommerce-Ampel ist voraussichtlich **kein** Partnercenter-Fehler, sondern
shopseitig (Status-Cron/Auth). Rohfassung des Feedbacks:
[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.
**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). Eine anschließende
[Nachprüfung](02-audit/nachpruefung-befundbehebung-2026-09-08.md) fand sechs Restfehler
(N-01…N-06: Entwurfsmenge ohne Charge, Phasenverlust beim Artikelspeichern, Chargensplit vs.
Snapshot, Vorschau vs. Snapshot, Alt-Ausschuss ohne Charge, ml-Kopie im Bearbeiten), die
ebenfalls behoben sind (Abschnitt 6 dort); die Gegenprüfung vom 09.09.2026 fand zu N-02/N-04 zwei Randfälle (R-01 stabile Phasen-IDs, R-02 leerer Snapshot), ebenfalls behoben. 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)
Kundenentscheid 16.07.2026: erst nach der Testphase. Grober Restaufwand **ca. 28–42 PT**.
| Paket | Inhalt | Schätzung | Abhängigkeit |
|---|---|---|---|
| **AP-32 (voll)** | DHL-Etiketten direkt im System per API erstellen | 3–5 PT | Braucht Kundenklärung: DHL-Geschäftskundenkonto (EKP), Versandprodukte, Paketmaße/-gewichte, Druck-Setup, Retouren-/Zolllabel (CH als Drittland) |
| **AP-33c** | Etiketten-Stapeldruck + Automatik-Option | 1 PT | mit AP-32 |
| **AP-14** | Audit-Trail (lückenlose Änderungshistorie) | 2–3 PT | — |
| **AP-16** | 2-Faktor-Authentifizierung für Admins | 2–3 PT | sinnvoll vor AP-15 |
| **AP-15** | Blockbasierte Rechte (sehen/bearbeiten je Bereich) | 4–6 PT | nach AP-16 |
| **AP-17** | Zentrale WaWi-Einstellungsseite | 1–2 PT | — |
**Entfällt:** OPT-5 (Horizont-Filter serverseitig) — clientseitig ausreichend (Kundenentscheid 06.07.).
### Neue Anforderung in Klärung — Deckel-Varianten (White Label)
Deocreme & Co.: eine Charge, danach unterschiedliche Deckel-Farben nach Bedarf. Analyse ergab:
Chargen-Szenario ist bereits abgedeckt (AP-28). **Empfehlung V1** (kein Umbau) — nur zwei kleine
optionale Ergänzungen: Deckel als Verpackungsartikel führen (OPT-V1a, 0 Entwicklungstage) und
Deckelfarbe in der Packliste des Boards anzeigen (OPT-V1b, ~0,5–1 Tag). Varianten-Bestand je
Farbe (V2, 3–5 PT) nur, falls fertig konfektionierte Tiegel je Farbe gezählt werden sollen.
Offene Kundenfragen im Dokument. Details:
[Vorschlag Deckel-Varianten](03-status-und-vorschlaege/vorschlag-deckel-varianten-produktion-23-07-2026.md).
---
## Bekannte, bewusst akzeptierte Grenzen
- **Parallelität** ist per Pest (SQLite) nicht belastbar testbar; die entscheidenden
Ü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).
- Board-gesetzte Versandstatus dürfen nicht von der Detailseiten-Automatik überschrieben werden
(Sperr-Flag `shipped_status_locked`) — in der Hinweise-Doku hinterlegt.
- Bestellpositionen tragen keine Attribut-/Varianten-Dimension (relevant nur für Deckel-Varianten V2).