diff --git a/TODO.md b/TODO.md index eebb955..cfdb67f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,8 @@ # Offene Punkte -Stand: 2026-09-02. Die fachlichen Entscheidungen sind gefallen und gebaut; was -hier steht, passiert außerhalb des Repos oder wartet auf den nächsten Deploy. +Stand: 2026-09-02, abgeglichen mit der produktiven Instanz. Die fachlichen +Entscheidungen sind gefallen und gebaut; was hier steht, passiert außerhalb des +Repos oder wartet auf den nächsten Deploy. ## Vor dem nächsten Deploy @@ -15,43 +16,43 @@ Gelesen wird er über `$env/dynamic/public`, das heißt: Die Variable muss in de In Coolify als normale Umgebungsvariable eintragen genügt. Fehlt sie, laufen die Kacheln ohne Schlüssel weiter — die Karte bleibt also sichtbar. -### Migrationen greifen beim nächsten Start +### Migrationen: sechs gelaufen, fünf offen -Elf neue Migrationen liegen in `backend/pb_migrations/`: +Abgeglichen mit `api.stammtisch-hersbruck.de` (nur gelesen): Der Backend-Deploy +hat alles bis `1754500900` mitgenommen, ab `1754501000` steht es noch aus. -| Datei | Was sie tut | -|---|---| -| `1754500500_riders_user_and_admin_rules` | `riders.user`, Fahrerpflege nur noch Teamleitung, `users.viewRule`/`createRule` gelockert | -| `1754500600_events_dates_instead_of_status` | `events.status` **raus**, `starts`/`ends` rein | -| `1754500700_trail_status_meta` | `trails.status_changed`, `trails.status_by` | -| `1754500800_trail_markers_custom` | `trail_markers.label`/`icon`, `flag` nicht mehr Pflicht | -| `1754500900_users_superadmin` | `users.superadmin`, gesetzt für stammtisch@dne.name | -| `1754501000_teams_logo` | `teams.logo` | -| `1754501100_trails_status_report` | Mitglieder dürfen den Trail-Zustand melden | -| `1754501200_users_list_for_invites` | `users.listRule` gelockert (Kontosuche) | -| `1754501300_event_participants` | neue Collection, **verschiebt Daten**, entfernt `riders.event`/`riders.number` | -| `1754501400_events_timing_participation` | `events.timing`/`participation`, Regeln für Selbsteintrag | -| `1754501500_event_series` | neue Collection `event_series`, `events.series` | +| Datei | Was sie tut | Stand | +|---|---|---| +| `1754500500_riders_user_and_admin_rules` | `riders.user`, Fahrerpflege nur Teamleitung, `users.viewRule`/`createRule` | gelaufen | +| `1754500600_events_dates_instead_of_status` | `events.status` raus, `starts`/`ends` rein | gelaufen | +| `1754500700_trail_status_meta` | `trails.status_changed`, `status_by` | gelaufen | +| `1754500800_trail_markers_custom` | `trail_markers.label`/`icon`, `flag` optional | gelaufen | +| `1754500900_users_superadmin` | `users.superadmin` samt Schutz vor Selbstbeförderung | gelaufen | +| `1754501000_teams_logo` | `teams.logo` | **offen** | +| `1754501100_trails_status_report` | Mitglieder dürfen den Trail-Zustand melden | **offen** | +| `1754501200_users_list_for_invites` | `users.listRule` gelockert (Kontosuche) | **offen** | +| `1754501300_event_participants` | neue Collection, **verschiebt Daten**, entfernt `riders.event`/`number` | **offen** | +| `1754501400_events_timing_participation` | `events.timing`/`participation` | **offen** | +| `1754501500_event_series` | `event_series`, `events.series` | **offen** | -Solange sie nicht gelaufen sind, scheitert alles, was auf den neuen Regeln -aufbaut. Am deutlichsten beim Anlegen eines Mitglieds oder eines Fahrer-Logins: -**„Only superusers can perform this action"** — genau das sagt die noch -unveränderte `users.createRule` (null = nur Superuser). +Bis zum nächsten Deploy laufen deshalb ins Leere: Team-Logo, Zustandsmeldung +durch Mitglieder, Kontosuche per E-Mail, Teilnehmerlisten, die Event-Schalter +und die Serien. Die Oberfläche dafür ist da und wird beim Speichern eine +Fehlermeldung von PocketBase zeigen. -**Drei Dinge sind nicht zurückzunehmen:** +**Zwei Dinge sind beim Nachziehen nicht zurückzunehmen:** -1. `events.status` verschwindet samt seiner Werte. -2. `1754501300` legt für jeden Fahrer mit Event einen Teilnehmer an und - entfernt danach `riders.event` und `riders.number`. Eine Startnummer an - einem Fahrer **ohne** Event hat danach keinen Platz mehr und geht verloren — - sie war ohnehin nirgends sichtbar, weil alle Listen nach Event filterten. -3. Bestehende Events werden auf `timing = true` und `participation = +1. `1754501300` legt für jeden Fahrer mit Event einen Teilnehmer an und entfernt + danach `riders.event` und `riders.number`. Eine Startnummer an einem Fahrer + **ohne** Event hat danach keinen Platz mehr und geht verloren — sie war + ohnehin nirgends sichtbar, weil alle Listen nach Event filterten. +2. Bestehende Events werden auf `timing = true` und `participation = geschlossen` gesetzt. Genau so wurden sie bisher benutzt; wer einen Stammtisch daraus machen will, schaltet die Zeitnahme im Dialog ab. -Ebenfalls neu und bewusst so: Jeder Eingeloggte kann Konten auflisten -(`users.listRule`), damit sich bestehende Konten wieder per E-Mail ins Team -holen lassen. E-Mail-Adressen bleiben über `emailVisibility` verborgen. +Ebenfalls bewusst so: Nach `1754501200` kann jeder Eingeloggte Konten +auflisten, damit sich bestehende Konten per E-Mail ins Team holen lassen. +E-Mail-Adressen bleiben über `emailVisibility` verborgen. ### Typen einmal neu erzeugen @@ -93,6 +94,9 @@ Deploy unter Einstellungen → Team → Logo hoch. ## Kleinigkeiten +- Wer Regeln direkt im PocketBase-Admin ändert, hinterlässt keine Spur im Repo. + Die Migrationen bleiben die Quelle: Sie setzen dieselben Werte noch einmal und + überschreiben eine abweichende Handänderung stillschweigend. - Die Rolle **Superadmin** ist gesetzt, gibt in der App aber noch keine besonderen Rechte. Sie ist bewusst nur in PocketBase vergebbar: Die `updateRule` der users-Collection schließt `superadmin` vom Selbstsetzen aus.