1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 12:09:35 +01:00
effigenix/backend/README.md
Sebastian Frick 3cccab1f4d fix(frontend): pnpm dev und pnpm build ohne manuelle Vorbereitung
pnpm dev:
- Internal-Packages-Pattern: packages/ zeigen auf ./src/index.ts
- tsx lädt TypeScript direkt, kein Build-Schritt vor pnpm dev nötig
- publishConfig sichert dist/ für pnpm build und Releases

pnpm build:
- @effigenix/types build ruft nicht mehr generate:types auf
  (openapi.json ist eingecheckt, kein laufendes Backend nötig)
- Veraltete Typreferenzen entfernt/korrigiert:
  SessionToken (nicht im Schema), RoleName/Permission (aus RoleDTO
  abgeleitet), ErrorResponse (als eigene Interface definiert)

docs: READMEs aktualisiert – Schnellstart prominent, Stub-Modus
dokumentiert, Korrekturen (Flyway→Liquibase, com.→de.effigenix)
2026-02-18 21:39:32 +01:00

103 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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<E,T>, 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