# DDD Domain Model - Effigenix Fleischerei-ERP

**Erstellt:** 2026-02-17
**Technologie:** Java 21+
**Architektur:** Domain-Driven Design + Clean Architecture

## Überblick

Dieses Dokument beschreibt das Domain-Driven Design (DDD) Modell für das Effigenix Fleischerei-ERP System.

## Projektziele

1. **ERP-Grundlagen** für Stammdatenverwaltung, Auftragsabwicklung und Fakturierung
2. **HACCP-Compliance** - Vollständiges QM-System als Kernmehrwert für kleine Betriebe
3. **Rezeptur-Management** - Mehrstufige Rezepturen mit Chargen-Tracking und Rückverfolgbarkeit
4. **Produktionsplanung** - Verkaufstrends-Analyse zur Vermeidung von Überproduktion
5. **Mehrfilialen-Unterstützung** - Zentrale Produktion mit Belieferung mehrerer Filialen

## DDD-Phasen

### Phase 0: Technologie-Auswahl ✅
- **Sprache:** Java 21+
- **Patterns:** Result Types, Sealed Interfaces, Pattern Matching
- **Architektur:** Clean Architecture (Domain → Application → Infrastructure)

### Phase 1: Domain Discovery ✅
- **Subdomain-Klassifizierung:** Core, Supporting, Generic
- **DDD-Investment:** Volles DDD für 7 Core Domains

### Phase 2: Bounded Contexts ✅
- **11 Bounded Contexts** identifiziert
- **Context Map** mit Beziehungen erstellt
- **Ubiquitous Language** für jeden BC definiert

### Phase 3: Tactical Modeling ✅
- **Aggregates** identifiziert für alle Core BCs
- **Entities** und **Value Objects** definiert
- **Invarianten** dokumentiert

### Phase 4: Invarianten (TODO)
- Detaillierte Invarianten-Dokumentation
- Enforcement Points definieren

### Phase 5: Code-Generierung (TODO)
- Java-Code aus Aggregates generieren
- Repository Interfaces
- Use Cases

### Phase 6: Validation (TODO)
- DDD-Rules-Checklist durchgehen
- Clean Architecture Compliance prüfen

## Dokumentationsstruktur

```
docs/mvp/ddd/
├── 00-overview.md (dieses Dokument)
├── 01-domain-classification.md
├── 02-bounded-contexts.md
├── 03-ubiquitous-language.md
├── 04-production-bc.md
├── 05-quality-bc.md
├── 06-labeling-bc.md
├── 07-inventory-bc.md
├── 08-procurement-bc.md
├── 09-filiales-bc.md
└── 10-supporting-bcs.md
```

## Nächste Schritte

1. ✅ Bounded Contexts dokumentieren
2. ✅ Aggregates für Core BCs modellieren
3. ⏳ Invarianten detailliert ausarbeiten
4. ⏳ Java-Code generieren
5. ⏳ Validierung durchführen

## Referenzen

- Feature-Definition: `docs/mvp/2026-02-15-fleischerei-erp-feature-definition.md`
- Abhängigkeitsanalyse: `docs/mvp/2026-02-16-abhangigkeitsanalyse-fleischerei-erp.md`
- Java Style Guide: `.claude/skills/ddd-model/languages/java/style-guide.md`
- DDD Rules: `.claude/skills/ddd-model/rules/ddd-rules.md`
