Commit Graph

14 Commits

Author SHA1 Message Date
f1cf152091 chore: update OpenAPI spec, Angular config, and dev application settings 2026-07-23 15:03:17 +02:00
2261ffbbd3 feat-common-regenerate-openapi-spec 2026-07-23 14:16:35 +02:00
4b7b26231f feat(community): add member consumption dashboard with coverage preview
Backend:
- ConsumptionDashboardService: aggregates consumption and community
  feed-in data with daily/hourly granularity based on date range
- Coverage calculation: min(consumption, communityFeedIn) per interval
- Ownership check on dashboard endpoint
- 6 new aggregate queries in MeteringDataRepository
- findActiveMeteringPointIdsByCommunityId in MembershipRepository
- 6 unit tests for ConsumptionDashboardService

Frontend:
- Apache ECharts via ngx-echarts for chart visualization
- ConsumptionDashboardComponent with metering point selector,
  date range picker, quick-range buttons (7/30/90 days)
- Chart: blue bars (consumption), green bars (covered), orange
  line (community feed-in), tooltip with coverage percentage
- Summary cards: total consumption, coverage %, feed-in, covered kWh
- Warning when user has no community membership
- Route /dashboard/consumption (MEMBER only)

Tests: 143/143 passing
2026-07-22 13:23:58 +02:00
975f76dbd3 feat(community): add metering data upload and query with XLSX support
Implement complete metering data management for energy communities:

- MeteringData entity with unique constraint (metering_point_id, interval_start, data_type)
- Bulk upload via JSON or XLSX (multipart) with validation
- XLSX parser using Apache POI with comma-decimal support
- Ownership check on GET endpoints (userId must match metering point owner)
- Deduplication: existing records overwritten on re-upload
- DataSource tracking (EMAIL_XLSX, API, MANUAL)
- Query endpoints: by metering point, by type, by upload batch

Additional fixes:
- MapStruct annotation processor: add to execution-level annotationProcessorPaths
  (Spring Boot parent POM was overriding plugin-level config)
- EnergyCommunityMapper + MeteringDataMapper: componentModel=spring
- UserMapper: ignore passwordResetToken/Expiry (unmapped target policy ERROR)
- TariffService: add TariffInviteRepository dependency + invitation check
- TariffServiceTest: add missing @Mock for TariffInviteRepository
- SecurityConfig: permit /actuator/health and /actuator/info
- pom.xml: add poi-ooxml, postgresql, spring-boot-starter-actuator
- .gitignore: add *.log, survey/, backend.log

Tests: 137/137 passing
2026-07-22 12:42:27 +02:00
5949359216 fix(tariff): fix critical security and correctness issues from code review
- Fix UserTariffController: use @CurrentUserId instead of broken extractUserId()
- Fix UserTariffController: use @PathVariable instead of @RequestParam for userId in delete
- Add @PreAuthorize annotations to all tariff endpoints (ADMIN for community, MEMBER for user)
- Add duplicate tariff prevention for (source, target) pairs
- Optimize membership check: replace N+1 query with efficient isActiveMemberOfCommunity()
- Update tests to match new membership check API
2026-07-22 10:11:12 +02:00
0dfaa2d507 feat(tariff): implement complete tariff module with admin and user tariffs
Backend:
- Add CommunityTariff entity (admin-managed max price + surcharge per community)
- Add UserTariff entity (user-agreed tariffs between metering points)
- Add TariffController (admin endpoints) and UserTariffController (user endpoints)
- Add TariffService with full validation (price <= max, ACTIVE state, membership)
- Add CommunityTariffChangedEvent and UserTariffChangedEvent
- Update NotificationListener to notify members on tariff changes
- Add 27 comprehensive tests for TariffService

Frontend:
- Add AdminTariffComponent (/dashboard/tariffs) for managing community tariffs
- Add UserTariffComponent (/dashboard/my-tariffs) for managing user tariffs
- Add routing and navigation entries
- Regenerate OpenAPI spec and frontend API client

Note: Old Tariff.java entity replaced by CommunityTariff + UserTariff
2026-07-22 09:52:22 +02:00
7baa1c72af refactor(common,community,mako): fix typos and remove dead code
- Rename MakoConsens* -> MakoConsent* (3 event classes + listener)
- Rename EdaCommuncationEventListener -> EdaCommunicationEventListener
- Rename PointType.PROSUME -> PROSUMER
- Remove dead SecurityConfig admin path matchers (actual security via @PreAuthorize)
- Regenerate OpenAPI spec and frontend API client
2026-07-22 09:15:27 +02:00
caf282cb1e fix(mako): fix findPendingWithDetails query and OpenApiGeneratorTest
- Remove invalid JOIN FETCH mp.user from MembershipRepository query
  (MeteringPoint has no @ManyToOne User field, only UUID userId)
- Fix OpenApiGeneratorTest: disable security filters for MockMvc,
  use UTF-8 for getContentAsString and Files.writeString
2026-07-22 07:41:52 +02:00
70e05e524b added meteringpoint management 2026-07-05 15:08:01 +02:00
2e9790b3b2 simplified user registration process 2026-07-05 14:36:26 +02:00
8b57f97d88 fixed Dto mapping in EnergyCommunityAdminController and openapi definition 2026-06-24 08:33:15 +02:00
81ee804ae1 added basic eg managment 2026-06-23 14:34:06 +02:00
ad47f7399e added admin approval list
implemented approval (untested)
implemented eda consent simulation (untested)
2026-06-17 11:08:44 +02:00
4ef6d32093 first working frontend/backend 2026-06-01 16:59:49 +02:00