# 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["Produktion
Rezept, Charge,
Ausbeute, Produktionsauftrag"] Qualitaet["Qualität
(HACCP/QM)
Temperaturprotokolle,
Reinigung, Schulung,
Wartung"] Deklaration["Deklaration
Allergene, Nährwerte,
Etiketten, Qualitätssiegel"] Bestand["Bestandsführung
Lagerbestände, Chargen-Tracking,
Rückverfolgbarkeit, MHD, FEFO,
Lagerorte"] Beschaffung["Beschaffung
Bedarfsplanung,
Bestellungen,
Wareneingang,
Qualitätsprüfung"] Filialen["Filialen
Standorte, Interfilial-Transfer,
Zentrale Produktion,
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["Stammdaten
Artikel, Kunden,
Lieferanten"] Verkauf["Verkauf
Aufträge, Rechnungen,
Lieferscheine"] Waagen["Waagen-Integration
Synchronisation,
Bondaten, Etikettendruck"] Stammdaten -->|Stellt Artikel bereit| Verkauf Waagen -->|Bondaten| Verkauf end subgraph GENERIC["📊 GENERISCHE SUBDOMÄNEN"] Reporting["Reporting
Analysen, Statistiken,
Dashboards"] Dokumentenarchiv["Dokumentenarchiv
(GoBD)
Audit Trail,
Revisionssicher"] Benutzerverwaltung["Benutzerverwaltung
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)