# Club/Members/Admin Block Port

Stand: 2026-03-06

## Umgesetzte Features
- `MembersView.vue`: Android vorhanden (`MembersScreen`, `MembersViewModel`) inkl. Member-Liste, Edit/Create, Kontakte, Trainingsgruppen, Notizen, Bilder, Quick-Actions.
- `ClubView.vue`: Android vorhanden (`ShowClubScreen`, `ShowClubViewModel`) inkl. Club-Details, Access-Request-Flow, offene Anfragen.
- `ClubSettings.vue`: Android vorhanden (`ClubSettingsScreen`, `ClubSettingsViewModel`) inkl. Settings + Trainingsgruppen + Trainingszeiten.
- `CreateClub.vue`: Android vorhanden (`CreateClubScreen`, `CreateClubViewModel`) inkl. Create-Flow.
- `MemberTransferSettingsView.vue`: Android vorhanden (`MemberTransferSettingsScreen`, `MemberTransferSettingsViewModel`) inkl. Config + Execute.
- `PendingApprovalsView.vue`: Android vorhanden (`PendingApprovalsScreen`, `PendingApprovalsViewModel`) inkl. Approve/Reject.
- `PermissionsView.vue`: neu als Android umgesetzt (`PermissionsScreen`, `PermissionsViewModel`, `PermissionsService`) inkl. Rollen laden, Struktur laden, Mitglieder laden, Rolle ändern, Status ändern, Custom-Permissions speichern.
- `TeamManagementView.vue`: neu als Android umgesetzt (`TeamManagementScreen`, `TeamManagementViewModel`, `TeamManagementService`) inkl. Teams/Ligen laden, Team create/update/delete, Team-Dokumente laden/parsen, Scheduler-Job-Info, MyTischtennis URL-Parse + Team/Liga konfigurieren + Async-Fetch-Job polling, Spieler-Statistik laden.
- Navigation ergänzt: Home bietet jetzt direkte Einstiege für Members, Permissions, Team-Management, Member-Transfer.

## Genutzte API-Endpunkte
- Club/Members/Admin bestehend:
  - `GET /clubs`, `POST /clubs`, `GET /clubs/{clubId}`, `GET /clubs/request/{clubId}`
  - `GET /clubs/pending/{clubId}`, `POST /clubs/approve`, `POST /clubs/reject`
  - `PUT /clubs/{clubId}/settings`
  - `GET/POST/PUT/DELETE /training-groups/{clubId}*`
  - `GET/POST/PUT/DELETE /training-times/{clubId}*`
  - `GET/POST/DELETE /member-transfer-config/{clubId}`, `POST /clubmembers/transfer/{clubId}`
  - `GET/POST/DELETE /membernotes*`, `GET/POST/DELETE /clubmembers/image/{clubId}/{memberId}*`, `GET /clubmembers/gallery/{clubId}`
- Permissions neu:
  - `GET /permissions/roles/available`
  - `GET /permissions/structure/all`
  - `GET /permissions/{clubId}/members?t=...`
  - `PUT /permissions/{clubId}/user/{userId}/role`
  - `PUT /permissions/{clubId}/user/{userId}/status`
  - `PUT /permissions/{clubId}/user/{userId}/permissions`
- Team-Management neu:
  - `GET /club-teams/club/{clubId}?seasonid=...`
  - `GET /club-teams/leagues/{clubId}?seasonid=...`
  - `POST /club-teams/club/{clubId}`
  - `PUT /club-teams/{clubTeamId}`
  - `DELETE /club-teams/{clubTeamId}`
  - `GET /team-documents/club-team/{clubTeamId}`
  - `POST /team-documents/{documentId}/parse?leagueid=...`
  - `GET /logs/scheduler/last-executions?clubId=...`
  - `GET /matches/leagues/{clubId}/stats/{leagueId}?seasonid=...`
  - `POST /mytischtennis/parse-url`
  - `POST /mytischtennis/configure-team`
  - `POST /mytischtennis/configure-league`
  - `POST /mytischtennis/fetch-team-data/async`
  - `GET /mytischtennis/fetch-team-data/jobs/{jobId}`

## Offene Abweichungen zur Vue-Version
- TeamManagement-Datei-Upload/Download (Datei-Picker/PDF-Viewer) ist im aktuellen Android-Block nicht vollparitätisch umgesetzt; Dokumente werden geladen und Parse-Flow ist umgesetzt.
- Permissions-Dialog ist funktional umgesetzt, aber UI/Interaktionsdetails (Tri-State-Darstellung, Legende, Styling) sind vereinfacht gegenüber Vue.
- TeamManagement-SeasonSelector ist aktuell als freie `seasonId`-Eingabe umgesetzt, nicht als kompletter SeasonSelector-Dialog wie im Web.
