Add project documentation and update workflow plan
Adds AGENTS.md, DESIGN.md, and docs/* covering architecture, conventions, decisions, checklists, branching, release process, and prompts. Updates README and workflow-feedback-plan to reflect the decoupled GroupName nomination model. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ Die erste grosse Aenderung sollte den Core Workflow stabilisieren: Nominierung,
|
||||
Die wichtigsten Produktentscheidungen:
|
||||
|
||||
- Kategorien mit Viewer-Groessen werden als einzelne Kategorien pro Unterkategorie abgebildet, gruppiert ueber `GroupName`.
|
||||
- Viewer duerfen pro Kategorie bis zu drei Stream- oder Kanal-Links nominieren.
|
||||
- Viewer duerfen pro Hauptkategorie so viele Stream- oder Kanal-Links nominieren, wie in der Hauptkategorie als `MaxNomineesPerUser` konfiguriert ist. Der aktuelle Default bleibt drei.
|
||||
- Eine Nominierung muss nicht fuer alle Kategorien abgegeben werden.
|
||||
- Clip-Compilations werden nicht als Videodateien in der App gespeichert.
|
||||
- Voting und Gewinnerbereiche nutzen externe YouTube-/Twitch-Links oder Embeds.
|
||||
@@ -29,21 +29,23 @@ Das Dokument beschreibt pro Award-Kategorie drei Unterkategorien nach Viewer-Gro
|
||||
|
||||
Im aktuellen Datenmodell passt das am besten zu einzelnen `Category`-Datensaetzen pro Unterkategorie. Der uebergeordnete Award-Bereich, zum Beispiel `Gamer`, bleibt `GroupName`; die konkrete Unterkategorie wird `Name`, zum Beispiel `Hidden Star der Gamer`.
|
||||
|
||||
Damit entsteht kein paralleles Kategorienmodell. Admin-, Public- und Voting-Flows koennen weiter mit `CategoryId` arbeiten.
|
||||
Damit entsteht kein paralleles Kategorienmodell. Admin- und Voting-Flows arbeiten weiter mit konkreten `CategoryId`s. Die Public-Nominierung wurde davon bewusst entkoppelt: User nominieren auf Hauptkategorie/`GroupName`, das passende Viewer-Tier wird danach ueber Tracker- und Admin-Review bestimmt.
|
||||
|
||||
Um die Pflege fuer Admins einfacher zu machen, bleibt die normale Hauptkategorie-Pflege erhalten, waehrend Unterkategorien zentral in einem Season-Modal konfiguriert werden. Ein Award-Bereich bleibt `GroupName`, Unterkategorien bleiben im Ausfuehrungsmodell normale `Category`-Datensaetze, werden aber aus der globalen Definition fuer alle Hauptkategorien synchron gehalten. Viewer-Range, Name, Slug und Reihenfolge werden pro Unterkategorie strukturiert gespeichert; ein separates Standard-Set wird nicht mehr angeboten.
|
||||
|
||||
### Nominierung
|
||||
|
||||
Das Feedback wuenscht pro Kategorie bis zu drei Nominierungen als Stream-/Kanal-Links. Namen sind nicht zwingend noetig, weil die Admins aus dem Link den finalen Kandidaten erstellen oder zuordnen koennen.
|
||||
Das Feedback wuenscht pro Kategorie mehrere Nominierungen als Stream-/Kanal-Links. Namen sind nicht zwingend noetig, weil die Admins aus dem Link den finalen Kandidaten erstellen oder zuordnen koennen. Das konkrete Link-Limit kommt aus der Admin-Hauptkategorie.
|
||||
|
||||
Geplanter Zielzustand:
|
||||
|
||||
- Pro Kategorie koennen ein bis drei Links eingereicht werden.
|
||||
- Doppelte Links innerhalb derselben Kategorie werden blockiert.
|
||||
- Pro Hauptkategorie koennen ein bis zum konfigurierten Limit Links eingereicht werden.
|
||||
- Doppelte Links innerhalb derselben Hauptkategorie werden blockiert.
|
||||
- Leere Kategorien duerfen uebersprungen werden.
|
||||
- Die Nominierungsoberflaeche wird wie ein Wizard aufgebaut: Kategorien links, Inhalt rechts, klare Weiter-Navigation.
|
||||
- Clip-Einreichung wird aus dem Nominierungsformular entfernt oder deutlich getrennt, weil laut Feedback Clips in der Nominierungsphase eher Probleme verursachen.
|
||||
|
||||
Backendseitig existiert bereits eine passende Grundlage: `CreateNominationRequest` unterstuetzt mehrere `Nominations`, und die API verhindert doppelte Links innerhalb eines Requests. Die groesste Arbeit liegt daher im Public UI und in der Kommunikation der Regeln.
|
||||
Backendseitig speichert `Nomination` jetzt `CategoryGroupName` statt eine Tier-Kategorie als primaere Zuordnung. `CategoryId` bleibt als nullable Legacy-Feld erhalten. Twitch-Links werden best-effort ueber TwitchTracker angereichert; Nicht-Twitch-Links bleiben erlaubt und werden im Admin-Review manuell einem Tier zugeordnet.
|
||||
|
||||
### Vorbereitung
|
||||
|
||||
@@ -52,6 +54,9 @@ Nach der Nominierungsphase prueft das Team die Nominierungen, zaehlt aus und kon
|
||||
Geplanter Zielzustand:
|
||||
|
||||
- Admins sehen pro Review-Fall genug Signal, um Kandidaten zuzuordnen.
|
||||
- Admins sehen Nominierungen gruppiert nach Hauptkategorie und Streamer-Identitaet.
|
||||
- Das System zeigt Trackerstatus, durchschnittliche Viewer, Tier-Vorschlag und Tally der eindeutigen User.
|
||||
- Beim Uebernehmen entsteht der Kandidat im vorgeschlagenen oder manuell gewaelten Tier.
|
||||
- Final ausgewaehlte Nominierte bekommen einen Annahmestatus.
|
||||
- Admins koennen pro Kandidat eine externe Clip-Compilation-URL pflegen.
|
||||
- Es wird keine Upload-Infrastruktur fuer Videodateien gebaut.
|
||||
@@ -85,7 +90,8 @@ Diese Regeln sollten nicht still im Public UI verschwinden, sondern als Admin-Gu
|
||||
Geplanter Zielzustand:
|
||||
|
||||
- Admins koennen final maximal vier Nominierte pro Unterkategorie festlegen.
|
||||
- Admins sehen Warnungen, wenn eine Person zu oft nominiert oder als Gewinner markiert wird.
|
||||
- Streamer-Identitaet wird zentral ueber Plattform/Login modelliert, damit dieselbe Person ueber Kategorien hinweg erkannt werden kann.
|
||||
- Admins sehen Warnungen oder Blocker, wenn eine Person zu oft nominiert oder als Gewinner markiert wird.
|
||||
- Die App blockiert riskante finale Veroeffentlichungen oder verlangt eine bewusste Admin-Bestaetigung.
|
||||
- Gewinner werden pro Unterkategorie bestimmt; bei Gleichstand oder Sonderfaellen entscheidet das Team manuell.
|
||||
|
||||
@@ -103,14 +109,14 @@ Folgeplanung:
|
||||
|
||||
### Phase 1: Public Nominierungs- und Voting-UX
|
||||
|
||||
Ziel: Der Public Flow entspricht dem Feedback, ohne zuerst das Datenmodell stark umzubauen.
|
||||
Ziel: Der Public Flow entspricht dem Feedback: Nominierung auf Hauptkategorie, Voting weiter auf Tier-Kategorie.
|
||||
|
||||
Umsetzung:
|
||||
|
||||
- Nominierungsmodal zu einem Wizard umbauen.
|
||||
- Pro Kategorie bis zu drei Link-Felder anbieten.
|
||||
- Kategorien als linke Navigation anzeigen.
|
||||
- Kategorien ohne Eingaben erlauben.
|
||||
- Pro Hauptkategorie bis zum konfigurierten `MaxNomineesPerUser`-Limit Link-Felder anbieten.
|
||||
- Hauptkategorien als linke Navigation anzeigen.
|
||||
- Hauptkategorien ohne Eingaben erlauben.
|
||||
- Doppelte Links clientseitig validieren und Backend-Fehler sauber anzeigen.
|
||||
- Clip-Einreichung aus dem Nominierungsflow entfernen oder als separaten, weniger prominenten Flow belassen.
|
||||
- Voting-Wizard um Weiter-Button und fehlende-Stimmen-Hinweis erweitern.
|
||||
@@ -118,8 +124,8 @@ Umsetzung:
|
||||
|
||||
Akzeptanz:
|
||||
|
||||
- Eine Kategorie kann mit einem, zwei oder drei Links eingereicht werden.
|
||||
- Doppelte Links in derselben Kategorie werden blockiert.
|
||||
- Eine Hauptkategorie kann mit einem oder mehreren Links bis zum konfigurierten Limit eingereicht werden.
|
||||
- Doppelte Links in derselben Hauptkategorie werden blockiert.
|
||||
- Ein leerer Kategorienblock verhindert nicht das Absenden anderer Kategorien.
|
||||
- Voting kann gespeichert und in derselben Phase erneut geaendert werden.
|
||||
|
||||
@@ -184,9 +190,9 @@ Akzeptanz:
|
||||
|
||||
### Beibehalten
|
||||
|
||||
- `CategoryId` bleibt die zentrale Einheit fuer Nominierung und Voting.
|
||||
- `CategoryId` bleibt die zentrale Einheit fuer Voting, Kandidaten und Gewinner.
|
||||
- `GroupName` bleibt die Gruppierung fuer uebergeordnete Award-Bereiche.
|
||||
- Die Nominierungs-API bleibt grundsaetzlich erhalten.
|
||||
- Die Nominierungs-API bleibt grundsaetzlich erhalten, nimmt aber `CategoryGroupName` als neues Zielfeld; `CategoryId` bleibt Legacy-Fallback.
|
||||
- Die Voting-API bleibt grundsaetzlich erhalten.
|
||||
- Wiederholtes Vote-Speichern bleibt erlaubt und wird als Bearbeiten behandelt.
|
||||
|
||||
@@ -198,6 +204,8 @@ Akzeptanz:
|
||||
- Plattform
|
||||
- optionaler Embed-Status
|
||||
- Admin-Review braucht Statusinformationen fuer final ausgewaehlte Nominierte.
|
||||
- `Nomination` speichert Tracker-/Review-Metadaten: `ResolvedChannel`, `ResolvedPlatform`, `AvgViewers`, `SuggestedCategoryId`, `StreamerIdentityId`, `TrackerStatus`.
|
||||
- `StreamerIdentity` wird als eigene Entity fuer Plattform/Login/Normalisierung eingefuehrt.
|
||||
- Gewinnerverwaltung braucht Guards fuer interne Regeln, inklusive "maximal ein Gewinnerplatz" und "Clip-Link fuer Gewinner erforderlich".
|
||||
|
||||
### Nicht bauen
|
||||
|
||||
Reference in New Issue
Block a user