1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 11:59:35 +01:00
Commit graph

13 commits

Author SHA1 Message Date
Sebastian Frick
2059718a5c chore(backend): JaCoCo Code Coverage und PIT Mutation Testing einrichten
JaCoCo läuft automatisch bei mvn verify (HTML/XML/CSV Reports).
PIT als eigenes Maven-Profil `mutation` — Scope auf Domain + Application Layer.
2026-02-18 23:59:05 +01:00
Sebastian Frick
e4f0665086 fix(backend): lückenloses Error-Handling und Logging im Infrastructure Layer
Stack-Traces in allen JPA-Repositories per logger.trace() bewahren, bevor
sie durch Result.failure() auf die Message reduziert werden. Security-Layer
erhält eigene Handler-Beans (ApiAuthenticationEntryPoint, ApiAccessDeniedHandler)
mit konsistentem ErrorResponse-Format statt Inline-Lambdas. JWT-Filter loggt
Validierungsfehler auf WARN statt DEBUG und fängt IllegalArgumentException.
RoleController nutzt jetzt das Exception-Pattern der anderen Controller statt
eines leeren 500-Bodys. GlobalExceptionHandler differenziert zwischen
fachlichen Domain-Fehlern (WARN) und technischen Repository-Fehlern (ERROR)
und fängt auch checked Exceptions als Catch-All.
2026-02-18 23:23:00 +01:00
Sebastian Frick
fbed3f899f fix(masterdata): MASTERDATA-Permissions und JSON-Serialisierung der REST-Responses
MASTERDATA_READ/WRITE fehlten im Permission-Enum und in den Rollen-Seed-Daten,
dadurch bekam der Admin bei allen Stammdaten-Schreiboperationen Access Denied.

Die Masterdata-Controller gaben Domain-Objekte direkt als JSON zurück, die von
Jackson nicht serialisiert werden konnten (method-style Accessors statt JavaBean-
Getter). Response-DTOs als Records eingeführt, die Domain-Objekte in flache
JSON-Strukturen mappen. Frontend-Mapping-Layer entfernt, da Backend-Responses
jetzt 1:1 die erwarteten Feldnamen liefern.
2026-02-18 22:22:19 +01:00
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
Sebastian Frick
03b3b51a68 feat(backend): Stub-Modus bei fehlender Datenbankverbindung
Startet das Backend ohne DB (z.B. für OpenAPI-Generierung):
- DatabaseProfileInitializer prüft JDBC-Verbindung vor Context-Start
- Bei Fehler: Profil "no-db" aktiviert, Warnlog erscheint
- application-no-db.yml schließt DataSource/JPA/Liquibase aus
- JpaAuditingConfig ersetzt @EnableJpaAuditing in der Hauptklasse
- Stub-Repositories und NoOpAuditLogger für Profil "no-db"
- Alle Jpa*Repository + DatabaseAuditLogger mit @Profile("!no-db")
2026-02-18 21:39:32 +01:00
Sebastian Frick
797f435a49 feat(masterdata): Infra-Layer für Customer Aggregate
Liquibase-Migration (007), JPA-Entities (Customer, FrameContract,
DeliveryAddress, ContractLineItem), Mapper, Repository-Adapter,
5 Request-DTOs, CustomerController (11 Endpoints), Error-Mapping
und 11 Use-Case-Beans in MasterDataUseCaseConfiguration.
2026-02-18 13:30:13 +01:00
Sebastian Frick
6ec07e7b34 feat(masterdata): Infra-Layer für Supplier Aggregate
Liquibase-Migration (006), JPA-Entities (SupplierEntity,
QualityCertificateEmbeddable), Mapper, Spring-Data-Repo,
Domain-Repo-Adapter, Request-DTOs, SupplierController
(9 Endpoints), ErrorMapper und UseCaseConfiguration erweitert.
2026-02-18 13:22:46 +01:00
Sebastian Frick
8b2fd38192 feat(masterdata): Infra-Layer für Article + ProductCategory Aggregate
Liquibase-Migration (005), JPA-Entities, Mapper, Spring-Data-Repos,
Domain-Repo-Adapter, Request-DTOs, Error-Mapper, REST-Controller
(11 Article-Endpoints, 4 Category-Endpoints) und UseCaseConfiguration
für alle 15 Use Cases. GlobalExceptionHandler erweitert.
2026-02-18 13:15:44 +01:00
Sebastian Frick
0ee7d91528 fix: audit log entity_id zu lang bei ROLE_ASSIGNED/ROLE_REMOVED
AssignRole und RemoveRole übergaben einen zusammengesetzten String
("User: uuid, Role: NAME") als entity_id-Spalte, die nur VARCHAR(36)
erlaubt. Neuer AuditLogger-Overload log(event, entityId, details, actor)
trennt UUID und Zusatzinformationen sauber.
2026-02-18 12:41:35 +01:00
Sebastian Frick
87123df2e4 refactor: EntityDraft-Pattern auf Customer, Article und ProductCategory anwenden
- CustomerDraft / CustomerUpdateDraft eingeführt
- ArticleDraft / ArticleUpdateDraft eingeführt
- ProductCategoryDraft / ProductCategoryUpdateDraft eingeführt
- Customer.create() nimmt jetzt CustomerDraft, gibt Result zurück
- Customer.update(CustomerUpdateDraft) ersetzt 4× updateXxx(VO)
- Article.create() nimmt jetzt ArticleDraft statt VOs
- Article.update(ArticleUpdateDraft) ersetzt rename() + changeCategory()
- ProductCategory.create() nimmt jetzt ProductCategoryDraft, gibt Result zurück
- ProductCategory.update(ProductCategoryUpdateDraft) ersetzt rename() + updateDescription()
- Use Cases bauen Draft aus Command, kein VO-Wissen im Application Layer
- CreateCustomerCommand / UpdateCustomerCommand: int → Integer für paymentDueDays
- CLAUDE.md: EntityDraft-Pattern-Dokumentation ergänzt
2026-02-18 11:56:33 +01:00
Sebastian Frick
6b341f217b refactor: konsistentes Result-basiertes Error-Handling im Master Data BC
VO-Factory-Methoden (of/create/tryEuro) für alle Value Objects eingeführt,
die intern IllegalArgumentException fangen und Result<String, T> liefern.
FrameContract.create() liefert jetzt Result statt zu werfen.

Alle 31 Use Cases auf Record-Pattern-Deconstruction umgestellt
(Failure(var err) / Success(var val) statt verbose generischer Typen).
isFailure()/unsafeGetValue() eliminiert.

Aggregate-Factorys bereinigt — VO-Null-Checks entfernt, da Validierung
jetzt in den VO-Factories liegt. ValidationFailure und CertificateNotFound
zu den Error-Interfaces hinzugefügt.

WIP: Aggregate.create() gibt teilweise kein Result mehr zurück —
wird im nächsten Schritt korrigiert.
2026-02-17 23:44:44 +01:00
Sebastian Frick
b813fcbcaa feat: implement Master Data BC domain model and application layer
Master Data BC als Supporting Domain für Artikel, Lieferanten und Kunden.
Shared Kernel um Money, Address, ContactInfo, PaymentTerms erweitert.
RepositoryError von domain.usermanagement nach shared.common migriert.
2026-02-17 22:38:32 +01:00
Sebastian Frick
c2c48a03e8 refactor: restructure repository with separate backend and frontend directories
- 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/
2026-02-17 22:08:51 +01:00