# Effigenix Backend Java Spring Boot Backend für das Effigenix ERP-System. ## Schnellstart ```bash # 1. PostgreSQL starten (Docker) docker run --name effigenix-postgres \ -e POSTGRES_DB=effigenix \ -e POSTGRES_USER=effigenix \ -e POSTGRES_PASSWORD=effigenix \ -p 5432:5432 \ -d postgres:15 # 2. Bauen & starten mvn spring-boot:run ``` **Ohne Datenbank** (Stub-Modus – nur API-Docs): ```bash mvn spring-boot:run # Warnung im Log: "⚠️ Keine Datenbankverbindung – Stub-Modus aktiv" # OpenAPI-Spec: http://localhost:8080/api-docs ``` **API-Dokumentation** (mit laufender DB): - Swagger UI: http://localhost:8080/swagger-ui.html - OpenAPI JSON: http://localhost:8080/api-docs ## Build ```bash # Kompilieren + Tests mvn clean install # Nur starten (ohne Tests) mvn spring-boot:run # Mit Profil mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` ## Architektur DDD + Clean Architecture. Einweg-Abhängigkeit: `domain → application → infrastructure`. ``` de.effigenix/ ├── domain/ # Reine Geschäftslogik – keine Framework-Deps │ ├── usermanagement/ │ └── masterdata/ ├── application/ # Use Cases, Commands, DTOs │ ├── usermanagement/ │ └── masterdata/ ├── infrastructure/ # Spring, JPA, REST, Security, Audit │ ├── config/ │ ├── security/ │ ├── audit/ │ ├── stub/ # Stub-Beans für no-db-Profil │ ├── usermanagement/ │ └── masterdata/ └── shared/ # Shared Kernel (Result, AuthorizationPort, Action) ``` **Liquibase-Migrationen:** `src/main/resources/db/changelog/` ## User Management ### Vordefinierte Rollen | Rolle | Zielgruppe | |-------|------------| | `ADMIN` | Systemadministrator (alle Rechte) | | `PRODUCTION_MANAGER` | Leiter Produktion | | `PRODUCTION_WORKER` | Produktionsmitarbeiter | | `QUALITY_MANAGER` | Qualitätsbeauftragter | | `QUALITY_INSPECTOR` | QM-Mitarbeiter | | `PROCUREMENT_MANAGER` | Einkaufsleiter | | `WAREHOUSE_WORKER` | Lagermitarbeiter | | `SALES_MANAGER` | Verkaufsleiter | | `SALES_STAFF` | Verkaufsmitarbeiter | ### AuthorizationPort ```java // Typsichere, fachliche Authorization – kein direkter Zugriff auf User/Roles authPort.assertCan(ProductionAction.RECIPE_WRITE); authPort.assertCan(SalesAction.ORDER_READ, orderId); ``` ## Tests ```bash mvn test # Unit Tests mvn verify # + Integration Tests mvn clean verify jacoco:report # Test Coverage ``` ## Dokumentation - [Quick Start](docs/QUICK_START.md) – Docker, Seed-Daten, lokale Entwicklung - [User Management](docs/USER_MANAGEMENT.md) – Referenz-BC, JWT, Audit