# 6 — Community-Gedächtnis (`apps/community`) **Wirkrichtung:** Bindung. Bei 10 Zuschauern der Unterschied zwischen "Zuschauer" und "Community". Läuft als Modul im `overlay-server`, nicht als eigener Prozess — es braucht dieselbe Chat-Verbindung und denselben WS-Kanal zum Overlay. ## Datenlage Alles Nötige liegt bereits in `users` und `user_streams` (siehe [`../03-data-model.md`](../03-data-model.md)). Dieses Tool ist überwiegend **Auswertung und Ausgabe**, kaum neue Datenerfassung — deshalb ist es billig, sobald der Ingest steht. ## Die drei Ausgaben ### 1. Chat-Begrüßung Ausgelöst durch die erste Nachricht eines Users im laufenden Stream: | Fall | Bedingung | Beispiel | |---|---|---| | **Erstchatter** | `first-msg`-Tag oder `users.message_count = 0` | "Oh, @name schreibt zum ersten Mal — willkommen!" | | **Rückkehrer** | letzter Besuch > 21 Tage her | "@name, lange nicht gesehen." | | **Meilenstein** | `streams_chatted` in {5, 10, 25, 50, 100} | "Stream Nummer 25 für @name." | | **Stammgast** | `streams_chatted >= 5` | individuelle Begrüßung aus `users.greeting` | | sonst | — | nichts | Regeln, damit es nicht nervt: höchstens eine Begrüßung alle 20 s, höchstens zehn pro Stream, `muted_greeting` respektiert, und **keine Begrüßung, wenn Abdu in den letzten 15 s selbst gesprochen hat** (der Ingest weiß über OBS bzw. über eine Audiopegel-Schwelle, ob gerade geredet wird) — sonst redet der Bot dem Streamer ins Wort. ### 2. Overlay-Hinweis für Abdu Kleines, nur für Abdu sichtbares Panel (eigene Browser-Source in der Studio-Ansicht oder zweiter Monitor). Wenn jemand schreibt: ``` ┌──────────────────────────────────┐ │ maxi_2k Stream 15 · Sub 3M │ │ zuletzt: vor 2 Tagen │ │ Notiz: studiert Maschinenbau, │ │ spielt selbst Elden Ring │ │ erste Nachricht: 04.03.2026 │ └──────────────────────────────────┘ ``` **Das ist der eigentliche Wert.** Nicht der Bot, der etwas schreibt, sondern Abdu, der weiß, mit wem er redet. Ein Bot, der "willkommen zurück" sagt, ist Deko; ein Streamer, der "na, wie war die Klausur" sagt, bindet Menschen. ### 3. Notizen Chat-Command für Abdu und Mods: `!notiz ` hängt an `users.notes` an. Im Dashboard editierbar. Das ist die einzige Datenquelle, die Handarbeit braucht, und die mit dem höchsten Nutzen pro Aufwand. ## Datenschutz Die DB enthält personenbezogene Daten (Chatverläufe, Notizen). Sie liegt lokal, wird nicht geteilt und nicht in ein Repo committet (`data/` ist in `.gitignore`). `!vergissmich` löscht auf Wunsch alle Daten eines Users bis auf die anonyme Aggregatstatistik. Notizen enthalten nichts, was man der Person nicht ins Gesicht sagen würde. ## Abnahmekriterien - Ein Testkonto, das zum ersten Mal schreibt, wird als Erstchatter erkannt und genau einmal begrüßt. - Nach einem Namenswechsel des Testkontos bleibt die Historie erhalten (Verknüpfung über `user_id`, nicht `login`). - Das Overlay-Panel zeigt den Hinweis innerhalb von 500 ms nach der Nachricht. - Zwanzig Nachrichten in fünf Sekunden erzeugen höchstens eine Begrüßung.