1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 18:49:59 +01:00
effigenix/backend/docs/mvp/ddd/02-bounded-contexts.md
Sebastian Frick c2c48a03e8 refactor: restructure repository with separate backend and frontend directories
- Move Java backend to backend/ directory
- Create frontend/ directory for TypeScript TUI and future WebUI
- Update .gitignore for Node.js and worktrees
- Update README.md with new repository structure
- Copy documentation to backend/
2026-02-17 22:08:51 +01:00

210 lines
7.5 KiB
Markdown

# Bounded Contexts (Kontextgrenzen) & Context Map
**Datum:** 2026-02-17
## Context Map (Kontextkarte)
```mermaid
---
config:
theme: neutral
look: classic
layout: elk
themeVariables:
background: "#f8fafc"
class:
hideEmptyMembersBox: true
---
graph TB
subgraph CORE["⚡ KERN-DOMÄNE"]
Produktion["<b>Produktion</b><br/>Rezept, Charge,<br/>Ausbeute, Produktionsauftrag"]
Qualitaet["<b>Qualität</b><br/>(HACCP/QM)<br/>Temperaturprotokolle,<br/>Reinigung, Schulung,<br/>Wartung"]
Deklaration["<b>Deklaration</b><br/>Allergene, Nährwerte,<br/>Etiketten, Qualitätssiegel"]
Bestand["<b>Bestandsführung</b><br/>Lagerbestände, Chargen-Tracking,<br/>Rückverfolgbarkeit, MHD, FEFO,<br/>Lagerorte"]
Beschaffung["<b>Beschaffung</b><br/>Bedarfsplanung,<br/>Bestellungen,<br/>Wareneingang,<br/>Qualitätsprüfung"]
Filialen["<b>Filialen</b><br/>Standorte, Interfilial-Transfer,<br/>Zentrale Produktion,<br/>Verteilung"]
Produktion -->|Rezeptdaten| Deklaration
Produktion -->|Verbraucht/Produziert| Bestand
Qualitaet -->|Prüft| Bestand
Bestand -->|Beliefert| Beschaffung
Bestand -->|Transfers| Filialen
end
subgraph SUPPORTING["🔧 UNTERSTÜTZENDE DOMÄNE"]
Stammdaten["<b>Stammdaten</b><br/>Artikel, Kunden,<br/>Lieferanten"]
Verkauf["<b>Verkauf</b><br/>Aufträge, Rechnungen,<br/>Lieferscheine"]
Waagen["<b>Waagen-Integration</b><br/>Synchronisation,<br/>Bondaten, Etikettendruck"]
Stammdaten -->|Stellt Artikel bereit| Verkauf
Waagen -->|Bondaten| Verkauf
end
subgraph GENERIC["📊 GENERISCHE SUBDOMÄNEN"]
Reporting["<b>Reporting</b><br/>Analysen, Statistiken,<br/>Dashboards"]
Dokumentenarchiv["<b>Dokumentenarchiv</b><br/>(GoBD)<br/>Audit Trail,<br/>Revisionssicher"]
Benutzerverwaltung["<b>Benutzerverwaltung</b><br/>Rollen, Berechtigungen"]
end
Stammdaten -.->|Stellt Artikel bereit| CORE
Filialen -.->|Koordiniert Mehrfilialen| SUPPORTING
CORE -.->|Konsumiert Daten| GENERIC
SUPPORTING -.->|Konsumiert Daten| GENERIC
```
---
## Bounded Context Details (Kontextdetails)
### Kern-Domäne (7 BCs)
#### 1. Produktions-Kontext
- **Verantwortung:** Rezepturverwaltung, Produktionsplanung, Chargen-Erzeugung
- **Aggregate:** Rezept, Charge, Produktionsauftrag
- **Upstream:** Stammdaten (Artikelkatalog)
- **Downstream:** Deklaration (Rezeptdaten), Bestandsführung (Bestandsbewegungen)
#### 2. Qualitäts-Kontext (HACCP/QM)
- **Verantwortung:** HACCP-Compliance, Qualitätsmanagement, Audit-Vorbereitung
- **Aggregate:** Temperaturprotokoll, Reinigungsnachweis, Wareneingangsprüfung, Schulungsnachweis, Wartungsprotokoll
- **Upstream:** Beschaffung (Wareneingangsprüfung), Stammdaten (Lieferanten, Mitarbeiter)
- **Downstream:** Reporting (HACCP-Berichte), Dokumentenarchiv (Audit-Nachweise)
#### 3. Deklarations-Kontext
- **Verantwortung:** Automatische Berechnung von Nährwerten und Allergenen, Etikettengenerierung
- **Aggregate:** Produktetikett, Allergene-Matrix
- **Upstream:** Produktion (Rezeptdaten für Berechnungen)
- **Downstream:** Waagen-Integration (Etikettendruck)
#### 4. Bestandsführungs-Kontext
- **Verantwortung:** Chargen-basierte Bestandsführung, Rückverfolgbarkeit, MHD-Tracking
- **Aggregate:** Bestand, Bestandsbewegung
- **Upstream:** Produktion (Produktionsausstoß), Beschaffung (Wareneingang), Verkauf (verkaufte Artikel)
- **Downstream:** Beschaffung (Lagerbestände für Bedarfsplanung), Reporting (Bestandsberichte)
#### 5. Beschaffungs-Kontext
- **Verantwortung:** Bedarfsplanung, Bestellwesen, Wareneingangskontrolle, Lieferanten-QM
- **Aggregate:** Bestellung, Wareneingang, Bedarfsplan
- **Upstream:** Bestandsführung (aktueller Bestand), Produktion (Produktionsaufträge), Stammdaten (Lieferanten, Artikel)
- **Downstream:** Qualität (Wareneingangsprüfung), Bestandsführung (Bestandszugang)
#### 6. Filialen-Kontext
- **Verantwortung:** Mehrfilialen-Management, Interfilial-Transfers, zentrale Produktion
- **Aggregate:** Filiale, Interfilial-Transfer, Verteilungsplan
- **Upstream:** Alle Kern-BCs (koordiniert Mehrfilialen-Operationen)
- **Downstream:** Bestandsführung (Interfilial-Bestandsbewegungen), Produktion (filialspezifische Produktion)
---
### Supporting Domain (3 BCs)
#### 8. Master Data BC
- **Verantwortung:** Stammdatenverwaltung für Artikel, Lieferanten, Kunden
- **Aggregates:** Article, Supplier, Customer
- **Downstream:** Alle BCs nutzen Master Data als Referenz
#### 9. Sales BC
- **Verantwortung:** Auftragserfassung, Rechnungsstellung, Lieferscheine
- **Aggregates:** Order, Invoice, DeliveryNote
- **Upstream:** Master Data (customers, articles), Inventory (stock availability)
- **Downstream:** Inventory (sales deduct stock), Reporting (sales statistics)
#### 10. Scale Integration BC
- **Verantwortung:** Waagen/Kassen-Anbindung, Bondaten-Import, Etikettendruck
- **Aggregates:** ScaleSyncJob, BondDataImport
- **Upstream:** Master Data (article sync), Labeling (label templates)
- **Downstream:** Inventory (bond data → stock movements), Sales (sales data)
---
### Generic Subdomains (3 BCs)
#### 11. Reporting BC
- **Verantwortung:** Auswertungen, Statistiken, Dashboards
- **Upstream:** Alle BCs liefern Daten für Reports
- **Keine Aggregates** (Read-only, CQRS Query Side)
#### 12. Document Archive BC (GoBD)
- **Verantwortung:** Revisionssichere Dokumentenarchivierung
- **Aggregates:** Document, AuditLog
- **Upstream:** Quality (HACCP documents), Sales (invoices), Procurement (delivery notes)
#### 13. User Management BC
- **Verantwortung:** Benutzer, Rollen, Permissions
- **Aggregates:** User, Role
- **Downstream:** Alle BCs nutzen User Management für Autorisierung
---
## Context Relationships
### Partnership
- **Production ↔ Inventory:** Enge Zusammenarbeit bei Chargen-Tracking
- **Procurement ↔ Quality:** Wareneingangskontrolle gemeinsam
### Customer-Supplier
- **Production → Labeling:** Production liefert Rezeptdaten
- **Master Data → alle BCs:** Master Data liefert Stammdaten
### Conformist
- **Labeling → Production:** Labeling übernimmt Recipe-Struktur 1:1
- **Reporting → alle BCs:** Reporting passt sich an alle Datenmodelle an
### Anti-Corruption Layer
- **Scale Integration → Inventory:** ACL übersetzt Bondaten in StockMovements
- **FIBU Integration → Sales:** ACL übersetzt zu DATEV-Format
---
## Integration Patterns
### Event-Driven
- **Production.BatchCompleted** → Inventory (stock in)
- **Procurement.GoodsReceived** → Inventory (stock in)
- **Sales.ItemSold** → Inventory (stock out)
### Request-Response
- **Labeling → Production:** GET /recipes/{id} für Nährwertberechnung
- **Procurement → Inventory:** GET /stock/{articleId} für Bedarfsplanung
### Shared Database (Anti-Pattern, vermeiden!)
- ❌ Nicht verwenden - jeder BC hat eigene Datenbank
---
## Deployment Strategy
### Monolith First (MVP)
Alle BCs in einer Anwendung:
```
effigenix-erp/
├── domain/
│ ├── production/
│ ├── quality/
│ ├── labeling/
│ ├── inventory/
│ ├── procurement/
│ └── filiales/
├── application/
└── infrastructure/
```
### Microservices Later (nach MVP)
Extraktion von BCs in Services:
```
production-service
quality-service
inventory-service
procurement-service
filiales-service
master-data-service
sales-service
scale-integration-service
```
**Empfohlene Reihenfolge:**
1. Scale Integration (eigener Prozess wegen Hardware-Anbindung)
2. Reporting (Read-only, CQRS)
3. Inventory (hohe Last)
4. Production (geschäftskritisch, isolieren)