Struktur, Doku und S0-Toolchain fuer das abdulive-Toolkit
Monorepo-Geruest fuer neun Streamer-Tools plus den Ingest-Daemon, der unter sechs davon liegt. Enthaelt: - docs/: Ueberblick, Architektur, Twitch-Integration, Datenmodell, Roadmap, Setup, Hebel-Analyse und den MVP-Plan "Clip-Knopf" - docs/projects/: je eine Spezifikation pro Tool - docs/decisions/: vier ADRs (TS-Monorepo, SQLite, EventSub/IRC, Docker) - docker/: Image mit ffmpeg und whisper.cpp, abhaengigkeitsfreier Entrypoint mit check-env, fetch-model und calibrate - config/layout.yaml: aus einem VOD-Screenshot eingemessener Facecam-Ausschnitt (440x330 oben links, Chat-Overlay ab x=1270) Noch kein Anwendungscode - Scheibe S0 aus docs/07-mvp-plan.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013VTGjd92LsDDWF3frd9FTB
This commit is contained in:
commit
d09e2b945a
98 files changed
+3273
No files matched your search
@@ -0,0 +1,68 @@
|
||||
# 4 — Analytics-Dashboard (`apps/dashboard`)
|
||||
|
||||
**Wirkrichtung:** Steuerung. Beantwortet die Frage "was funktioniert
|
||||
eigentlich", die Twitch selbst nicht beantwortet.
|
||||
|
||||
Läuft auf `http://localhost:4792`. Vite + Preact + uPlot, liest direkt aus
|
||||
SQLite. Keine Authentifizierung, weil nur lokal erreichbar.
|
||||
|
||||
## Seiten
|
||||
|
||||
### Stream-Zeitachse (die wichtigste)
|
||||
|
||||
Eine gemeinsame X-Achse (Stream-Laufzeit), darauf übereinander:
|
||||
|
||||
- Viewerzahl (Linie, aus `viewer_samples`)
|
||||
- Chat-Nachrichten pro Minute (Balken)
|
||||
- unterschiedliche Chatter pro 5 min (Linie)
|
||||
- Marker: Kategoriewechsel, Titelwechsel, Raids rein/raus, Clips, Follows, Subs
|
||||
|
||||
Damit sieht man direkt: An welcher Stelle kamen Leute rein, an welcher gingen
|
||||
sie, und war der Chat da tot oder wach. **Zusammenhang von Viewerzahl und
|
||||
Chat-Aktivität ist die Kernfrage** — 15 Zuschauer mit stillem Chat sind
|
||||
weniger wert als 8 mit lebendigem.
|
||||
|
||||
### Abgangs-Analyse
|
||||
|
||||
Aus `viewer_samples`: Ableitung über die Zeit, die stärksten Abfälle markiert
|
||||
und mit dem gleichzeitigen `stream_segments`-Eintrag und den Chat-Nachrichten
|
||||
der Minute davor angereichert. Antwort auf "wann gehen die Leute".
|
||||
|
||||
Wichtige Einschränkung, die im UI stehen muss: `viewer_samples` ist eine
|
||||
Momentaufnahme der Gesamtzahl, keine Ein-/Austrittsliste. Twitch liefert das
|
||||
nicht. Ein Abfall von 12 auf 8 kann vier Abgänge oder sechs Abgänge plus zwei
|
||||
Zugänge bedeuten. Für Chatter ist es exakt (über `user_streams`), für stille
|
||||
Zuschauer geschätzt.
|
||||
|
||||
### Titel- und Kategorie-Performance
|
||||
|
||||
Aggregation über `stream_segments`: pro Titel/Kategorie die durchschnittliche
|
||||
Viewerzahl, der Nettozufluss während des Segments, Chat-Rate, gewonnene
|
||||
Follower pro Stunde. Sortierbar. Mit Hinweis auf die Stichprobengröße —
|
||||
bei drei Streams pro Titel ist jede Zahl Rauschen, und das Dashboard sagt das,
|
||||
statt eine Rangliste vorzutäuschen.
|
||||
|
||||
### Chatter: neu vs. wiederkehrend
|
||||
|
||||
Pro Stream ein Stapelbalken: Erstchatter / wiederkehrend (1–4 Streams) /
|
||||
Stammgast (5+). Dazu eine Kohorten-Tabelle: Von den Erstchattern aus Stream N,
|
||||
wie viele waren in N+1, N+2, N+3 wieder da. Das ist die Zahl, die tatsächlich
|
||||
über Wachstum entscheidet.
|
||||
|
||||
### Betriebsstatus
|
||||
|
||||
`GET /health` vom Ingest, letzte Fehler aus `logs/`, Größe der DB,
|
||||
Clip-Warteschlange.
|
||||
|
||||
## Clip-Freigabe
|
||||
|
||||
Zusätzlich hostet das Dashboard die Freigabe-Ansicht für die Clip-Pipeline
|
||||
(siehe [`clip-shorts.md`](clip-shorts.md)): Kandidatenliste mit
|
||||
Videovorschau, Score, Chat-Ausschnitt und den Knöpfen *Übernehmen* /
|
||||
*Verwerfen*.
|
||||
|
||||
## Abnahmekriterien
|
||||
|
||||
- Die Zeitachse eines abgeschlossenen Streams lädt in unter 2 s.
|
||||
- Alle Marker liegen zeitlich korrekt (Abgleich gegen das VOD).
|
||||
- Die Kohorten-Tabelle stimmt mit einer manuellen SQL-Auszählung überein.
|
||||
Reference in new issue
Block a user