mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 08:29:36 +01:00
Einheitliches Paginierungs-Pattern mit page, size und Multi-Field sort
für alle 14 List-Endpoints. Response-Format ändert sich von [...] zu
{ content: [...], page: { number, size, totalElements, totalPages } }.
Backend:
- Shared Kernel: Page<T>, PageRequest, SortField, SortDirection
- PaginationHelper (SQL ORDER BY mit Whitelist), PageResponse DTO
- Paginated Methoden in allen 14 Domain-Repos + JDBC-Implementierungen
- Safety-Limit (500) für findAllBelowMinimumLevel/ExpiryRelevantBatches
- Alle List-Use-Cases akzeptieren PageRequest, liefern Page<T>
- Alle Controller mit page/size/sort Query-Params + PageResponse
Frontend:
- PagedResponse<T> Type auf nested page-Format aktualisiert
- Alle 14 API-Client-Resourcen liefern PagedResponse mit PaginationParams
- Alle Hooks mit Pagination-State (currentPage, totalPages, pageSize)
- Alle List-Screens mit Seiten-Navigation (Pfeiltasten) und Footer
Loadtest:
- Podman-Support im justfile (DOCKER_HOST auto-detect)
- Verschärfte Performance-Schwellwerte basierend auf Ist-Werten
107 lines
3.7 KiB
Makefile
107 lines
3.7 KiB
Makefile
# Effigenix ERP – Development Commands
|
||
|
||
# Default: alle Recipes auflisten
|
||
default:
|
||
@just --list
|
||
|
||
# ─── Dev Modi ─────────────────────────────────────────────
|
||
|
||
# Backend starten (Spring Boot)
|
||
dev-backend:
|
||
cd backend && SENTRY_DSN=$(grep '^SENTRY_DSN=' ../.env 2>/dev/null | cut -d= -f2-) mvn spring-boot:run
|
||
|
||
# CLI/TUI starten
|
||
dev-cli:
|
||
cd frontend/apps/cli && node --env-file=../../../.env --import tsx src/index.tsx
|
||
|
||
# Web-UI starten (Vite :3000)
|
||
dev-web:
|
||
cd frontend && pnpm run --filter @effigenix/web dev
|
||
|
||
# Scanner-App starten (Tauri + Vite :1420)
|
||
dev-scanner:
|
||
cd frontend/apps/scanner && pnpm tauri dev
|
||
|
||
# UI-Library im Watch-Modus bauen
|
||
dev-ui:
|
||
cd frontend && pnpm run --filter @effigenix/ui dev
|
||
|
||
# ─── Build ────────────────────────────────────────────────
|
||
|
||
# Frontend komplett bauen
|
||
build-frontend:
|
||
cd frontend && pnpm build
|
||
|
||
# Backend bauen
|
||
build-backend:
|
||
cd backend && mvn package -DskipTests
|
||
|
||
# ─── Checks ──────────────────────────────────────────────
|
||
|
||
# Frontend Typecheck
|
||
typecheck:
|
||
cd frontend && pnpm typecheck
|
||
|
||
# Frontend Tests
|
||
test-frontend:
|
||
cd frontend && pnpm test
|
||
|
||
# Backend Tests
|
||
test-backend:
|
||
cd backend && mvn test
|
||
|
||
# ─── Code Generation ─────────────────────────────────────
|
||
|
||
# OpenAPI Spec + TypeScript Types generieren
|
||
generate-openapi:
|
||
./scripts/generate-openapi.sh
|
||
|
||
# ─── Datenbank ────────────────────────────────────────────
|
||
|
||
# Testdaten einspielen
|
||
seed-testdata:
|
||
PGPASSWORD=effigenix nix shell nixpkgs#postgresql --command psql -f backend/src/main/resources/db/changelog/changes/099-seed-testdata.sql -h localhost -p 5432 -U effigenix -d effigenix
|
||
|
||
# ─── Fuzz Testing ─────────────────────────────────────────
|
||
|
||
# Alle Fuzz-Tests
|
||
fuzz:
|
||
cd backend && mvn test -Pfuzz
|
||
|
||
# Fuzz-Regressionstests
|
||
fuzz-regression:
|
||
cd backend && mvn test -Pfuzz-regression
|
||
|
||
# Einzelnen Fuzz-Test ausführen (z.B. just fuzz-single BatchFuzzTest)
|
||
fuzz-single TEST:
|
||
cd backend && mvn test -Pfuzz -Dtest={{ TEST }}
|
||
|
||
# ─── Load Testing ────────────────────────────────────────
|
||
|
||
# Gatling Load Test ausführen (startet Backend + DB via Testcontainers)
|
||
loadtest:
|
||
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
# Podman-Socket für Testcontainers bereitstellen (falls kein Docker)
|
||
if [ -z "${DOCKER_HOST:-}" ] && [ ! -S /var/run/docker.sock ]; then
|
||
PODMAN_SOCK="/run/user/$(id -u)/podman/podman.sock"
|
||
if [ -S "$PODMAN_SOCK" ]; then
|
||
export DOCKER_HOST="unix://$PODMAN_SOCK"
|
||
export TESTCONTAINERS_RYUK_DISABLED=true
|
||
fi
|
||
fi
|
||
cd loadtest && mvn gatling:test
|
||
|
||
# ─── Services ─────────────────────────────────────────────
|
||
|
||
# Bugsink starten (Error Tracking)
|
||
bugsink:
|
||
@. ./.env 2>/dev/null || true; \
|
||
docker start bugsink 2>/dev/null || \
|
||
docker run \
|
||
--name bugsink \
|
||
-p 8000:8000 \
|
||
-e SECRET_KEY=${BUGSINK_SECRET_KEY:?BUGSINK_SECRET_KEY muss gesetzt sein} \
|
||
-e CREATE_SUPERUSER=admin:admin \
|
||
bugsink/bugsink:latest
|
||
@echo "Bugsink: http://localhost:8000 (admin/admin)"
|