eeg_portal/AGENTS.md

3.2 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)

Conventional Commits

Ab jetzt werden Conventional Commits verwendet:

<type>(<scope>): <description>

[optional body]

[optional footer]

Typen

  • feat: Neue Funktion
  • fix: Bugfix
  • docs: Dokumentation
  • style: Formatierung (keine Code-Änderung)
  • refactor: Code-Refactoring ohne Funktionsänderung
  • test: Tests hinzugefügt/ergänzt
  • chore: Build-Prozess, Abhängigkeiten, Konfiguration

Beispiele

feat(iam): add user profile management
fix(mako): handle consent rejected event correctly
docs: update AGENTS.md with conventional commits
test(iam): add UserService unit tests