1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 10:39:35 +01:00
effigenix/docs/mvp/ddd/02-bounded-contexts.md
Sebastian Frick a1df32377b style
2026-02-17 08:28:31 +01:00

7.5 KiB

Bounded Contexts (Kontextgrenzen) & Context Map

Datum: 2026-02-17

Context Map (Kontextkarte)

---
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)