mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 15:29:34 +01:00
- 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/
7.5 KiB
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:
- Scale Integration (eigener Prozess wegen Hardware-Anbindung)
- Reporting (Read-only, CQRS)
- Inventory (hohe Last)
- Production (geschäftskritisch, isolieren)