3.2 KiB
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, Messpunktemako/- EDA-Kommunikation (Consent, Topologie)tariff/- Tarifverwaltungdashboard/- Dashboard-Statistikencommon/- 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 inUser.javanötig (Lombok/Spring Security Konflikt)
Conventional Commits
Ab jetzt werden Conventional Commits verwendet:
<type>(<scope>): <description>
[optional body]
[optional footer]
Typen
feat: Neue Funktionfix: Bugfixdocs: Dokumentationstyle: Formatierung (keine Code-Änderung)refactor: Code-Refactoring ohne Funktionsänderungtest: Tests hinzugefügt/ergänztchore: 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