1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 08:29:36 +01:00
effigenix/backend/docs/mvp/ddd
Sebastian Frick fb735702cf docs(ddd): detaillierte Domain Models für Production, Quality und Inventory BC
- Production BC: Aggregates (Recipe, Batch, ProductionOrder) mit Invarianten, Drafts, Status-Maschinen, Domain Events und Chargen-Genealogie
- Quality BC: 9 Aggregates (TemperatureLog, CleaningPlan/Record, GoodsReceiptInspection, SampleRecord, TrainingRecord, MaintenanceRecord, QualityHold, ProcessParameter) mit HACCP-Compliance
- Inventory BC: 4 Aggregates (Stock, StockMovement, InventoryCount, StorageLocation) mit FEFO, Reservierungen mit Priorität, Vier-Augen-Prinzip bei Inventur
- Ubiquitous Language: Inventory-Sektion von 11 auf 27 Begriffe erweitert
- Alte deutsche Datei 05-qualitaets-kontext.md entfernt (ersetzt durch 05-quality-bc.md)
2026-02-19 01:13:12 +01:00
..
00-overview.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
01-domain-classification.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
02-bounded-contexts.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
03-ubiquitous-language.md docs(ddd): detaillierte Domain Models für Production, Quality und Inventory BC 2026-02-19 01:13:12 +01:00
04-production-bc.md docs(ddd): detaillierte Domain Models für Production, Quality und Inventory BC 2026-02-19 01:13:12 +01:00
04-produktions-kontext.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
05-quality-bc.md docs(ddd): detaillierte Domain Models für Production, Quality und Inventory BC 2026-02-19 01:13:12 +01:00
06-labeling-bc.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
07-bestandsfuehrungs-kontext.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
07-inventory-bc.md docs(ddd): detaillierte Domain Models für Production, Quality und Inventory BC 2026-02-19 01:13:12 +01:00
08-procurement-bc.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
09-filiales-bc.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
10-supporting-bcs.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00
README.md refactor: restructure repository with separate backend and frontend directories 2026-02-17 22:08:51 +01:00

DDD Domain Model - Effigenix Fleischerei-ERP

Sprache: Deutsch (für Domain-Experten) Code: Englisch (siehe Java Style Guide) Erstellt: 2026-02-17 Technologie: Java 21+ mit DDD + Clean Architecture


📚 Dokumentationsstruktur

Übersichtsdokumente

Dokument Beschreibung
00-overview.md Gesamtüberblick, DDD-Phasen, Projektziele
01-domain-classification.md Core/Supporting/Generic Klassifizierung mit Begründungen
02-bounded-contexts.md Context Map (Mermaid) + Kontextbeziehungen
03-ubiquitous-language.md Glossar DE/EN für alle Bounded Contexts

Kern-Domäne (Core) - 7 Kontexte

Dokument Bounded Context Aggregates
04-produktions-kontext.md Produktion Rezept, Charge, Produktionsauftrag
05-qualitaets-kontext.md Qualität (HACCP/QM) Temperaturprotokoll, Reinigungsnachweis, Wareneingangsprüfung, Schulungsnachweis, Wartungsprotokoll
06-labeling-bc.md Deklaration Produktetikett, Allergene-Matrix
07-bestandsfuehrungs-kontext.md Bestandsführung Bestand, Bestandsbewegung
08-procurement-bc.md Beschaffung Bestellung, Wareneingang, Bedarfsplan
09-filiales-bc.md Filialen Filiale, Interfilial-Transfer, Verteilungsplan

Unterstützende Domäne (Supporting) - 3 Kontexte

Dokument Bounded Context Aggregates
10-supporting-bcs.md Stammdaten Artikel, Lieferant, Kunde
10-supporting-bcs.md Verkauf Auftrag, Rechnung, Lieferschein
10-supporting-bcs.md Waagen-Integration Synchronisations-Job, Bondaten-Import

🎯 Verwendung für Domain-Experten

Für Besprechungen mit Fleischerei-Experten

Diese Dokumente verwenden deutsche Begriffe, um die Kommunikation zu erleichtern:

  • Rezept statt Recipe
  • Charge statt Batch
  • Wareneingang statt Goods Receipt
  • Rückverfolgbarkeit statt Traceability

Im Code werden englische Begriffe verwendet (siehe 03-ubiquitous-language.md):

// Dokumentation: Rezept
// Code: Recipe
public class Recipe { ... }

// Dokumentation: Charge
// Code: Batch
public class Batch { ... }

🔍 Wichtige Konzepte

1. Aggregate

Ein Aggregat ist eine Gruppe von Objekten, die immer konsistent zusammen geändert werden müssen.

Beispiel: Rezept-Aggregat

Rezept (Aggregate Root)
├── RezeptId
├── Name
├── Zutaten[] (Teil des Aggregats)
├── Produktionsschritte[] (Teil des Aggregats)
└── Status
  • Aggregate Root = Einstiegspunkt (nur Rezept ist von außen zugänglich)
  • Invarianten = Regeln, die IMMER gelten müssen (z.B. "Rezept muss mind. 1 Zutat haben")
  • Transaktionsgrenze = Ein Rezept = eine Datenbanktransaktion

2. Wertobjekte (Value Objects)

Unveränderliche Objekte, die nur durch ihre Werte definiert sind.

Beispiel:

// Zwei Geldbeträge mit gleichen Werten sind identisch
Money betrag1 = Money.of(100, "EUR");
Money betrag2 = Money.of(100, "EUR");
// betrag1.equals(betrag2) = true

// Im Gegensatz zu Entities (haben ID)
Charge charge1 = Charge.of(ChargenId.of("CHARGE-001"), ...);
Charge charge2 = Charge.of(ChargenId.of("CHARGE-002"), ...);
// charge1.equals(charge2) = false (verschiedene IDs)

3. Rückverfolgbarkeit (Traceability)

KRITISCH für Fleischerei-Betriebe!

graph LR
    A[Lieferanten-Charge<br/>SUPPLIER-12345] -->|verwendet in| B[Produktions-Charge<br/>BATCH-2026-02-17-001]
    B -->|verkauft als| C[Rechnung<br/>INV-2026-02-20-042]
    C -->|an| D[Kunde<br/>CUST-123]

    style A fill:#ffe6e6
    style B fill:#e6f3ff
    style C fill:#e6ffe6
    style D fill:#fff9e6

Bei Rückruf:

  1. Finde alle Produktionschargen mit betroffener Lieferanten-Charge
  2. Finde alle Verkäufe dieser Produktionschargen
  3. Informiere betroffene Kunden

Code: Siehe 07-bestandsfuehrungs-kontext.md - Rückverfolgbarkeits-Beispiel


📊 Context Map

Die Context Map zeigt, wie die verschiedenen Bounded Contexts zusammenarbeiten:

Siehe: 02-bounded-contexts.md

Kernaussagen:

  • Produktion liefert Rezeptdaten an Deklaration (für Nährwertberechnung)
  • Produktion verbraucht/produziert in Bestandsführung
  • Qualität prüft Wareneingang (aus Beschaffung)
  • Bestandsführung ist zentral - alle schreiben/lesen dort

Validierung mit Domain-Experten

Checkliste für Review-Meetings

Vorbereitung:

  1. Relevanten Bounded Context öffnen (z.B. 04-produktions-kontext.md)
  2. Aggregate-Struktur durchgehen
  3. Invarianten besprechen

Fragen an Experten:

  • Sind alle Zutaten erfasst, die in einem Rezept sein können?
  • Gibt es weitere Produktionsschritte, die dokumentiert werden müssen?
  • Welche Grenzwerte gelten für Temperaturprotokolle?
  • Welche Dokumente sind bei Wareneingang Pflicht?
  • Wie läuft ein Interfilial-Transfer praktisch ab?

Ergebnis:

  • Dokumentation anpassen basierend auf Feedback
  • Neue Invarianten hinzufügen
  • Fehlende Aggregate/Entities ergänzen

🚀 Nächste Schritte

  1. Phase 0-3 abgeschlossen - Bounded Contexts & Aggregates modelliert
  2. Phase 4: Invarianten - Detaillierte Geschäftsregeln pro Aggregat
  3. Phase 5: Code-Generierung - Java 21+ Code aus Modellen
  4. Phase 6: Validierung - DDD-Rules-Checklist

📞 Kontakt

Für Rückfragen zum Domain Model:

  • Dokumentation: docs/mvp/ddd/
  • Code-Beispiele: .claude/skills/ddd-model/languages/java/templates/
  • DDD-Regeln: .claude/skills/ddd-model/rules/ddd-rules.md