1. HardDeleteClubDataAsync: Löscht jetzt auch CashBookEntries und BookingCategories (Zeilen 200-201)
2. ResetDemoClubAsync: Ruft jetzt SeedSystemBookingCategoriesAsync auf (Zeile 183)
3. Neue Methode SeedSystemBookingCategoriesAsync (Zeilen 578-606): Erstellt die 4 System-Kategorien:
- Spielstrafe (Income, grün)
- Mitgliedsbeitrag (Income, blau)
- Korrekturbuchung (Income, orange)
- Saldoanpassung (Income, grau)
added tests and fixes
Bereits vorhanden:
- ClubService.CreateAsync: Ruft bereits EnsureSystemCategoriesAsync für neue Clubs auf (Zeile 101)
Die System-Kategorien werden jetzt automatisch:
- Bei Anlage eines neuen Clubs (via ClubService)
- Beim Zurücksetzen des Demo-Clubs (via DemoSeeder)
- ITriggerRepository interface + TriggerRepository implementation
- ITriggerService interface + TriggerService implementation
- TriggerDto, ExpenseTriggerLinkDto, FireTriggerDto
- FireTriggerAsync creates PersonExpenses with multiplier
- DI registration for both services
- Fix test mock for IClubRepository
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- DashboardDto, IDashboardService, DashboardService
- Summary cards: members, guests, days, open expenses
- Recent days list with navigation
- Top penalty recipients list
- Home redirects to /dashboard
- Updated HomePageTests
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>