Filipe, mit dem Bildschirmfoto des Bretts "Mitmachen": "ich will dass die leute sich da anonym bei mir melden koennen ... wie ein fragebogen wieso die person modi werden will warum sie sollte, positiv negative sachen ... und dan soll ich annehmen ablehnen, in warteschlange stellen oder sofort kommunizieren koennen. und wenn ich annehme dan soll diese person automatisch zu talente kategorie weiter geleitet werden." Seine zwei Entscheidungen auf Rueckfrage: "Vertraulich, aber nicht namenlos" und "Du und die rechte Hand". WAS ES GIBT 15 Fragen in 6 Gruppen, 9 davon Pflicht. Vier davon standen nicht auf seinem Zettel und kommen aus der Recherche zu Moderator-Bewerbungen: Alter, frühere Sperren, "ein Freund bricht die Regeln - was machst du?" und "was kannst du nicht so gut?". Die letzte ist die aussagekraeftigste: Wer darauf "nichts" schreibt, hat sich gerade selbst beantwortet. Vier Wege: Reden - Warteschlange - Annehmen - Ablehnen. "Reden" steht vorne, weil die haeufigste richtige Antwort auf eine Bewerbung eine Rueckfrage ist und keine Entscheidung; stuende "Annehmen" oben, wuerde es geklickt. "Sofort kommunizieren" ist ein Satz, den sie liest. Kein Chat: Ein Zugang aus der Community steht ausdruecklich in keiner Chatliste (AUSSEN_ROLLEN). Der Satz ist damit der einzige Weg, dieser Person etwas zu sagen -- deshalb ist er bei "Reden" und "Ablehnen" Pflicht, und WELCHE Wege ihn verlangen, steht im Katalog und nicht zweimal. Nach "Annehmen" entsteht ein Talent auf der Stufe "Angesprochen". Die ersten beiden Stufen fragen, ob ueberhaupt Interesse besteht; wer sich selbst meldet, hat das beantwortet. WAS DABEI HERAUSKAM, DAS NICHT GESUCHT WAR aufgaben.js entschied mit `p.rolle === 'modi' || p.rolle === 'hand'`, wer eine Katalogaufgabe bekommen kann. Diese Datei ist ohne Anmeldung aus dem offenen Netz lesbar -- damit stand der verborgene Zugang darin nachzulesen. Jetzt entscheidet es der Server und schickt ein Ja/Nein. Gefunden von der Wortleck-Pruefung, nicht vom Auge. pruef-struktur meldete teilen.html seit heute frueh als "von nirgendwo verlinkt" -- und lag falsch: Auf sie zeigt `share_target.action` im Manifest. Die Manifeste sind jetzt Verweisquelle, nicht die eine Seite eine Ausnahme. Und im Bildschirmfoto stand der Schriftzug der Buehne mitten im Text einer Anfrage: `color-mix(..., transparent)` mischt mit DURCHSICHTIG. Deckend ist `#ffffff 6%`, so wie es .t-karte macht. Dieselbe Stelle hat mich heute schon einmal erwischt. GEPRUEFT pruef-bewerbung 77, davon 14 im Browser. Vier Gegenproben, jede trifft genau ihr Ziel: Bruecke ohne "genau einmal" -> 2 rot, Vertraulichkeit weg -> 5 rot, Nachricht-Pflicht weg -> 2 rot, Knopf ohne Rollenfrage -> 1 rot. Dazu unveraendert gruen: rollen 315, modi-verborgen 80, modi-katalog 49, entwicklung 43, treff, bereiche-lesend, haus-seiten, alle-wege, rechtetafel, css-klassen, struktur, deutsche-texte, start-ansicht, sicht, aufgabenbrett, womit, kanaele.
301 lines
12 KiB
JavaScript
301 lines
12 KiB
JavaScript
/* =====================================================================
|
||
DER FRAGEBOGEN FÜR EINE MODI-ANFRAGE (17.09.2026)
|
||
|
||
Filipe: „ich will dass die leute sich da anonym bei mir melden
|
||
können und eine anfrage machen können für modi. ich will dass es
|
||
aber profissionel gemacht ist bitte wie ein fragebogen wieso die
|
||
person modi werden will warum sie sollte, positiv negative
|
||
sachen … perfektioniere es auch mit sachen an die ich nicht denke."
|
||
|
||
---------------------------------------------------------------------
|
||
WAS „ANONYM" HIER HEISST (Filipes Entscheidung, 17.09.2026)
|
||
|
||
Vertraulich, aber nicht namenlos. Wer eine Anfrage schickt, ist
|
||
angemeldet — sonst wäre das Formular ein Briefkasten für Spam und
|
||
Scherzbewerbungen, und es gäbe keinen Weg zurückzuschreiben.
|
||
|
||
Aber: Die Anfrage erscheint NIRGENDS öffentlich. Kein anderes
|
||
Community-Mitglied sieht sie, kein Modi sieht sie. Nur DogFather
|
||
und die rechte Hand. Und wie jemand genannt werden will, entscheidet
|
||
er selbst — der Klarname wird nie verlangt.
|
||
|
||
---------------------------------------------------------------------
|
||
DIE VIER FRAGEN, AN DIE MAN NICHT DENKT
|
||
|
||
Filipe hat nach „positiv negative sachen" gefragt und ausdrücklich
|
||
um das gebeten, was ihm selbst nicht einfällt. Recherchiert
|
||
(Jotform, Typeform, Paperform, BlockSurvey — Vorlagen für Twitch-
|
||
und Discord-Moderatoren) und um vier Fragen ergänzt, die in fast
|
||
jeder guten Vorlage stehen und in fast keiner selbstgebauten:
|
||
|
||
1. ALTER. Steht nicht aus Neugier da. Für manches braucht es
|
||
Volljährigkeit (Meldungen an Plattformen, heikle Vorfälle), und
|
||
es steht bereits als Frage im Brett „Mitmachen". Wer es erst
|
||
nach der Zusage erfährt, muss sie zurücknehmen.
|
||
|
||
2. SCHON MAL GESPERRT? Die unbequemste Frage und die
|
||
aufschlussreichste. Nicht, weil eine alte Sperre
|
||
disqualifiziert — sondern weil die Antwort zeigt, wie jemand
|
||
mit eigenen Fehlern umgeht. Wer sie verschweigt und es kommt
|
||
später heraus, hat ein größeres Problem als die Sperre.
|
||
|
||
3. WAS, WENN EIN FREUND DIE REGELN BRICHT? Der häufigste echte
|
||
Konflikt im Moderationsalltag, und der, an dem die meisten
|
||
scheitern. In keiner Bewerbung, die jemand selbst schreibt,
|
||
kommt er vor.
|
||
|
||
4. WAS KANNST DU NICHT SO GUT? Filipes „negative sachen" — aber
|
||
als Frage an die Person selbst, nicht als Urteil über sie. Wer
|
||
darauf „nichts" antwortet, hat die Frage nicht verstanden, und
|
||
auch das ist eine Antwort.
|
||
|
||
---------------------------------------------------------------------
|
||
WIE DIE FRAGEN GESCHRIEBEN SIND
|
||
|
||
Für Zuschauer, die von TikTok kommen — überwiegend jung, auf dem
|
||
Handy. Also: kurze Fragen, „du", keine Behördensprache, und zu
|
||
jeder Frage ein Satz, WARUM sie gestellt wird. Ein Fragebogen, der
|
||
nicht sagt, wozu er etwas wissen will, fühlt sich wie ein Verhör an.
|
||
|
||
`pflicht: false` bei allem, was niemanden ausschließen darf. Eine
|
||
Pflichtfrage zu viel, und jemand bricht ab, den man gebraucht hätte.
|
||
===================================================================== */
|
||
|
||
/** Wie lang eine Antwort höchstens sein darf.
|
||
*
|
||
* Nicht als Schikane, sondern weil ein Feld ohne Grenze irgendwann
|
||
* eine Datenbank mit einem Roman darin ist. 1200 Zeichen sind rund
|
||
* zwei Bildschirme auf dem Handy -- mehr schreibt niemand freiwillig,
|
||
* und wer mehr zu sagen hat, sagt es im Gespräch danach. */
|
||
export const ANTWORT_MAX = 1200;
|
||
export const KURZ_MAX = 120;
|
||
|
||
export const BEWERBUNG_FRAGEN = [
|
||
/* ---- Wer bist du? ------------------------------------------------- */
|
||
{
|
||
schluessel: "name",
|
||
gruppe: "wer",
|
||
titel: "Wie sollen wir dich nennen?",
|
||
hinweis: "Dein Name im Chat reicht. Deinen echten Namen brauchen wir nicht.",
|
||
art: "kurz",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "alter",
|
||
gruppe: "wer",
|
||
titel: "Wie alt bist du?",
|
||
/* DIE BEGRÜNDUNG STEHT DABEI. Eine Altersfrage ohne Grund liest
|
||
sich wie eine Hürde; mit Grund wie eine Notwendigkeit. */
|
||
hinweis: "Nicht aus Neugier: Für manches braucht es 18, für das meiste nicht. "
|
||
+ "Sag es einfach dazu, dann sagen wir dir, was geht.",
|
||
art: "kurz",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "dabei_seit",
|
||
gruppe: "wer",
|
||
titel: "Seit wann schaust du DogFather – und wo?",
|
||
hinweis: "Stream, DogFather Clips, HasiDog, Discord. Ungefähr reicht.",
|
||
art: "kurz",
|
||
pflicht: false,
|
||
},
|
||
|
||
/* ---- Warum? ------------------------------------------------------- */
|
||
{
|
||
schluessel: "warum",
|
||
gruppe: "warum",
|
||
titel: "Warum möchtest du moderieren?",
|
||
hinweis: "Ehrlich ist besser als beeindruckend. „Ich bin sowieso immer da und "
|
||
+ "es nervt mich, wenn niemand eingreift“ ist eine gute Antwort.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "warum_du",
|
||
gruppe: "warum",
|
||
titel: "Warum gerade du?",
|
||
hinweis: "Was bringst du mit, das nicht jeder mitbringt? Das muss nichts "
|
||
+ "Großes sein – Geduld zählt mehr als Erfahrung.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "staerke",
|
||
gruppe: "warum",
|
||
titel: "Was kannst du besonders gut?",
|
||
hinweis: "Ruhig bleiben, schreiben, schlichten, Technik, Clips schneiden, "
|
||
+ "Leute willkommen heißen – irgendetwas ist da.",
|
||
art: "lang",
|
||
pflicht: false,
|
||
},
|
||
{
|
||
schluessel: "schwaeche",
|
||
gruppe: "warum",
|
||
titel: "Und was kannst du nicht so gut?",
|
||
/* DIE FRAGE, DIE SICH NIEMAND SELBST STELLT. Wer „nichts“
|
||
antwortet, hat sie nicht verstanden -- und auch das ist eine
|
||
Antwort. */
|
||
hinweis: "Jeder hat etwas. Wer hier „nichts“ schreibt, macht es sich zu leicht – "
|
||
+ "und wir merken es sowieso in der ersten Woche.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
|
||
/* ---- Zeit --------------------------------------------------------- */
|
||
{
|
||
schluessel: "zeit",
|
||
gruppe: "zeit",
|
||
titel: "Wie viel Zeit hast du realistisch in der Woche?",
|
||
hinweis: "Zwei Stunden reichen. Verlässlich schlägt viel: Eine Schicht, auf die "
|
||
+ "man sich verlassen kann, ist mehr wert als fünf spontane.",
|
||
art: "kurz",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "wann",
|
||
gruppe: "zeit",
|
||
titel: "Wann kannst du meistens?",
|
||
hinweis: "Abends, am Wochenende, tagsüber? Danach richten sich die Schichten.",
|
||
art: "kurz",
|
||
pflicht: false,
|
||
},
|
||
{
|
||
schluessel: "womit",
|
||
gruppe: "zeit",
|
||
titel: "Was würdest du am liebsten machen?",
|
||
hinweis: "Chat moderieren, Clips schneiden, Community betreuen, Technik – "
|
||
+ "oder etwas ganz anderes.",
|
||
art: "lang",
|
||
pflicht: false,
|
||
},
|
||
|
||
/* ---- Erfahrung und Ehrlichkeit ------------------------------------ */
|
||
{
|
||
schluessel: "erfahrung",
|
||
gruppe: "erfahrung",
|
||
titel: "Hast du schon mal moderiert?",
|
||
hinweis: "Wo, wie lange, wie groß? Wenn nein: auch völlig in Ordnung – "
|
||
+ "fast alle im Team haben ohne Erfahrung angefangen.",
|
||
art: "lang",
|
||
pflicht: false,
|
||
},
|
||
{
|
||
schluessel: "gesperrt",
|
||
gruppe: "erfahrung",
|
||
titel: "Wurdest du schon einmal irgendwo gesperrt oder verwarnt?",
|
||
/* DIE UNBEQUEMSTE FRAGE -- und die aufschlussreichste. Es geht
|
||
nicht um die Sperre, sondern um den Umgang damit. */
|
||
hinweis: "Wenn ja: wo und warum? Das ist kein Ausschlussgrund – wirklich nicht. "
|
||
+ "Aber wenn es später herauskommt und hier stand „nein“, ist es einer.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
|
||
/* ---- Zwei Situationen --------------------------------------------- */
|
||
{
|
||
schluessel: "fall_beleidigung",
|
||
gruppe: "situation",
|
||
titel: "Jemand beleidigt DogFather im Chat, mitten im Stream. Was machst du?",
|
||
hinweis: "Es gibt keine Musterlösung. Uns interessiert, wie du denkst.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
{
|
||
schluessel: "fall_freund",
|
||
gruppe: "situation",
|
||
titel: "Ein Freund von dir bricht die Regeln. Was machst du?",
|
||
/* DER HÄUFIGSTE ECHTE KONFLIKT -- und der, an dem die meisten
|
||
scheitern. In keiner selbst geschriebenen Bewerbung kommt er
|
||
vor. */
|
||
hinweis: "Die Frage kommt im Alltag öfter, als man denkt.",
|
||
art: "lang",
|
||
pflicht: true,
|
||
},
|
||
|
||
/* ---- Zum Schluss --------------------------------------------------- */
|
||
{
|
||
schluessel: "sonst",
|
||
gruppe: "schluss",
|
||
titel: "Gibt es sonst etwas, das wir wissen sollten?",
|
||
hinweis: "Alles, was oben nicht gepasst hat. Darf auch leer bleiben.",
|
||
art: "lang",
|
||
pflicht: false,
|
||
},
|
||
];
|
||
|
||
/** Die Gruppen, in der Reihenfolge, in der sie im Formular stehen. */
|
||
export const BEWERBUNG_GRUPPEN = [
|
||
{ schluessel: "wer", name: "Wer bist du?",
|
||
text: "Drei kurze Angaben. Deinen echten Namen brauchen wir nicht." },
|
||
{ schluessel: "warum", name: "Warum?",
|
||
text: "Der wichtigste Teil. Nimm dir zwei Minuten." },
|
||
{ schluessel: "zeit", name: "Zeit",
|
||
text: "Damit wir wissen, was realistisch ist – und dich nicht überfordern." },
|
||
{ schluessel: "erfahrung", name: "Erfahrung",
|
||
text: "Ohne Erfahrung anzufangen ist der Normalfall, nicht die Ausnahme." },
|
||
{ schluessel: "situation", name: "Zwei Situationen",
|
||
text: "Kein Test mit richtigen Antworten. Wir wollen sehen, wie du denkst." },
|
||
{ schluessel: "schluss", name: "Zum Schluss", text: "" },
|
||
];
|
||
|
||
/** Die vier Wege, die eine Anfrage nehmen kann.
|
||
*
|
||
* Filipe: „dan soll ich annehmen ablehnen, in warteschlange stellen
|
||
* oder sofort kommunizieren können."
|
||
*
|
||
* `neu` steht nicht dabei -- das ist kein Weg, sondern der Zustand
|
||
* davor. */
|
||
export const BEWERBUNG_WEGE = [
|
||
{ schluessel: "gespraech", name: "Reden",
|
||
text: "Erst mal schreiben. Die Anfrage bleibt offen.",
|
||
/* ZUERST, und das ist Absicht: Die häufigste richtige Antwort auf
|
||
eine Bewerbung ist eine Rückfrage, keine Entscheidung. Steht
|
||
„Annehmen“ oben, klickt man es. */
|
||
weiter: "offen",
|
||
/* EINE NACHRICHT IST HIER PFLICHT, und das ist der ganze Sinn
|
||
dieses Weges. „DogFather möchte mit dir reden“ ohne einen Satz
|
||
dahinter ist keine Rückfrage, sondern eine Wartemarke -- die
|
||
Person weiß danach genau so wenig wie vorher und kann nichts
|
||
tun. Der Satz IST das Reden: Ein Zugang aus der Community steht
|
||
nicht in den Chatlisten (AUSSEN_ROLLEN), also gibt es keinen
|
||
zweiten Weg, ihr etwas zu sagen. */
|
||
nachricht: "pflicht",
|
||
nachrichtSchild: "Was willst du wissen? Der Satz steht auf ihrer Seite." },
|
||
{ schluessel: "warteschlange", name: "Warteschlange",
|
||
text: "Passt – aber gerade ist kein Platz. Bleibt liegen, nicht vergessen.",
|
||
weiter: "offen",
|
||
/* Freiwillig: „warten“ ist für sich verständlich. Ein Satz dazu
|
||
macht es freundlicher, aber ihn zu verlangen hieße, dass eine
|
||
ehrliche Antwort an der Formulierung scheitert. */
|
||
nachricht: "kann",
|
||
nachrichtSchild: "Optional: Woran es gerade liegt." },
|
||
{ schluessel: "angenommen", name: "Annehmen",
|
||
text: "Wird zum Talent und durchläuft von dort den normalen Weg.",
|
||
weiter: "talent",
|
||
nachricht: "kann",
|
||
nachrichtSchild: "Optional: ein Satz zur Begrüßung." },
|
||
{ schluessel: "abgelehnt", name: "Ablehnen",
|
||
text: "Mit einem Grund, der auch gesagt werden kann.",
|
||
weiter: "zu",
|
||
/* PFLICHT -- nicht für die Akte, für den Menschen. „Abgelehnt“ ohne
|
||
Satz ist das, was einen nicht wiederkommen lässt; und in drei
|
||
Monaten fällt der Grund niemandem mehr ein. */
|
||
nachricht: "pflicht",
|
||
nachrichtSchild: "Warum nicht? Der Satz geht an die Person." },
|
||
];
|
||
|
||
/** Wie lang eine Pflicht-Nachricht mindestens sein muss. Steht hier
|
||
* und nicht im Server: Die Oberfläche muss dieselbe Zahl kennen, sonst
|
||
* verlangt eine von beiden etwas anderes. */
|
||
export const NACHRICHT_MIN = 10;
|
||
|
||
export const BEWERBUNG_ZUSTAENDE = ["neu", ...BEWERBUNG_WEGE.map((w) => w.schluessel)];
|
||
|
||
/** Schnellzugriff. */
|
||
export const FRAGE_NACH_SCHLUESSEL = new Map(
|
||
BEWERBUNG_FRAGEN.map((f) => [f.schluessel, f]));
|
||
|
||
/** Die Pflichtfragen -- abgeleitet, damit Server und Oberfläche
|
||
* dieselbe Liste benutzen und nicht zwei pflegen. */
|
||
export const PFLICHT = BEWERBUNG_FRAGEN.filter((f) => f.pflicht).map((f) => f.schluessel);
|