eeg_portal/AGENTS.md
Bernhard Müller 8f74dbde35 complete MaKo consent flow and admin initialization
- Add MakoConsensListener for consent event handling (approved/rejected/failed)
- Add AdminDataInitializer with random password generation for dev profile
- Add findByAtNumber to MeteringPointRepository
- Fix User.isEnabled() Lombok/Spring Security conflict
- Update pom.xml with explicit Lombok 1.18.38 version
- Update .gitignore for frontend, H2, and test files
- Add AGENTS.md project documentation
2026-07-21 10:01:19 +02:00

2.6 KiB

AGENTS.md - EEG Portal

Projektübersicht

EEG Portal - Portal zur Verwaltung von Energiegemeinschaften in Österreich. Behandelt: Benutzerregistrierung, Messpunkt-Consent-Workflows (MaKo), EDA-Topologieprüfungen, Energiegemeinschaftsverwaltung, Mitgliedschaften und Tarife.

Architektur

Modularer Monolith - Designed für spätere Domänen-Extraktion als Maven-Module.

Backend (Spring Boot)

  • Java 21, Spring Boot 4.0.6
  • Pakete:
    • iam/ - Identitäts- und Zugriffsverwaltung (Auth, Users, Security)
    • community/ - Energiegemeinschaften, Mitgliedschaften, Messpunkte
    • mako/ - EDA-Kommunikation (Consent, Topologie)
    • tariff/ - Tarifverwaltung
    • dashboard/ - Dashboard-Statistiken
    • common/ - Events, Exceptions, gemeinsame Types

Frontend (Angular)

  • Angular 21, TypeScript 5.9, Tailwind CSS 4
  • API-Client wird aus OpenAPI-Spec generiert (npm run generate-api)

Wichtige Patterns

Event-basierte Kommunikation

Domänen kommunizieren über Spring Application Events:

UserRegisteredEvent → UserApprovedEvent → InitiateMakoConsentEvent
EdaTopologyCheckEvent → EdaTopologyCompletedEvent / EdaTopologyFailedEvent
MakoConsensApprovedEvent / MakoConsensRejectedEvent / MakoConsensTechnicalFailedEvent

MaKo-Zustandsautomat (MeteringPoint.fireTrigger())

NEW → WAITING_FOR_CONSENT → CONSENT_GRANTED → ACTIVE
                                    ↓
                               REJECTED / ERROR

Sicherheit

  • JWT-basiert (HS256), 2h Ablauf
  • Rollen: ADMIN, MEMBER
  • Admin-Endpunkte: /api/admin/**, /api/community/admin/**

Entwicklung starten

# Backend
.\mvnw spring-boot:run -pl eeg_backend -Dspring-boot.run.arguments=--spring.profiles.active=dev

# Frontend
cd eeg_frontend && ng serve

Wichtige Dateien

Datei Beschreibung
eeg_backend/.../community/domain/MeteringPoint.java:fireTrigger() MaKo-Zustandsautomat
eeg_backend/.../community/event/listener/MakoConsentListener.java Consent-Event-Handler
eeg_backend/.../mako/event/listener/EdaCommuncationEventListener.java EDA-Kommunikation
eeg_backend/.../iam/config/AdminDataInitializer.java Initialer Admin-User (dev)
eeg_frontend/openapi.yaml API-Vertrag für Frontend-Generierung

Regeln

  • Fehlernachrichten sind auf Deutsch
  • @Profile("dev") für simulierte EDA-Services
  • EDA-Simulation: AT-Nummer endet mit "REJECT" → Ablehnung, "ERROR" → technischer Fehler
  • Explizite isEnabled()-Überschreibung in User.java nötig (Lombok/Spring Security Konflikt)