feat(web+android+backend): Konzerte gefolgter Kuenstler als zweiter Reiter

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-25 19:23:00 +02:00
1 parent 1366ec3832
commit 17a677a5a5
13 files changed
+682 -14

No files matched your search

+26 -1
View File
@@ -42,6 +42,7 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d
| Besitzer geteilter Playlists | ✅ | ✅ |
| Künstler folgen / Album merken | ✅ | ✅ |
| Neu von deinen Künstlern | ✅ | ✅ |
| Konzerte deiner Künstler | ✅ | ✅ |
| Spotify / YouTube importer | ✅ | ✅ |
| Musik-Duell (Anzeigetafel) | ✅ | ✅ |
| Wiedergabe fortsetzen | ✅ | ✅ |
@@ -80,9 +81,33 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d
## [3.1] — 2026-09-22
**Android:** 1.15 (versionCode 18) → 1.23 (versionCode 26). 1.16 brachte den Rollbalken, 1.17 bis 1.21 machten ihn bedienbar, 1.19 das Bearbeiten der Warteschlange, 1.22 die Wischgeste, den Mischen-Fehler und die zwei neuen Designs, 1.23 den Honigtopf und die Gesamtdauer.
**Android:** 1.15 (versionCode 18) → 1.23 (versionCode 26). 1.16 brachte den Rollbalken, 1.17 bis 1.21 machten ihn bedienbar, 1.19 das Bearbeiten der Warteschlange, 1.22 die Wischgeste, den Mischen-Fehler und die zwei neuen Designs, 1.23 den Honigtopf und die Gesamtdauer, 1.24 die Konzerte.
### Added
- **Konzerte deiner Künstler (Web + Android)** — die Zeitleiste hat einen zweiten Reiter: neben
*Neu erschienen* steht jetzt *Konzerte* und zeigt, wann die Künstler spielen, denen du folgst.
Neuer Endpunkt `POST /api/artist-concerts`, Gegenstück zu `/api/artist-releases`.
- **Zwei Reiter statt zweier Knöpfe** in den Favoriten. Beides ist dasselbe Thema; zwei Knöpfe
drängeln sich, und man müsste sich merken, welcher was zeigt.
- **Bewusst nicht in eine gemeinsame Liste gemischt.** Veröffentlichungen liegen hinter dir,
Konzerte vor dir. Chronologisch gemischt stünde „heute" mittendrin und man wüsste nie, ob man
vorwärts oder rückwärts liest. Deshalb läuft die Konzertliste **nach vorn**: das nächste
Konzert zuerst. Das Zeitfenster (90/30/365) gilt je Reiter getrennt — bei den Konzerten zeigt
es nach vorn, Vorgabe ein Jahr.
- **Gegenprobe gegen die Stichwortsuche.** Ticketmaster wird über den Namen abgefragt
(`keyword=`), nicht über `attractionId` — dieselbe Unschärfe wie bei der Deezer-Zuordnung.
Jeder Treffer wird deshalb gegengeprüft: der Künstlername muss im Veranstaltungs- **oder**
Attraktionsnamen vorkommen. Ohne das liefert „MORE" oder „TPR" fremde Veranstaltungen.
- **Ortszeit, nicht UTC.** Ein Konzert um 20:00 stünde sonst als 08:00 da. Die Zeit wird als
zonenlose Ortszeit durchgereicht und unverändert angezeigt.
- **Kein Ortsfilter** — die Suche läuft weltweit. Eine Einschränkung per `.env` ist im Backlog
notiert; fürs Erste reicht, was die API liefert.
- Der Cache liegt im Backend (6 h, höchstens vier Anfragen gleichzeitig), nicht im Client: bei
50 gefolgten Künstlern wären das sonst 50 Abfragen pro Gerät und App-Start. Bei einem Fehler
kommt der abgelaufene Stand zurück statt einer leeren Liste.
- **Neun Prüfungen** in `backend/test/konzerte.test.js` — mit eingeschobener
Ticketmaster-Antwort, also ohne Schlüssel und ohne Netz: Ortszeit, Gegenprobe, Fenster,
Sortierung nach vorn, Cache-Treffer, abgesagte Termine.
- **Zwei neue Designs: Violet und Crimson (Web + Android)** — ein helles Lila auf tiefem
Violettschwarz und ein gedämpftes Rot auf Weinrot-Schwarz. Beide mit demselben Variablensatz wie
die vorhandenen, geprüft: kein Design vermisst eine Variable.