Filipe hat den Bauplan "Willkommen & Anleitung -- Einweisung je Rolle"
(27 Seiten, Stand 06.10.2026) geschickt: pruefen, perfektionieren und
auf der Crew-Seite umsetzen.
AUSGANGSMESSUNG, bevor etwas angefasst wurde:
agentur creator 18 · manager 22 · scout 21 · spicy 23 Karten
crew 0 Karten -- die Schnittstelle antwortete 404 "nicht_hier"
Die Seite lud also, war aber leer. Baulich vorbereitet war sie schon:
Alle drei Inhaltstabellen tragen `haus` mit UNIQUE (haus, rolle,
kachel), und die Aussaat nimmt das Haus als Parameter.
WAS JETZT DA IST
gast 14 Karten (5 Muss, 4 Regelmaessig, 5 Bedarf)
modi 29 Karten (7 / 7 / 15)
linke 29 Karten (7 / 7 / 15)
hand 34 Karten (8 / 7 / 19)
Jede Zahl entspricht Kapitel 13 des Bauplans. Dazu je Rolle
Leitgedanke, drei Saetze, fuenf Erste Schritte, "Nicht deins",
Rhythmus und Fragen -- woertlich aus Kapitel 06 bis 09.
VOR DEM SCHREIBEN ABGEGLICHEN, nicht danach: Ein Skript prueft jede
Karte gegen die echte Kachelliste der Rolle. Ergebnis fuer alle vier
Fassungen: Kartenzahl wie im Plan, jede Karte trifft eine Kachel,
jede Kachel hat eine Karte, keine doppelt.
ZWEI KACHELN AUF EINER SEITE. Auf der Crew-Adresse fuehren "Chat"
(das Team) und "Rudel-Chat" (`?raum=treff`) beide auf chat.html.
`schluesselVonZiel` behielt nur `b` -- beide ergaben denselben
Schluessel, und damit konnten sie keine eigenen Karten haben, obwohl
der Bauplan ihnen verschiedene Einordnungen gibt (fuer die rechte
Hand: Team-Chat Muss, Rudel-Chat nur bei Bedarf). Jetzt wird auch
`raum` unterschieden. Auf der Agenturadresse gibt es nur eine
Chat-Kachel; dort aendert sich nichts.
DAS HAUS KOMMT AUS DER ADRESSE, nicht aus der angesehenen Rolle.
`const HAUS = "agentur"` ist einer Funktion gewichen. Nimmt DogFather
die Sicht einer anderen Rolle ein, wechselt er die ROLLE, nicht die
ADRESSE -- wer hier `req.sicht` naehme, bekaeme auf der Crew-Adresse
Agenturinhalte, sobald eine Sicht gesetzt ist.
`FASSUNGEN` stand an zehn Stellen fest und haette die Crew ueberall
abgewiesen. Jetzt `fassungenFuer(haus)` -- eine Funktion statt zweier
Listen an zehn Stellen.
Neue Zeilenart `vorweg` fuer "Drei Dinge vorweg" (nur die Community,
Bauplan Kapitel 04). Fehlt die Liste bei einer Rolle, wird nichts
eingetragen -- kein Sonderfall noetig.
Eigene Datei fuer die Crew-Inhalte: anleitung-tabellen.js traegt
schon die Agenturfassungen und ist 856 Zeilen lang. Getrennte Dateien
sind hier dasselbe Prinzip wie getrennte Haeuser.
pruef-anleitung 125 -> 127. Fuenf Zeilen darin verteidigten den alten
Zustand ("ein Modi bekommt die Anleitung nicht, erwartet 404") -- sie
sind mitgewandert statt stehenzubleiben. Dazu eine neue Gegenprobe
zur Haustrennung: In der Crew-Fassung darf keine Agenturkachel
vorkommen.
Datenbank vorher gesichert und zurueckgelesen (integrity_check,
84 Karten).
Co-Authored-By: Claude Opus 5 <[email protected]>
885 lines
42 KiB
JavaScript
885 lines
42 KiB
JavaScript
/* =====================================================================
|
||
DIE ANLEITUNG — Tabellen und Inhalte
|
||
|
||
Bauplan: "Kachel Anleitung — Bauplan fuer die Einweisung neuer
|
||
Leute", Stand 06.10.2026. Geprueft und ergaenzt in
|
||
`02 Projekte/Anleitung-Kachel – Bauplan.md` (Obsidian).
|
||
|
||
---------------------------------------------------------------------
|
||
WAS HIER *NICHT* STEHT, UND WARUM DAS DER KERN IST
|
||
|
||
Eine Karte der Anleitung zeigt Symbol, Farbe, Name und Ziel der
|
||
echten Kachel. Nichts davon steht in dieser Datenbank.
|
||
|
||
Es steht in `workspace/assets/js/bereiche.js`, und zwar genau
|
||
einmal. Wuerde man es hier noch einmal hinschreiben, haette man zwei
|
||
Listen: Die eine wird gepflegt, wenn eine Kachel umbenannt wird, die
|
||
andere nicht — und ab da erklaert die Anleitung eine Kachel, die es
|
||
so nicht mehr gibt. Das ist derselbe Fehler, der am 11.09.2026 beim
|
||
Spaltenumbau drei Spalten gekostet hat: eine abgeschriebene Liste.
|
||
|
||
Gespeichert wird deshalb nur, was der Bauplan NEU hinzufuegt:
|
||
die Stufe und die drei Saetze (Wozu / Was du hier tust / Merke).
|
||
Verbunden wird ueber den Kachel-Schluessel.
|
||
|
||
---------------------------------------------------------------------
|
||
DER KACHEL-SCHLUESSEL wird aus dem Ziel ABGELEITET, nicht vergeben:
|
||
|
||
uebersicht.html -> uebersicht
|
||
bereich.html?b=live -> bereich:live
|
||
|
||
Das muss sein, weil zwei Faelle sonst zusammenfallen:
|
||
|
||
* `bereich.html` ist FUENF Kacheln (live, community, technik,
|
||
schutz, agentur). Ueber die Seite allein waeren sie eine.
|
||
* `profil.html` heisst beim Creator "Mein Profil" und beim Manager
|
||
"Creator-Profile" — zwei Karten, eine Adresse. Hier trennt sie
|
||
die Rolle im Schluessel (haus, rolle, kachel).
|
||
|
||
---------------------------------------------------------------------
|
||
DIE HAUS-SPALTE ist leer gelaufene Vorsorge und soll es bleiben.
|
||
|
||
Entscheidung Filipe, 06.10.2026: "Jetzt nur Agentur, aber
|
||
vorbereitet." Team Dogi bekommt heute keine Anleitung. Die Spalte
|
||
kostet jetzt ein Feld; sie spaeter nachzuruesten hiesse, jede Zeile
|
||
und jeden Schluessel anzufassen.
|
||
===================================================================== */
|
||
|
||
/** Die drei Stufen. Reihenfolge ist die Anzeigereihenfolge. */
|
||
import { INHALTE_CREW, FASSUNGEN_CREW } from "./anleitung-inhalte-crew.js";
|
||
|
||
export const STUFEN = [
|
||
{ schluessel: "muss", name: "Muss",
|
||
titel: "Das brauchst du sofort",
|
||
unter: "Ohne das laeuft der Alltag nicht.",
|
||
offen: true },
|
||
{ schluessel: "regelmaessig", name: "Regelmäßig",
|
||
titel: "Das kommt regelmäßig",
|
||
unter: "Woechentlich, monatlich oder bei jedem neuen Creator.",
|
||
offen: false },
|
||
{ schluessel: "bedarf", name: "Bei Bedarf",
|
||
titel: "Das brauchst du nur bei Bedarf",
|
||
unter: "Nur oeffnen, wenn es einen Anlass gibt.",
|
||
offen: false },
|
||
];
|
||
|
||
export const STUFEN_SCHLUESSEL = STUFEN.map((s) => s.schluessel);
|
||
|
||
/** Die Rollen, die eine eigene Fassung bekommen.
|
||
*
|
||
* OHNE 'admin'. DogFather bekommt keine Einweisung (Bauplan,
|
||
* Kapitel 11) — bei ihm oeffnet dieselbe Adresse ab Etappe 4 die
|
||
* Pflege-Ansicht. */
|
||
export const FASSUNGEN = ["creator", "scout", "manager", "spicy"];
|
||
|
||
/** Welche Fassungen gibt es in DIESEM Haus?
|
||
*
|
||
* DAS HAUS ENTSCHEIDET, NICHT DIE ROLLE (06.10.2026). Die Agentur
|
||
* hat vier Fassungen, die Crew hat vier andere -- und keine Rolle
|
||
* kommt in beiden vor. Vorher stand `FASSUNGEN` an zehn Stellen
|
||
* fest; jede davon haette die Crew stillschweigend abgewiesen.
|
||
*
|
||
* EINE FUNKTION STATT ZWEIER LISTEN AN ZEHN STELLEN: Wer eine
|
||
* Fassung ergaenzt, traegt sie an einer Stelle ein. */
|
||
export function fassungenFuer(haus) {
|
||
return haus === "crew" ? FASSUNGEN_CREW : FASSUNGEN;
|
||
}
|
||
|
||
/** Wer die Texte aendern darf.
|
||
*
|
||
* DogFather UND Spicy — Entscheidung Filipe am 06.10.2026, und zwar
|
||
* ausdruecklich dieselbe Regel wie bei den Manager-Zielen am
|
||
* 02.10.2026 ("dogfather und spicy rolle sollen gleichzeitig es immer
|
||
* aendern koennen fuer alle"). Der Bauplan hatte hier "nur DogFather"
|
||
* stehen; zwei verschiedene Regeln fuer dieselbe Frage sind eine
|
||
* Regel, die man sich nicht merken kann. */
|
||
export const PFLEGE_ROLLEN = ["admin", "spicy"];
|
||
|
||
/** Die Arten von Listenzeilen in `anl_zeile`.
|
||
*
|
||
* EINE TABELLE STATT FUENF. Satz, Schritt, Nicht-deins, Takt und Frage
|
||
* sind alle dasselbe: eine geordnete Zeile mit hoechstens zwei Texten
|
||
* und manchmal einem Ziel. Fuenf Tabellen waeren fuenfmal dieselbe
|
||
* Spaltenliste, fuenf Indizes und fuenf Stellen, an denen die
|
||
* Haus-Spalte vergessen werden kann. */
|
||
export const ZEILEN_ARTEN = {
|
||
/* "In 60 Sekunden" — drei Saetze. Nur `text`. */
|
||
satz: { titel: false, ziel: false },
|
||
/* "Erste Schritte" — `titel` ist die Kachel, `ziel` der Sprung. */
|
||
schritt: { titel: true, ziel: true },
|
||
/* "Das kannst du liegen lassen" — `titel` die Taetigkeit,
|
||
`text` wer sie erledigt. */
|
||
nicht: { titel: true, ziel: false },
|
||
/* "Dein Rhythmus" — `titel` ist das Wann, `text` das Was. */
|
||
takt: { titel: true, ziel: false },
|
||
/* "Haeufige Fragen" — `titel` die Frage, `text` die Antwort. */
|
||
frage: { titel: true, ziel: false },
|
||
/* "Drei Dinge vorweg" — NUR die Community (Bauplan, Kapitel 04).
|
||
`titel` die Regel in drei Worten, `text` was sie bedeutet.
|
||
Sie steht VOR allem anderen, weil sie nichts erklaert, sondern
|
||
sagt, woran sich alle halten. */
|
||
vorweg: { titel: true, ziel: false },
|
||
};
|
||
|
||
export const ARTEN_SCHLUESSEL = Object.keys(ZEILEN_ARTEN);
|
||
|
||
/* =====================================================================
|
||
WO DIE UMRECHNUNG "Ziel -> Schluessel" STEHT
|
||
|
||
NICHT hier. Der Server bildet nie einen Schluessel: Die Schluessel
|
||
stehen woertlich in INHALTE weiter unten, er schreibt sie nur weg.
|
||
Gebraucht wird die Rechnung ausschliesslich im Browser, wo die
|
||
Kachelliste liegt — also steht sie dort, als
|
||
`window.Bereiche.schluesselVonZiel`.
|
||
|
||
Ich hatte sie zuerst hier gebaut und exportiert. Benutzt haette sie
|
||
niemand. Eine Funktion, die nur dasteht, liest sich beim naechsten
|
||
Mal wie eine Zusage ("der Server kennt die Kacheln") und ist keine.
|
||
Wenn die Pflege-Ansicht in Etappe 4 Schreibzugriffe pruefen muss,
|
||
kommt sie zurueck — dann aber mit einem Aufrufer.
|
||
===================================================================== */
|
||
|
||
const TABELLEN = `
|
||
CREATE TABLE IF NOT EXISTS anl_karte (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
haus TEXT NOT NULL DEFAULT 'agentur',
|
||
rolle TEXT NOT NULL,
|
||
kachel TEXT NOT NULL,
|
||
stufe TEXT NOT NULL,
|
||
wozu TEXT NOT NULL DEFAULT '',
|
||
tust TEXT NOT NULL DEFAULT '',
|
||
merke TEXT NOT NULL DEFAULT '',
|
||
reihe INTEGER NOT NULL DEFAULT 0,
|
||
geaendert TEXT NOT NULL,
|
||
geaendert_von INTEGER REFERENCES personen(id) ON DELETE SET NULL,
|
||
UNIQUE (haus, rolle, kachel)
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_anl_karte_sicht ON anl_karte (haus, rolle, stufe, reihe);
|
||
|
||
CREATE TABLE IF NOT EXISTS anl_zeile (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
haus TEXT NOT NULL DEFAULT 'agentur',
|
||
rolle TEXT NOT NULL,
|
||
art TEXT NOT NULL,
|
||
reihe INTEGER NOT NULL DEFAULT 0,
|
||
titel TEXT NOT NULL DEFAULT '',
|
||
text TEXT NOT NULL DEFAULT '',
|
||
ziel TEXT,
|
||
geaendert TEXT NOT NULL,
|
||
geaendert_von INTEGER REFERENCES personen(id) ON DELETE SET NULL
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_anl_zeile_sicht ON anl_zeile (haus, rolle, art, reihe);
|
||
|
||
CREATE TABLE IF NOT EXISTS anl_rolle (
|
||
haus TEXT NOT NULL DEFAULT 'agentur',
|
||
rolle TEXT NOT NULL,
|
||
leitgedanke TEXT NOT NULL DEFAULT '',
|
||
geaendert TEXT NOT NULL,
|
||
geaendert_von INTEGER REFERENCES personen(id) ON DELETE SET NULL,
|
||
PRIMARY KEY (haus, rolle)
|
||
);
|
||
|
||
/* ======================================================================
|
||
DER STAND JE PERSON (Etappe 2)
|
||
|
||
NUR ERLEDIGTES WIRD GESPEICHERT. Eine Zeile heisst "abgehakt", keine
|
||
Zeile heisst "offen". Die Alternative waere, fuer jede Person jeden
|
||
Schritt mit einem Ja/Nein anzulegen -- dann muesste jemand beim
|
||
Anlegen einer Person an die Anleitung denken, und beim Hinzufuegen
|
||
eines Schrittes an alle Personen. Beides vergisst man.
|
||
|
||
zeile_id UND NICHT EIN EIGENER SCHLUESSEL. Aendert DogFather in
|
||
Etappe 4 den Text eines Schrittes, behaelt die Zeile ihre Nummer und
|
||
der Haken bleibt stehen -- richtig, es ist derselbe Schritt. Loescht
|
||
er ihn und legt einen neuen an, ist der Haken weg -- auch richtig,
|
||
es ist ein anderer Schritt. ON DELETE CASCADE sorgt dafuer, dass
|
||
keine Haken auf geloeschte Schritte zeigen.
|
||
|
||
KEINE SPALTE erledigt. Ein Haken, den man wegnimmt, loescht die
|
||
Zeile. Ein Feld mit 0 und 1 waere eine zweite Art, "offen" zu sagen,
|
||
und dann gaebe es zwei -- fehlende Zeile und Zeile mit 0.
|
||
====================================================================== */
|
||
CREATE TABLE IF NOT EXISTS anl_stand (
|
||
person_id INTEGER NOT NULL REFERENCES personen(id) ON DELETE CASCADE,
|
||
zeile_id INTEGER NOT NULL REFERENCES anl_zeile(id) ON DELETE CASCADE,
|
||
erledigt_am TEXT NOT NULL,
|
||
PRIMARY KEY (person_id, zeile_id)
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_anl_stand_person ON anl_stand (person_id);
|
||
|
||
/* ======================================================================
|
||
WANN JEMAND ZULETZT HINEINGESEHEN HAT (Etappe 4)
|
||
|
||
Einzig fuer die Marke "Neu": Sie soll verschwinden, sobald die
|
||
Person die geaenderte Stelle gesehen hat. Dafuer reicht ein
|
||
Zeitstempel je Person -- NICHT je Eintrag. Wer eine Seite oeffnet,
|
||
sieht sie ganz; Buch zu fuehren, welche Karte wie lange im Bild
|
||
war, waere Ueberwachung und nicht Pflege.
|
||
====================================================================== */
|
||
CREATE TABLE IF NOT EXISTS anl_besuch (
|
||
person_id INTEGER PRIMARY KEY REFERENCES personen(id) ON DELETE CASCADE,
|
||
gesehen_am TEXT NOT NULL
|
||
);
|
||
|
||
/* ======================================================================
|
||
DIE EINWEISUNG BEIM ERSTEN ANMELDEN (Etappe 6)
|
||
|
||
Der Bauplan: "Nur einmal automatisch. Gespeichert pro Person, nicht
|
||
pro Geraet." -- deshalb hier und nicht im Browserspeicher. Wer sich
|
||
am Telefon anmeldet und spaeter am Rechner, hat sie schon gesehen.
|
||
|
||
DER SCHLUESSEL IST (Person, ROLLE) UND NICHT NUR DIE PERSON. Damit
|
||
erledigt sich die Sonderregel aus dem Bauplan ("Bekommt jemand eine
|
||
neue Rolle, startet die Einweisung fuer die neue Rolle beim
|
||
naechsten Login einmal neu") von selbst: Die neue Rolle hat
|
||
schlicht noch keine Zeile. Eine Spalte "zuruecksetzen", die beim
|
||
Rollenwechsel jemand anfassen muesste, waere die Stelle, an der es
|
||
vergessen wird.
|
||
====================================================================== */
|
||
CREATE TABLE IF NOT EXISTS anl_einweisung (
|
||
person_id INTEGER NOT NULL REFERENCES personen(id) ON DELETE CASCADE,
|
||
rolle TEXT NOT NULL,
|
||
gezeigt_am TEXT NOT NULL,
|
||
PRIMARY KEY (person_id, rolle)
|
||
);
|
||
`;
|
||
|
||
/* =====================================================================
|
||
DIE INHALTE
|
||
|
||
Woertlich aus dem Bauplan vom 06.10.2026, Kapitel 06. Gewonnen mit
|
||
`pdftotext -raw`, NICHT mit `-layout`: Der Layout-Auszug verschiebt
|
||
Tabellenzellen. Dort stand "Schulung und Community-Call laufen
|
||
woechentlich von allein" beim Eintrag *Mein Profil* statt bei
|
||
*Kalender* — eine Zeile, die man ohne Verdacht uebernommen und nie
|
||
wiedergefunden haette.
|
||
|
||
Die Stufen stammen aus Kapitel 05. Sie sind ab Etappe 4 in der
|
||
Pflege-Ansicht aenderbar, ohne dass hier jemand etwas anfasst —
|
||
deshalb ist diese Liste eine ERSTBEFUELLUNG und keine Wahrheit.
|
||
===================================================================== */
|
||
|
||
export const INHALTE = {
|
||
creator: {
|
||
leitgedanke:
|
||
"Das ist dein eigener Bereich. Du siehst nur, was zu dir gehört. "
|
||
+ "Deine Betreuung trägt ein, du liest mit, antwortest und hakst ab.",
|
||
saetze: [
|
||
"Du musst nicht alles kennen. Fünf Kacheln reichen für den Anfang.",
|
||
"Was heute dran ist, steht immer auf der Zentrale unter „Was ist dran“.",
|
||
"Fast alles andere füllt deine Betreuung für dich. Du liest und antwortest.",
|
||
],
|
||
schritte: [
|
||
{ titel: "Mein Profil", ziel: "profil.html",
|
||
text: "Bild wählen, einen Satz über dich schreiben, TikTok-Namen eintragen, speichern." },
|
||
{ titel: "Schutz & Regeln", ziel: "bereich.html?b=schutz",
|
||
text: "Unterweisungen lesen und zusammen mit deiner Betreuung bestätigen." },
|
||
{ titel: "Aufgaben", ziel: "aufgaben.html",
|
||
text: "Nachsehen, ob schon etwas für dich offen ist." },
|
||
{ titel: "Kalender", ziel: "kalender.html",
|
||
text: "Termine in deinen eigenen Kalender holen (Google, Apple, Outlook)." },
|
||
/* KEIN ZIEL. "Installieren" ist keine Kachel, sondern der Knopf
|
||
in der Kopfleiste. Ein Sprung auf eine Seite waere hier falsch
|
||
-- und ein Sprung ins Leere erst recht. */
|
||
{ titel: "Installieren", ziel: null,
|
||
text: "Oben antippen, dann hast du den Workspace als App auf dem Handy." },
|
||
],
|
||
karten: [
|
||
{ kachel: "aufgaben", stufe: "muss",
|
||
wozu: "Was du zu tun hast.",
|
||
tust: "Annehmen, bearbeiten, zur Freigabe geben, Rückmeldung schreiben.",
|
||
merke: "„Zur Freigabe“ heißt: Jemand schaut noch drauf." },
|
||
{ kachel: "chat", stufe: "muss",
|
||
wozu: "Nachrichten mit deinem Team.",
|
||
tust: "Mit „Neu“ ein Gespräch beginnen.",
|
||
merke: "Fehler an der Seite gehören in Support, nicht in den Chat." },
|
||
{ kachel: "kalender", stufe: "muss",
|
||
wozu: "Termine und Calls.",
|
||
tust: "Termine ansehen, eigene anlegen.",
|
||
merke: "Schulung und Community-Call laufen wöchentlich von allein." },
|
||
{ kachel: "profil", stufe: "muss",
|
||
wozu: "Wer du bist und wohin du willst.",
|
||
tust: "Einmal ausfüllen: Bild, Kanäle, Stammdaten, Ziele, 90-Tage-Plan.",
|
||
merke: "Nur du schreibst deinen Eintrag." },
|
||
{ kachel: "bereich:schutz", stufe: "muss",
|
||
wozu: "Regeln, die du kennen musst.",
|
||
tust: "Einmal: Dokument öffnen, durchgehen, bestätigen.",
|
||
merke: "Nach der Bestätigung von beiden Seiten nicht mehr änderbar." },
|
||
|
||
{ kachel: "bereich:live", stufe: "regelmaessig",
|
||
wozu: "Dein LIVE besser machen.",
|
||
tust: "Vor und nach dem LIVE: Bewertungen und Notizen lesen, an jedem Punkt antworten.",
|
||
merke: "Geordnet nach vor, während, nach der Sendung." },
|
||
{ kachel: "leistung", stufe: "regelmaessig",
|
||
wozu: "Diamanten, LIVE-Tage, Verweildauer.",
|
||
tust: "Wochenzahlen und Ziele ansehen.",
|
||
merke: "Kommen aus Backstage und werden eingetragen, nicht automatisch geholt." },
|
||
{ kachel: "calls", stufe: "regelmaessig",
|
||
wozu: "Gespräche mit To-dos.",
|
||
tust: "Nachlesen, was besprochen wurde. Der Call-Raum ist verlinkt.",
|
||
merke: "To-dos landen direkt bei deinen Aufgaben." },
|
||
{ kachel: "bereich:agentur", stufe: "regelmaessig",
|
||
wozu: "Events und offizielle Wege.",
|
||
tust: "Event-Aufgaben ansehen, Rückmeldung geben, Anliegen an die Agentur stellen.",
|
||
merke: "Teilnahmebedingungen stehen beim Event." },
|
||
{ kachel: "content", stufe: "regelmaessig",
|
||
wozu: "Von der Idee bis zum Upload.",
|
||
tust: "Sehen, was geplant ist, und antworten.",
|
||
merke: "Fünf Stufen: Idee, Hook & Skript, Gedreht, Fertig & geplant, Veröffentlicht." },
|
||
{ kachel: "report", stufe: "regelmaessig",
|
||
wozu: "Rückblick und nächste Schritte.",
|
||
tust: "Einmal im Monat: Zeitraum wählen (7, 30 oder 90 Tage).",
|
||
merke: "Ein Review endet mit einer Entscheidung." },
|
||
|
||
{ kachel: "uebersicht", stufe: "bedarf",
|
||
wozu: "Dein Stand auf einen Blick.",
|
||
tust: "Nachsehen: nächster Termin, offene Aufgaben, Start-Check.",
|
||
merke: "Was dran ist, zeigt dir schon die Zentrale." },
|
||
{ kachel: "startcheck", stufe: "bedarf",
|
||
wozu: "Erstanalyse deines Kanals.",
|
||
tust: "Ansehen, was passt und was nicht, in 16 Punkten.",
|
||
merke: "Grundlage für deinen 90-Tage-Plan." },
|
||
{ kachel: "bereich:community", stufe: "bedarf",
|
||
wozu: "Moderation und Konflikte.",
|
||
tust: "Nachlesen, wenn es im Chat unruhig wird.",
|
||
merke: "Ruhig statt Drama." },
|
||
{ kachel: "bereich:technik", stufe: "bedarf",
|
||
wozu: "Setup, Fehler, Lösungen.",
|
||
tust: "Nachschlagen, wenn etwas klemmt.",
|
||
merke: "Erst hier schauen, dann fragen." },
|
||
{ kachel: "dateien", stufe: "bedarf",
|
||
wozu: "Ablage für dich.",
|
||
tust: "Dateien öffnen, die für dich abgelegt wurden.",
|
||
merke: "Du kannst hier nichts hochladen." },
|
||
{ kachel: "wissen", stufe: "bedarf",
|
||
wozu: "Anleitungen zu TikTok und Technik.",
|
||
tust: "Nach Stufe, Gerät oder Tag filtern.",
|
||
merke: "Hier geht es um Streaming, nicht um den Workspace." },
|
||
{ kachel: "support", stufe: "bedarf",
|
||
wozu: "Etwas ist kaputt.",
|
||
tust: "Kurz beschreiben, bis zu drei Bilder anhängen, abschicken.",
|
||
merke: "DogFather und die rechte Hand kümmern sich." },
|
||
],
|
||
nicht: [
|
||
{ titel: "Zahlen eintragen.", text: "Das macht deine Betreuung." },
|
||
{ titel: "Start-Check und LIVE-Analyse bewerten.", text: "Du liest und antwortest nur." },
|
||
{ titel: "Protokolle schreiben.", text: "Du liest sie nach." },
|
||
{ titel: "Dateien hochladen.", text: "Geht in deiner Ansicht nicht." },
|
||
{ titel: "Jede Kachel täglich öffnen.", text: "Die Zentrale sagt dir, was dran ist." },
|
||
],
|
||
takt: [
|
||
{ titel: "Täglich", text: "Zentrale („Was ist dran“), Aufgaben, Chat." },
|
||
{ titel: "Vor und nach dem LIVE", text: "LIVE-Analyse und Zahlen." },
|
||
{ titel: "Wöchentlich", text: "Kalender, Calls & Protokolle, Agentur." },
|
||
{ titel: "Monatlich", text: "Reports & Review und dein 90-Tage-Plan in Mein Profil." },
|
||
],
|
||
fragen: [
|
||
{ titel: "Muss ich jede Kachel kennen?",
|
||
text: "Nein. Fang mit den fünf Muss-Kacheln an. Der Rest kommt, wenn du ihn brauchst." },
|
||
{ titel: "Ich habe meinen Code verloren.",
|
||
text: "Sag deiner Betreuung oder DogFather Bescheid. Du bekommst einen neuen, "
|
||
+ "der alte gilt dann nicht mehr." },
|
||
{ titel: "Warum sehe ich keine Zahlen?",
|
||
text: "Für die Woche wurde noch kein Tag eingetragen. Sprich deine Betreuung an." },
|
||
{ titel: "Wer sieht mein Profil?",
|
||
text: "Dein Team: Bild, Name und was du über dich geschrieben hast." },
|
||
],
|
||
},
|
||
|
||
scout: {
|
||
leitgedanke:
|
||
"Finden, begleiten, übergeben. Du hast deine eigene Pipeline und betreust "
|
||
+ "die Creator, die du gebracht hast, bis ein Manager übernimmt.",
|
||
saetze: [
|
||
"Dein Platz ist die Scout-Pipeline. Dort beginnt und endet dein Tag.",
|
||
"Die Manager-Ziele sind Pflicht und starten jeden Monat neu.",
|
||
"Die Betreuungs-Kacheln brauchst du nur für Creator, die noch bei dir sind.",
|
||
],
|
||
schritte: [
|
||
{ titel: "Mein Steckbrief", ziel: "steckbrief.html",
|
||
text: "Bild, ein Satz über dich, deine Kanäle." },
|
||
{ titel: "Scout-Pipeline", ziel: "scouting.html",
|
||
text: "Mit „Neuer Kontakt“ den ersten anlegen, mit Datum für den nächsten Schritt." },
|
||
{ titel: "Manager-Ziele", ziel: "manager-ziele.html",
|
||
text: "Ansehen: deine vier festen Monatsaufgaben." },
|
||
{ titel: "Dashboard", ziel: "uebersicht.html",
|
||
text: "Unter „Wo ich diese Woche nachfassen würde“ steht, wer dich braucht." },
|
||
{ titel: "Installieren", ziel: null, text: "Oben antippen." },
|
||
],
|
||
karten: [
|
||
{ kachel: "scouting", stufe: "muss",
|
||
wozu: "Dein Kontakt-Verzeichnis.",
|
||
tust: "Kontakte durch fünf Stufen führen: Neu, Angesprochen, Gespräch, Interessiert, Übergeben.",
|
||
merke: "Immer ein Datum setzen. Nur du und DogFather sehen deine Pipeline." },
|
||
{ kachel: "manager-ziele", stufe: "muss",
|
||
wozu: "Deine Pflichtaufgaben im Monat.",
|
||
tust: "Eintragen: 3 Creator rekrutiert, 2 Manager-Meetings, 2 Schulungen oder Community Talks, 1 Werbevideo.",
|
||
merke: "Acht Einträge pro Monat. Am besten bis Monatsmitte." },
|
||
{ kachel: "aufgaben", stufe: "muss",
|
||
wozu: "Wer macht was.",
|
||
tust: "Aufgaben anlegen und zuteilen, aus der Vorlage mit 80 Aufgaben übernehmen.",
|
||
merke: "Vier Spalten: Offen, In Arbeit, Zur Freigabe, Erledigt." },
|
||
{ kachel: "chat", stufe: "muss",
|
||
wozu: "Nachrichten mit dem Team.",
|
||
tust: "Personen, Gruppen und Kanäle.",
|
||
merke: "Vereinbarungen gehören ins Protokoll, nicht nur in den Chat." },
|
||
{ kachel: "steckbrief", stufe: "muss",
|
||
wozu: "So sehen dich die anderen.",
|
||
tust: "Einmal ausfüllen: Bild, Satz, Kanäle.",
|
||
merke: "Dein Bild erscheint überall neben deinem Namen." },
|
||
|
||
{ kachel: "uebersicht", stufe: "regelmaessig",
|
||
wozu: "Deine Creator auf einen Blick.",
|
||
tust: "Sehen, wer lange nicht da war und wo ein Gespräch fehlt.",
|
||
merke: "Mit „Schreiben“ direkt in den Chat." },
|
||
{ kachel: "kalender", stufe: "regelmaessig",
|
||
wozu: "Termine und Calls.",
|
||
tust: "Termine anlegen, Wiederholungen einrichten.",
|
||
merke: "Vier Ansichten: Monat, Woche, Liste, Zeitstrahl." },
|
||
{ kachel: "calls", stufe: "regelmaessig",
|
||
wozu: "Gespräche festhalten.",
|
||
tust: "Call planen, danach „Protokoll schreiben“.",
|
||
merke: "To-dos aus dem Protokoll werden Aufgaben." },
|
||
{ kachel: "profil", stufe: "regelmaessig",
|
||
wozu: "Akte je Creator.",
|
||
tust: "Bei jedem neuen Creator: Stammdaten, Ziele und 90-Tage-Plan füllen.",
|
||
merke: "Leere Profile erscheinen bei „Was ist dran“." },
|
||
{ kachel: "startcheck", stufe: "regelmaessig",
|
||
wozu: "Erstanalyse neuer Creator.",
|
||
tust: "Bei jedem neuen Creator: 16 Punkte in vier Blöcken bewerten.",
|
||
merke: "Jeder neue Creator braucht einen." },
|
||
{ kachel: "bereich:schutz", stufe: "regelmaessig",
|
||
wozu: "Unterweisungen.",
|
||
tust: "Bei jedem neuen Creator: Dokumente durchgehen und bestätigen.",
|
||
merke: "Die abgeschlossene Bestätigung ist der Nachweis." },
|
||
{ kachel: "report", stufe: "regelmaessig",
|
||
wozu: "Rückblick je Creator.",
|
||
tust: "Einmal im Monat: Zeitraum wählen, Entscheidung festhalten.",
|
||
merke: "Erledigt, blockiert, funktioniert, als Nächstes." },
|
||
|
||
{ kachel: "leistung", stufe: "bedarf",
|
||
wozu: "Was wirklich passiert ist.",
|
||
tust: "Tage eintragen oder Backstage-Datei einlesen, Ziele setzen.",
|
||
merke: "In Backstage den Zeitraum auf einen Tag stellen, sonst fehlen Tageswerte." },
|
||
{ kachel: "bereich:live", stufe: "bedarf",
|
||
wozu: "LIVEs systematisch verbessern.",
|
||
tust: "Je Punkt setzen: passt, zu verbessern, passt nicht, kommt nicht vor.",
|
||
merke: "Der Creator sieht es sofort." },
|
||
{ kachel: "content", stufe: "bedarf",
|
||
wozu: "Content planen.",
|
||
tust: "Ideen anlegen und durch die fünf Stufen schieben.",
|
||
merke: "Fertige Vorschläge lassen sich übernehmen." },
|
||
{ kachel: "bereich:community", stufe: "bedarf",
|
||
wozu: "Moderation und Konflikte.",
|
||
tust: "Festhalten, was vorbereitet ist und was geholfen hat.",
|
||
merke: "Drei Blöcke: vorbereiten, aufbauen, wenn es kippt." },
|
||
{ kachel: "bereich:technik", stufe: "bedarf",
|
||
wozu: "Setup und Fehler je Creator.",
|
||
tust: "Aufbau, aktuelles Problem und Lösung dokumentieren.",
|
||
merke: "Spart beim nächsten Ausfall Zeit." },
|
||
{ kachel: "bereich:agentur", stufe: "bedarf",
|
||
wozu: "Events, Schulungen, Anliegen.",
|
||
tust: "Einträge anlegen, Rückmeldungen der Creator sehen.",
|
||
merke: "DogFather entscheidet am Ende über Vorschläge." },
|
||
{ kachel: "dateien", stufe: "bedarf",
|
||
wozu: "Ablage und Freigaben.",
|
||
tust: "Datei hochladen (bis 25 MB) und wählen, wer sie sehen darf.",
|
||
merke: "Niemand ausgewählt heißt: nur DogFather sieht sie." },
|
||
{ kachel: "wissen", stufe: "bedarf",
|
||
wozu: "Anleitungen zu TikTok und Technik.",
|
||
tust: "Nachschlagen und an Creator weitergeben.",
|
||
merke: "15 Themenbereiche mit Filtern." },
|
||
{ kachel: "support", stufe: "bedarf",
|
||
wozu: "Etwas ist kaputt.",
|
||
tust: "Beschreiben, Bilder anhängen, abschicken.",
|
||
merke: "Geht an DogFather und die rechte Hand." },
|
||
],
|
||
nicht: [
|
||
{ titel: "Die volle Betreuungsakte bei jedem Kontakt.",
|
||
text: "Sie beginnt erst, wenn aus dem Kontakt ein Creator geworden ist." },
|
||
{ titel: "Creator nach der Übergabe.", text: "Ab „Übergeben“ ist der Manager zuständig." },
|
||
{ titel: "Personen anlegen und Codes vergeben.",
|
||
text: "Das macht ein Manager. Sag ihm Bescheid." },
|
||
{ titel: "Die Pipeline der anderen Scouts.", text: "Du siehst nur deine eigene." },
|
||
],
|
||
takt: [
|
||
{ titel: "Täglich", text: "Zentrale, Scout-Pipeline (fällige Kontakte), Chat, Aufgaben." },
|
||
{ titel: "Wöchentlich",
|
||
text: "Dashboard, Calls & Protokolle schreiben, Start-Check und Creator-Profile neuer Creator." },
|
||
{ titel: "Monatlich",
|
||
text: "Manager-Ziele bis Monatsmitte erledigen, Reports & Review je Creator." },
|
||
],
|
||
fragen: [
|
||
{ titel: "Wann zählt ein Kontakt als übergeben?",
|
||
text: "Wenn ein Manager übernimmt. Ab da ist es Betreuung, kein Scouting mehr." },
|
||
{ titel: "Wer sieht meine Pipeline?",
|
||
text: "Du und DogFather. Manager und Spicy Media sehen die Gesamtübersicht." },
|
||
{ titel: "Bis wann müssen die Manager-Ziele erledigt sein?",
|
||
text: "Jeden Monat neu. Am besten bis Monatsmitte." },
|
||
],
|
||
},
|
||
|
||
manager: {
|
||
leitgedanke:
|
||
"Betreuung und Freigaben. Du hast dieselben Rechte wie die Leitung, nur ohne "
|
||
+ "Personenverwaltung. Du legst Creator an und hältst die Betreuung am Laufen.",
|
||
saetze: [
|
||
"Dein Tag: Dashboard ansehen, Aufgaben freigeben, im Chat antworten.",
|
||
"Die Manager-Ziele sind Pflicht und starten jeden Monat neu.",
|
||
"Die Fach-Kacheln (LIVE-Analyse bis Technik) öffnest du je Creator, nicht täglich.",
|
||
],
|
||
schritte: [
|
||
{ titel: "Mein Steckbrief", ziel: "steckbrief.html", text: "Ausfüllen." },
|
||
{ titel: "Personen & Zugänge", ziel: "personen.html",
|
||
text: "Ansehen: So legst du einen neuen Creator an und gibst den Code weiter." },
|
||
{ titel: "Dashboard", ziel: "uebersicht.html",
|
||
text: "Hier siehst du alle Creator und wo es hakt." },
|
||
{ titel: "Manager-Ziele", ziel: "manager-ziele.html",
|
||
text: "Ansehen: deine vier festen Monatsaufgaben." },
|
||
{ titel: "Aufgaben", ziel: "aufgaben.html",
|
||
text: "Unter „Wer hat gerade was“ siehst du die Verteilung." },
|
||
],
|
||
karten: [
|
||
{ kachel: "uebersicht", stufe: "muss",
|
||
wozu: "Alle Creator auf einen Blick.",
|
||
tust: "Nachfassen, wo jemand lange nicht da war.",
|
||
merke: "Je Creator: Termine, Aufgaben, Zahlen, Start-Check." },
|
||
{ kachel: "aufgaben", stufe: "muss",
|
||
wozu: "Wer macht was.",
|
||
tust: "Zuteilen, freigeben, Rückmeldung geben. Täglich die Spalte „Zur Freigabe“.",
|
||
merke: "Tippe eine Person an, um nur ihre Aufgaben zu sehen." },
|
||
{ kachel: "chat", stufe: "muss",
|
||
wozu: "Nachrichten mit dem Team.",
|
||
tust: "Personen, Gruppen, Kanäle.",
|
||
merke: "Entscheidungen ins Protokoll übernehmen." },
|
||
{ kachel: "manager-ziele", stufe: "muss",
|
||
wozu: "Deine Pflichtaufgaben im Monat.",
|
||
tust: "Rekrutierungen, Meetings, Schulungen, Werbevideo eintragen.",
|
||
merke: "Acht Einträge pro Monat." },
|
||
{ kachel: "personen", stufe: "muss",
|
||
wozu: "Neue Leute anlegen.",
|
||
tust: "Name und Rolle wählen, Code sofort weitergeben.",
|
||
merke: "Der Code wird nur einmal gezeigt." },
|
||
{ kachel: "steckbrief", stufe: "muss",
|
||
wozu: "So sehen dich die anderen.",
|
||
tust: "Einmal ausfüllen: Bild, Satz, Kanäle.",
|
||
merke: "Jeder pflegt nur seinen eigenen." },
|
||
|
||
{ kachel: "kalender", stufe: "regelmaessig",
|
||
wozu: "Termine und Calls.",
|
||
tust: "Termine und Wiederholungen anlegen.",
|
||
merke: "Reviews und Fristen haben eigene Farben." },
|
||
{ kachel: "calls", stufe: "regelmaessig",
|
||
wozu: "Gespräche festhalten.",
|
||
tust: "Call planen, Protokoll schreiben, To-dos vergeben.",
|
||
merke: "Kein Call ohne Protokoll." },
|
||
{ kachel: "profil", stufe: "regelmaessig",
|
||
wozu: "Akte je Creator.",
|
||
tust: "Stammdaten, Ziele, 90-Tage-Plan.",
|
||
merke: "Die Zahl an der Kachel zeigt leere Profile." },
|
||
{ kachel: "startcheck", stufe: "regelmaessig",
|
||
wozu: "Erstanalyse.",
|
||
tust: "16 Punkte bewerten.",
|
||
merke: "Die Zahl an der Kachel zeigt Creator ohne Start-Check." },
|
||
{ kachel: "bereich:schutz", stufe: "regelmaessig",
|
||
wozu: "Unterweisungen.",
|
||
tust: "Mit jedem neuen Creator durchgehen und bestätigen.",
|
||
merke: "Danach unveränderlich." },
|
||
{ kachel: "scouting", stufe: "regelmaessig",
|
||
wozu: "Alle Scouts im Überblick.",
|
||
tust: "Nach Scout filtern, Übergaben annehmen.",
|
||
merke: "Ab „Übergeben“ bist du zuständig." },
|
||
{ kachel: "leistung", stufe: "regelmaessig",
|
||
wozu: "Diamanten, LIVE-Tage, Verweildauer.",
|
||
tust: "Tage eintragen oder Datei einlesen, Ziele setzen.",
|
||
merke: "Quelle ist Backstage." },
|
||
{ kachel: "report", stufe: "regelmaessig",
|
||
wozu: "Rückblick und Entscheidung.",
|
||
tust: "Einmal im Monat: Zeitraum wählen, Entscheidung festhalten.",
|
||
merke: "Vergleich mit dem Zeitraum davor." },
|
||
{ kachel: "bereich:agentur", stufe: "regelmaessig",
|
||
wozu: "Events, Schulungen, Anliegen.",
|
||
tust: "Einträge anlegen, vorbereitete Vorschläge übernehmen.",
|
||
merke: "Was hier nicht steht, wird vergessen." },
|
||
|
||
{ kachel: "bereich:live", stufe: "bedarf",
|
||
wozu: "LIVEs verbessern.",
|
||
tust: "Feste Punkte bewerten, Notizen schreiben.",
|
||
merke: "Vier Stufen von Anfänger bis Meister." },
|
||
{ kachel: "content", stufe: "bedarf",
|
||
wozu: "Content planen.",
|
||
tust: "Ideen durch fünf Stufen führen.",
|
||
merke: "61 feste Punkte als Leitfaden." },
|
||
{ kachel: "bereich:community", stufe: "bedarf",
|
||
wozu: "Moderation und Konflikte.",
|
||
tust: "Vorbereitung und Vorfälle dokumentieren.",
|
||
merke: "58 feste Punkte." },
|
||
{ kachel: "bereich:technik", stufe: "bedarf",
|
||
wozu: "Setup und Fehler.",
|
||
tust: "Dokumentieren, was klemmt und was geholfen hat.",
|
||
merke: "51 feste Punkte." },
|
||
{ kachel: "dateien", stufe: "bedarf",
|
||
wozu: "Ablage und Freigaben.",
|
||
tust: "Hochladen, Sichtbarkeit wählen, freigeben.",
|
||
merke: "Entwurf, Zur Freigabe, Freigegeben." },
|
||
{ kachel: "wissen", stufe: "bedarf",
|
||
wozu: "Anleitungen zu TikTok und Technik.",
|
||
tust: "Nachschlagen und weitergeben.",
|
||
merke: "Filter nach Stufe, Gerät, Tag." },
|
||
{ kachel: "support", stufe: "bedarf",
|
||
wozu: "Etwas ist kaputt.",
|
||
tust: "Beschreiben, Bilder anhängen.",
|
||
merke: "Geht an DogFather und die rechte Hand." },
|
||
],
|
||
nicht: [
|
||
{ titel: "Personen sperren, Codes verwalten, Protokoll einsehen.",
|
||
text: "Das liegt bei DogFather." },
|
||
{ titel: "Kontakte suchen und ansprechen.",
|
||
text: "Das machen die Scouts. Du übernimmst ab „Übergeben“." },
|
||
{ titel: "Alle Fach-Kacheln für jeden Creator täglich öffnen.",
|
||
text: "Die Zentrale und das Dashboard zeigen, wo etwas fehlt." },
|
||
],
|
||
takt: [
|
||
{ titel: "Täglich", text: "Zentrale, Dashboard, Aufgaben (Spalte „Zur Freigabe“), Chat." },
|
||
{ titel: "Wöchentlich",
|
||
text: "Calls & Protokolle, Creator-Profile, Start-Check, Scout-Pipeline (Übergaben)." },
|
||
{ titel: "Monatlich", text: "Manager-Ziele, Reports & Review, Agentur-Events." },
|
||
],
|
||
fragen: [
|
||
{ titel: "Ein Creator hat seinen Code verloren.",
|
||
text: "Unter Personen & Zugänge bei der Person „Neuer Code“. Der alte gilt dann nicht mehr." },
|
||
{ titel: "Kann ich Personen sperren?",
|
||
text: "Nein. Codes verwalten, sperren und das Protokoll einsehen kann nur DogFather." },
|
||
{ titel: "Was passiert bei einer Rollenänderung?",
|
||
text: "Der Code bleibt, offene Sitzungen enden, die Person meldet sich neu an." },
|
||
{ titel: "Woran erkenne ich, wo es brennt?",
|
||
text: "Zentrale: der Satz unter „Zentrale“ und die Liste „Was ist dran“." },
|
||
],
|
||
},
|
||
|
||
spicy: {
|
||
leitgedanke:
|
||
"Überblick über alle, ohne Automationen. Du siehst das ganze Haus und zusätzlich "
|
||
+ "die Team-Lage: wer wen betreut und wo sich etwas staut.",
|
||
saetze: [
|
||
"Du brauchst den Überblick, nicht die Einzelheiten jedes Creators.",
|
||
"Team-Lage und Dashboard zeigen dir, wo sich etwas staut.",
|
||
"In der Kachel Agentur kommen die Anliegen der Creator direkt bei dir an.",
|
||
],
|
||
schritte: [
|
||
{ titel: "Mein Steckbrief", ziel: "steckbrief.html",
|
||
text: "Ausfüllen: Bild, Satz, Kanäle." },
|
||
{ titel: "Team-Lage", ziel: "team.html",
|
||
text: "Auslastung von Managern und Scouts, Creator ohne Betreuung." },
|
||
{ titel: "Dashboard", ziel: "uebersicht.html",
|
||
text: "Alle Creator mit Terminen, Aufgaben und Start-Check." },
|
||
{ titel: "Agentur", ziel: "bereich.html?b=agentur",
|
||
text: "Events, Schulungen und Anliegen an die Agentur." },
|
||
{ titel: "Kopfleiste", ziel: null,
|
||
text: "Oben findest du Teilen, Chat und Suchen." },
|
||
],
|
||
karten: [
|
||
{ kachel: "team", stufe: "muss",
|
||
wozu: "Manager und Scouts im Blick.",
|
||
tust: "Sehen, wer wen betreut, wo jemand fehlt, wer ohne Creator ist.",
|
||
merke: "Arbeitslage, keine Überwachung: keine Inhalte aus Terminen, Chats oder Dateien." },
|
||
{ kachel: "uebersicht", stufe: "muss",
|
||
wozu: "Alle Creator.",
|
||
tust: "Je Creator den Stand prüfen.",
|
||
merke: "Zeigt auch, wer lange nicht da war." },
|
||
{ kachel: "bereich:agentur", stufe: "muss",
|
||
wozu: "Offizieller Weg zur Agentur.",
|
||
tust: "Events mit Aufgaben anlegen, Schulungen eintragen, Anliegen beantworten.",
|
||
merke: "Hier schreiben Creator direkt an die Agentur." },
|
||
{ kachel: "chat", stufe: "muss",
|
||
wozu: "Nachrichten.",
|
||
tust: "Personen, Gruppen, Kanäle.",
|
||
merke: "Kanäle für Ankündigungen nutzen." },
|
||
{ kachel: "steckbrief", stufe: "muss",
|
||
wozu: "So sehen dich die anderen.",
|
||
tust: "Einmal ausfüllen: Bild, Satz, Kanäle.",
|
||
merke: "Steht unter „Leitung“ in der Teamliste." },
|
||
|
||
{ kachel: "aufgaben", stufe: "regelmaessig",
|
||
wozu: "Wer macht was.",
|
||
tust: "Verteilung sehen, freigeben.",
|
||
merke: "Filter nach Person." },
|
||
{ kachel: "manager-ziele", stufe: "regelmaessig",
|
||
wozu: "Feste Monatsaufgaben.",
|
||
tust: "Eigene Einträge machen, Stand des Teams verfolgen.",
|
||
merke: "Vorgabe der Agentur, jeden Monat neu." },
|
||
{ kachel: "scouting", stufe: "regelmaessig",
|
||
wozu: "Alle Scouts.",
|
||
tust: "Nach Scout filtern, liegengebliebene Kontakte erkennen.",
|
||
merke: "Fünf Stufen bis zur Übergabe." },
|
||
{ kachel: "kalender", stufe: "regelmaessig",
|
||
wozu: "Termine und Calls.",
|
||
tust: "Schulungen und Events eintragen.",
|
||
merke: "Wiederholungen laufen von allein." },
|
||
{ kachel: "report", stufe: "regelmaessig",
|
||
wozu: "Rückblick und Entscheidung.",
|
||
tust: "Einmal im Monat: Zeitraum wählen, Entwicklung prüfen.",
|
||
merke: "7, 30 oder 90 Tage." },
|
||
|
||
{ kachel: "calls", stufe: "bedarf",
|
||
wozu: "Gespräche festhalten.",
|
||
tust: "Protokolle lesen und schreiben.",
|
||
merke: "To-dos werden Aufgaben." },
|
||
{ kachel: "dateien", stufe: "bedarf",
|
||
wozu: "Ablage und Freigaben.",
|
||
tust: "Hochladen, Sichtbarkeit wählen, freigeben.",
|
||
merke: "Aktuelle Version ist immer erkennbar." },
|
||
{ kachel: "profil", stufe: "bedarf",
|
||
wozu: "Akte je Creator.",
|
||
tust: "Ziele und 90-Tage-Plan einsehen.",
|
||
merke: "Leere Profile werden gezählt." },
|
||
{ kachel: "leistung", stufe: "bedarf",
|
||
wozu: "Leistung je Creator.",
|
||
tust: "Wochenzahlen und Zeiträume ansehen.",
|
||
merke: "Quelle ist Backstage." },
|
||
{ kachel: "startcheck", stufe: "bedarf",
|
||
wozu: "Erstanalyse.",
|
||
tust: "Stand der Bewertung einsehen, bei Bedarf eintragen.",
|
||
merke: "Teil der Betreuungsakte." },
|
||
{ kachel: "bereich:live", stufe: "bedarf",
|
||
wozu: "LIVEs verbessern.",
|
||
tust: "Stand der Bewertung einsehen, bei Bedarf eintragen.",
|
||
merke: "Teil der Betreuungsakte." },
|
||
{ kachel: "content", stufe: "bedarf",
|
||
wozu: "Content planen.",
|
||
tust: "Stand einsehen, bei Bedarf eintragen.",
|
||
merke: "Teil der Betreuungsakte." },
|
||
{ kachel: "bereich:community", stufe: "bedarf",
|
||
wozu: "Moderation und Konflikte.",
|
||
tust: "Stand einsehen, bei Bedarf eintragen.",
|
||
merke: "Teil der Betreuungsakte." },
|
||
{ kachel: "bereich:technik", stufe: "bedarf",
|
||
wozu: "Setup und Fehler.",
|
||
tust: "Stand einsehen, bei Bedarf eintragen.",
|
||
merke: "Teil der Betreuungsakte." },
|
||
{ kachel: "bereich:schutz", stufe: "bedarf",
|
||
wozu: "Unterweisungen.",
|
||
tust: "Sehen, wer welche Dokumente bestätigt hat.",
|
||
merke: "Bestätigungen sind der Nachweis." },
|
||
{ kachel: "personen", stufe: "bedarf",
|
||
wozu: "Neue Leute anlegen.",
|
||
tust: "Person anlegen, Rolle wählen, Code weitergeben.",
|
||
merke: "Codes, Sperren und Protokoll bleiben bei DogFather." },
|
||
{ kachel: "wissen", stufe: "bedarf",
|
||
wozu: "Anleitungen und PDFs.",
|
||
tust: "Nachschlagen.",
|
||
merke: "Schulungs-PDFs der Agentur gehören hierher." },
|
||
{ kachel: "support", stufe: "bedarf",
|
||
wozu: "Etwas ist kaputt.",
|
||
tust: "Beschreiben, Bilder anhängen.",
|
||
merke: "Geht an DogFather und die rechte Hand." },
|
||
],
|
||
nicht: [
|
||
{ titel: "Die tägliche Betreuung einzelner Creator.",
|
||
text: "Das machen Manager und Scouts." },
|
||
{ titel: "Die Betreuungsakte selbst füllen.",
|
||
text: "Du schaust rein, wenn es einen Anlass gibt." },
|
||
{ titel: "Automationen (Sicherungen, lokale KI, Hintergrunddienste).",
|
||
text: "Die verwaltet nur DogFather." },
|
||
{ titel: "Codes sperren und Protokoll.", text: "Bleibt bei DogFather." },
|
||
],
|
||
takt: [
|
||
{ titel: "Täglich", text: "Zentrale, Team-Lage, Chat." },
|
||
{ titel: "Wöchentlich",
|
||
text: "Dashboard, Scout-Pipeline, Agentur (Anliegen beantworten), Aufgaben zur Freigabe." },
|
||
{ titel: "Monatlich",
|
||
text: "Manager-Ziele des Teams, Reports & Review, neue Events eintragen." },
|
||
],
|
||
fragen: [
|
||
{ titel: "Was heißt „ohne Automationen“?",
|
||
text: "Sicherungen, lokale KI und Hintergrunddienste verwaltet nur DogFather." },
|
||
{ titel: "Sehe ich private Chats oder Termine?",
|
||
text: "Nein. Die Team-Lage zeigt nur die Arbeitslage." },
|
||
{ titel: "Wo beantworte ich Anliegen der Creator?",
|
||
text: "In der Kachel Agentur unter „Anliegen an die Agentur“." },
|
||
{ titel: "Wo trage ich ein neues Event ein?",
|
||
text: "Agentur, „Neuer Eintrag“, Art „Agentur-Events“, mit Aufgaben und Frist." },
|
||
],
|
||
},
|
||
};
|
||
|
||
/* =====================================================================
|
||
ANLEGEN UND ERSTBEFUELLEN
|
||
===================================================================== */
|
||
|
||
/** Spielt eine Rolle ein — aber nur, wenn fuer sie noch GAR NICHTS da ist.
|
||
*
|
||
* DAS IST DIE WICHTIGSTE ZEILE DIESER DATEI. Ein Einspielen bei jedem
|
||
* Serverstart wuerde jede Aenderung aus der Pflege-Ansicht beim
|
||
* naechsten Neustart ueberschreiben — lautlos, und man wuerde es erst
|
||
* Wochen spaeter merken, wenn jemand fragt, warum sein Text wieder
|
||
* der alte ist.
|
||
*
|
||
* Gepruefte Bedingung ist "keine einzige Karte dieser Rolle", nicht
|
||
* "Tabelle leer": Sonst bekaeme Rolle zwei nichts mehr, sobald Rolle
|
||
* eins drin ist. */
|
||
function rolleEinspielen(d, haus, rolle, inhalt, jetzt) {
|
||
const schon = d.prepare(
|
||
"SELECT COUNT(*) n FROM anl_karte WHERE haus = ? AND rolle = ?").get(haus, rolle)?.n ?? 0;
|
||
if (schon > 0) return 0;
|
||
|
||
const karte = d.prepare(
|
||
`INSERT INTO anl_karte (haus, rolle, kachel, stufe, wozu, tust, merke, reihe, geaendert)
|
||
VALUES (?,?,?,?,?,?,?,?,?)`);
|
||
const zeile = d.prepare(
|
||
`INSERT INTO anl_zeile (haus, rolle, art, reihe, titel, text, ziel, geaendert)
|
||
VALUES (?,?,?,?,?,?,?,?)`);
|
||
|
||
let n = 0;
|
||
inhalt.karten.forEach((k, i) => {
|
||
karte.run(haus, rolle, k.kachel, k.stufe, k.wozu, k.tust, k.merke, i, jetzt);
|
||
n++;
|
||
});
|
||
const listen = [
|
||
["satz", inhalt.saetze.map((t) => ({ titel: "", text: t, ziel: null }))],
|
||
["schritt", inhalt.schritte],
|
||
["nicht", inhalt.nicht],
|
||
["takt", inhalt.takt],
|
||
["frage", inhalt.fragen],
|
||
/* Nur die Community bringt "Drei Dinge vorweg" mit. Fehlt die
|
||
Liste, wird nichts eingetragen -- kein Sonderfall noetig. */
|
||
["vorweg", inhalt.vorweg || []],
|
||
];
|
||
for (const [art, liste] of listen) {
|
||
liste.forEach((z, i) => {
|
||
zeile.run(haus, rolle, art, i, z.titel ?? "", z.text ?? "", z.ziel ?? null, jetzt);
|
||
n++;
|
||
});
|
||
}
|
||
d.prepare(
|
||
`INSERT INTO anl_rolle (haus, rolle, leitgedanke, geaendert) VALUES (?,?,?,?)
|
||
ON CONFLICT(haus, rolle) DO NOTHING`).run(haus, rolle, inhalt.leitgedanke, jetzt);
|
||
return n;
|
||
}
|
||
|
||
export function anleitungTabellen(d) {
|
||
d.exec(TABELLEN);
|
||
|
||
const jetzt = new Date().toISOString();
|
||
let gesamt = 0;
|
||
const neu = [];
|
||
for (const [haus, rollen, quelle] of [
|
||
["agentur", FASSUNGEN, INHALTE],
|
||
["crew", FASSUNGEN_CREW, INHALTE_CREW],
|
||
]) {
|
||
for (const rolle of rollen) {
|
||
const inhalt = quelle[rolle];
|
||
/* Eine Rolle ohne Inhalte ist kein Fehler, sondern der Stand der
|
||
Arbeit: Etappe 1 bringt nur den Creator, die drei anderen kommen
|
||
in Etappe 3. Still uebergehen — aber die Zuordnungspruefung
|
||
weiss davon und meldet es als offen, nicht als in Ordnung. */
|
||
if (!inhalt) continue;
|
||
const n = rolleEinspielen(d, haus, rolle, inhalt, jetzt);
|
||
if (n) { gesamt += n; neu.push(`${haus}/${rolle} ${n}`); }
|
||
}
|
||
}
|
||
if (gesamt) {
|
||
console.log(`[workspace] Anleitung: ${gesamt} Zeilen erstbefuellt (${neu.join(", ")}).`);
|
||
}
|
||
}
|