fix: update application namespace and clean up deprecated files
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s

- Changed application namespace from `de.tt_tagebuch.app` to `de.tsschulz.tt_tagebuch` in build.gradle.kts and AndroidManifest.xml for consistency.
- Updated DEVELOPMENT.md to reflect the correct package name for the app.
- Removed deprecated files related to AppDependencies, MainActivity, MainApplication, and PDF generation, streamlining the codebase.
- Enhanced TODO.md to reflect the current status of the Android team planning phase implementation.
This commit is contained in:
Torsten Schulz (local)
2026-05-14 19:17:51 +02:00
parent e0196a6617
commit 56ebffce69
201 changed files with 1816 additions and 984 deletions

View File

@@ -165,49 +165,19 @@ Web: `DiaryView.vue` (sehr groß). API-Cluster (Auszug in Web nach `apiClien
- [x] **Ausstehende Freigaben** `ClubApprovalsApi`, `PendingApprovalsManager`, Screen unter „Mehr“ → Club-Verwaltung (`ClubAdminScreens.kt`)
- [x] **Team-Management (Mannschaften + Editor)** `TeamManagementScreen` + `TeamEditorScreen`: Saison, Suche, CRUD Mannschaften; Tabs Stammdaten, Spielerstatistik (Liga), **Aufstellung/Meldung**, Dokumente, Scheduler-Jobs, MyTT (`ClubTeamsApi`, `MatchesApi`, `TeamDocumentsApi`, `ApiLogsApi`, `MyTischtennisApi`, Rechte `canReadTeams`/`canWriteTeams`)
- [ ] **Mannschafts-Planung (Android)** siehe Unterabschnitt **Phase 8a** (Web hat das Planungsboard bereits; mobil bewusst **offen**)
- [x] **Mannschafts-Planung (Android)** `TeamManagementScreen` **Mannschaften | Planung**; `TeamPlanningScreen` / `TeamPlanningLogic`; `MembersApi` Play-Interest (`TeamEditorModels`) Details **Phase 8a**
- [x] **Berechtigungen** erweiterte `PermissionsApi`, `PermissionsAdminManager`, UI Rolle/Status/Anpassen mit `RolePermissionMatrix` (`ClubAdminScreens.kt`)
- [x] **Logs** `ApiLogsApi`, `ApiLogsManager`, Liste + Pagination + Detail (`ClubAdminScreens.kt`); `AppDependencies` / Logout / 401 räumen Manager auf
### Phase 8a Mannschafts-Planung auf Android (Backlog / Plan)
### Phase 8a Mannschafts-Planung auf Android (umgesetzt, Stand 2026-05)
**Ziel:** Gleiche **fachliche** Funktion wie Web **Team-Verwaltung → Planung**: Pool „möchte spielen“, mehrere Mannschaften der Saison parallel, Spieler nur **eligibility-konform** zuordnen, lokale Stammdaten (Name, geplante Liga, AK/GK) pro Team, **Meldung (Lineup)** je Team und gewählter **Halbserie** lesen/schreiben, optional **Debounced Autosave** wie Web.
- [x] `GET/POST` **`/api/clubmembers/play-interest/:clubId`** `MembersApi` + DTOs `MemberPlayInterestRowDto` / `MemberPlayInterestSetBody`
- [x] **UI:** `TeamPlanningScreen.kt` Halbserie, Pool, Interesse markieren, Mannschaft hinzufügen, pro Team Stammdaten + Meldung, QTTR-Abstand, „Im Editor öffnen“
- [x] **Einstieg:** `TeamManagementScreen` Segment **Mannschaften | Planung**
- [x] **Logik:** `TeamPlanningLogic.kt` Normalisierung Zuordnungen, Eligibility über `TeamEditorLineupLogic`, Default-Halbserie
- [ ] **Optional später:** Drag-and-Drop statt Menüs; Debounced Autosave wie Web; dedizierte Tests Serialisierung
**Web-Referenz (1:1 zum Durchlesen der Logik):**
| Bereich | Datei / Abschnitt |
|--------|-------------------|
| Umschalter „Mannschaften“ / „Planung“, Board einbinden | `frontend/src/views/TeamManagementView.vue` (`activeMainSection`, `TeamPlanningBoard`) |
| UI Pool, Teams, Suche, Interesse markieren | `frontend/src/components/team/TeamPlanningBoard.vue` |
| Lanes / Drag-Drop | `frontend/src/components/team/TeamPlanningLane.vue` |
**Backend-APIs (aus Web `apiClient`; im `shared` ergänzen, falls noch fehlend):**
- [ ] `GET /api/clubmembers/play-interest/:clubId` mit Query `seasonId`, `lineupHalf` geladene **Interessen** für Pool (`loadPlanningInterestedMemberIds`)
- [ ] `POST /api/clubmembers/play-interest/:clubId` Body `memberId`, `seasonId`, `lineupHalf`, `interested` Mitglied als „interessiert“ markieren (`onPlanningMarkMemberInterested`)
- [x] `GET /api/clubmembers/get/:clubId/:showAll` bereits `MembersApi.listMembers`
- [x] `GET /api/club-teams/...` Mannschaften Saison, `GET …/lineup?half=`, `PUT …/lineup` `ClubTeamsApi` (Planung lädt Lineups **aller** Teams der Saison parallel wie Web `loadPlanningAssignments`)
- [x] `PUT /api/club-teams/:id` Stammdaten Planungsteam (`updateClubTeam`)
- [x] `POST /api/club-teams/club/:clubId` neue Planungs-Mannschaft (`createClubTeam` o. ä.)
- [x] `DELETE /api/club-teams/:id` Planungs-Mannschaft löschen
**Shared / Domäne:**
- [ ] DTOs für Play-Interest (Response-Zeilen: `memberId`, `interested`, …) + `MembersApi` Erweiterung
- [ ] Optional: **PlanningState**-Use-Case (normalisierte Zuordnungen `teamId`/`memberId`/`position`, Halbserie, Recompute bei AK/GK-Wechsel) Web: `normalizePlanningAssignments`, `removeAllIneligiblePlanningAssignments`, `isEligibleForPlanningTeam` (analog `TeamEditorLineupLogic.isEligibleForTeam` + Team-spezifische AK/GK aus `planningLocalTeams`)
**Android UI (Vorschlag für Umsetzungsschritte):**
1. [ ] **Einstieg:** In `TeamManagementScreen` (oder `AppRoot`) zweiter Modus **„Planung“** neben **„Mannschaften“** (wie Web-Workspace-Buttons), gleiche Saison-Auswahl wie Liste
2. [ ] **Screen** `TeamPlanningScreen.kt` (oder modular `TeamPlanningPool.kt` / `TeamPlanningTeamCard.kt`): Pool + Liste der Teams; kein 1:1-Spiegel der Web-Grid-Optik nötig, aber **alle Aktionen** abdeckbar
3. [ ] **Drag-and-Drop:** Entweder Compose **Drag-and-Drop** (Plattform-API) oder **Fallback** ohne DnD: „Mitglied auswählen → Ziel-Mannschaft“ / „Aus Mannschaft entfernen“ / Reihenfolge **↑↓** in der Lane (wie Aufstellungs-Tab)
4. [ ] **Halbserie** (VR/RR) gemeinsam mit Web-Parameter `lineupHalf` an Play-Interest und Lineup-Requests
5. [ ] **„In Workspace öffnen“** / Team-Editor: Web `convertPlanningTeamToRegular` prüfen ggf. nur Navigation zum bestehenden `TeamEditorScreen` statt Konvertierungs-API
6. [ ] **Autosave:** Web nutzt Debounce (`schedulePlanningTeamAutosave`) mobil entweder gleichziehen oder explizit **„Speichern“** pro Team + Konflikt-Hinweis (Produktentscheidung)
7. [ ] **i18n:** Keys aus `teamManagement.planning*` / `markAsInterested` usw. in `MobileStrings` oder Fallback-Kette wie andere Admin-Screens
8. [ ] **Tests:** Serialisierung Play-Interest; optional Snapshot der Normalisierung `planningAssignments`
**Hinweis im Code:** Solange 8a offen ist, kann im Tab Aufstellung ein kurzer Verweis auf die **zukünftige** in-App-Planung stehen (nach Umsetzung Text anpassen oder entfernen).
**Hinweis im Code:** Tab Aufstellung (`TeamEditorScreen`) verweist auf den Reiter **Planung** in derselben Team-Verwaltung.
---