# Missing View Port

Stand: 2026-03-06

## Ausgangslage

- In `docs/implementation_status.md` gab es zum Zeitpunkt der Umsetzung **keinen expliziten `Missing`-Eintrag**.
- Der einzige offene View-Block war `OfficialTournaments.vue` mit Status `Partially implemented`.
- Dieser Block wurde als faktisch „fehlender Rest-View“ vollständig umgesetzt.

## Umgesetzter View-Block

### OfficialTournaments.vue (in `TournamentsScreen` Tab `official`)

Umgesetzt in Android:
- PDF-Upload für offizielles Turnier
- Laden der Event-Liste
- Laden von Turnier-Details (parsed data + competitions + participation)
- Teilnahme speichern (`wants/registered/participated/placement`)
- Status-Update-Aktion (`register` / `participate` / `reset`)
- Löschen eines offiziellen Turniers
- Loading/Error/Retry-Flow im bestehenden Screen

Wichtige Dateien:
- `android-app/app/src/main/java/de/trainingstagebuch/app/ui/screens/TournamentsScreen.kt`
- `android-app/app/src/main/java/de/trainingstagebuch/app/viewmodel/TournamentsViewModel.kt`
- `android-app/app/src/main/java/de/trainingstagebuch/app/services/TournamentService.kt`
- `android-app/app/src/main/java/de/trainingstagebuch/app/repository/TrainingstagebuchRepository.kt`
- `android-app/app/src/main/java/de/trainingstagebuch/app/repository/RepositoryMappers.kt`
- `android-app/app/src/main/java/de/trainingstagebuch/app/network/ApiService.kt`

Genutzte Endpoints:
- `GET /official-tournaments/{clubId}`
- `GET /official-tournaments/{clubId}/participations/summary`
- `POST /official-tournaments/{clubId}/upload`
- `GET /official-tournaments/{clubId}/{id}`
- `POST /official-tournaments/{clubId}/{id}/participation`
- `POST /official-tournaments/{clubId}/{id}/status`
- `DELETE /official-tournaments/{clubId}/{id}`

Socket:
- keine direkten Socket-Events für diesen View.

## Verifikation

- `cd android-app && ./gradlew assembleDebug` -> erfolgreich
- `cd android-app && ./gradlew testDebugUnitTest` -> erfolgreich

## Status nach Umsetzung

- `docs/implementation_status.md` aktualisiert:
  - `OfficialTournaments.vue` -> `Fully implemented`
  - Gesamtstände: `Fully implemented: 26`, `Partially implemented: 0`, `Placeholder: 0`, `Missing: 0`
