mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 10:19:35 +01:00
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)
103 lines
2.7 KiB
Markdown
103 lines
2.7 KiB
Markdown
# 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
|