Filipe: "Nicht nur ich soll meine Modis bewerten oder ihnen Feedback geben koennen. Auch die Modis sollen mir Feedback geben koennen. Sie sollen mir beispielsweise sagen koennen: Was koennte ich verbessern?" Und der Schlusssatz seines Pflichtenhefts: "Es soll nicht nur dazu dienen, Leistungen zu kontrollieren. Es soll vor allem dabei helfen, als Team besser zu werden." EIN BRETT FUER BEIDE KAPITEL, NICHT ZWEI. Kapitel 5 (gegenseitiges Feedback) und Kapitel 6 (gemeinsame Reflexion) stellen dieselben Fragen -- "was laeuft gut, was laeuft schlecht, was fehlt" --, einmal an eine Person und einmal an das Team. Zwei Bretter haetten bedeutet, dass man beim Schreiben zuerst entscheiden muss, an WEN es geht, bevor man weiss, WAS man sagen will. Hier ist es umgekehrt: erst die Sache, dann die Richtung. DIE NEUN FRAGEN SIND SEINE, wortwoertlich aus dem Pflichtenheft zusammengezogen: laeuft gut · laeuft nicht gut · unbedingt behalten · an DogFather · was dem Team fehlt · Regel aendern · besser organisieren · Idee · Wunsch fuer spaeter. Sie stehen als feste Faecher da und nicht als freies Feld -- genau das ist der Unterschied zwischen einer Sammlung und einem Haufen: Neun Faecher kann man auswerten, tausend Formulierungen nicht. KEIN NEUER BAUKASTEN. Die Rueckmeldung ist ein BEREICH wie das Ideen-Board: dieselbe Tabelle, dieselbe Seite, dieselben Regeln fuers Anlegen, Aendern und Loeschen, dieselbe Zugangssperre. Ein eigenes Modul haette all das ein zweites Mal gebraucht -- und die zweite Fassung waere die gewesen, in der eine Regel fehlt. DIE EINE NEUE SACHE IST DIE RICHTUNG. Beim Schreiben waehlt man zwischen "fuers Team" (Vorgabe) und "nur an DogFather". Ohne diese Wahl haette man eines von beidem verloren: Wer "was koenntest du besser machen" vor versammelter Mannschaft sagen muss, sagt es nicht -- wer alles nur unter vier Augen sagen kann, hat kein Team-Gespraech. UND "NUR DOGFATHER" HEISST NUR DOGFATHER -- die rechte Hand ausdruecklich nicht. Sie sieht sonst ueberall dasselbe wie er; hier nicht, weil das Etikett sonst nicht stimmen wuerde. Eine Zusage mit einer Ausnahme im Kleingedruckten ist keine. Sie schreibt selbst genauso -- auch ueber ihn. DIE ZUSAGE STEHT IN sichtbarEintrag(), also in derselben Funktion, durch die auch das Lesen einer einzelnen Zeile, das Aendern und das Loeschen gehen. Eine Regel, die nur die Liste filtert, laesst die Zeile ueber ihre Nummer trotzdem heraus; die Pruefung klopft deshalb auch von hinten (PATCH und DELETE auf die vertrauliche Zeile: 404, auf die offene: 200). `COALESCE(nur_leitung, 0)`: Jede Zeile, die es vor heute gab, hat dort NULL, und in SQL ist `NULL = 0` nicht falsch, sondern UNBEKANNT. Ohne den Ersatzwert waere der gesamte alte Bestand von einer Minute auf die andere unsichtbar gewesen -- und niemand haette es gemeldet, denn ein leeres Brett sieht nicht nach Fehler aus. Beide Richtungen sind gemessen. KEINE ANONYMITAET, und das ist eine Entscheidung, keine Luecke. In einem Team dieser Groesse waere sie ohnehin keine: An drei Saetzen erkennt jeder jeden. Ein Versprechen, das nicht haelt, ist schlimmer als keines. DER FARBTON DER KACHEL IST AUSGERECHNET, NICHT AUSGESUCHT. Bei 24 vorhandenen Toenen landet ein neuer fast zwangslaeufig neben einem alten, und zwei Kacheln in FAST derselben Farbe sind schlimmer als in derselben -- bei gleicher merkt man den Fehler, bei fast gleicher sucht man ihn. Alle 24 wurden in Farbwinkel umgerechnet; die groesste Luecke liegt zwischen 90 und 160 Grad und ist 70 Grad breit, mehr als doppelt so viel wie die naechste. Der neue Ton sitzt in ihrer Mitte, 8,9 zu 1 auf dunklem Grund. pruef-rueckmeldung 34 (neu) · pruef-rollen 274 -> 277 · pruef-start-ansicht zaehlt jetzt 25 Kacheln und 25 Farben (sie zaehlt selbst, statt eine Zahl festzuhalten -- deshalb blieb sie gruen) · pruef-modi-ideen 30 · pruef-modi-verborgen 78 · pruef-css-klassen gruen · pruef-modi-wortleck 5. Co-Authored-By: Claude Opus 5 <[email protected]>
195 lines
9.1 KiB
HTML
195 lines
9.1 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Bereich · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||
eine Flaeche sind statt zweier. -->
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609102244" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609102244" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609102244" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609102244" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609102244" />
|
||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609102244" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609102244" />
|
||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609102244" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<!-- Der innere span.marke__text fehlte hier als einziger Seite. Damit
|
||
griffen weder die Überlauf-Kürzung noch der Rang im Schriftzug --
|
||
aufgefallen erst, als die Seitenprüfung die Marke auf allen
|
||
dreizehn Seiten nachgesehen hat. -->
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> ·
|
||
<span id="marke-bereich">…</span></span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt inhalt--breit">
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke" id="ober">Betreuung</p>
|
||
<h1 class="titel" id="titel">…</h1>
|
||
<p class="unterzeile" id="unterzeile"></p>
|
||
</div>
|
||
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neuer Eintrag</button>
|
||
</section>
|
||
|
||
<form class="neu" id="neu" hidden>
|
||
<div class="neu__raster">
|
||
<div>
|
||
<label class="feld-schild" for="f-art">Art</label>
|
||
<select id="f-art"></select>
|
||
</div>
|
||
<div>
|
||
<label class="feld-schild" for="f-datum" id="schild-datum">Datum</label>
|
||
<input id="f-datum" type="date" />
|
||
</div>
|
||
<!-- Nur bei Agentur-Events: das Ende des Zeitraums. Der Beginn ist
|
||
das Feld darueber -- ein zweites Datumsfeld daneben liest sich
|
||
als Spanne, ein Feld "Zeitraum" mit Text darin nicht. -->
|
||
<div id="feld-ende" hidden>
|
||
<label class="feld-schild" for="f-ende">Bis</label>
|
||
<input id="f-ende" type="date" />
|
||
</div>
|
||
<!-- Was DogFather dafuer tun muesste. Nur in Bereichen, die das
|
||
Feld kennen (siehe BEREICHE.angebote) -- sonst bleibt es
|
||
verborgen und wird auch nicht mitgeschickt. -->
|
||
<div id="feld-einsatz" hidden>
|
||
<label class="feld-schild" for="f-einsatz" id="einsatz-schild">Einsatz</label>
|
||
<input id="f-einsatz" type="text" maxlength="300"
|
||
placeholder="z. B. Termin ansagen und den Gast einladen" />
|
||
</div>
|
||
<!-- FÜRS TEAM ODER NUR AN DOGFATHER (10.09.2026, Kapitel 5).
|
||
Steht nur dort, wo der Bereich es vorsieht -- der Server sagt
|
||
das über `einstellung.vertraulich`, nicht diese Datei.
|
||
Es ist ein Schalter mit zwei Zuständen und keine Auswahlliste:
|
||
Es gibt genau zwei Antworten, und eine davon ist der
|
||
Normalfall. -->
|
||
<div id="feld-vertraulich" hidden>
|
||
<label class="feld-schild" for="f-vertraulich">Wer darf das lesen?</label>
|
||
<label class="vertraulich-zeile">
|
||
<input type="checkbox" id="f-vertraulich" />
|
||
<span>
|
||
<strong>Nur DogFather</strong>
|
||
<em>Sonst liest es das ganze Team – auch die rechte Hand.</em>
|
||
</span>
|
||
</label>
|
||
</div>
|
||
|
||
<div id="feld-dringlich" hidden>
|
||
<label class="feld-schild" for="f-dringlich" id="dringlich-schild">Dringlichkeit</label>
|
||
<select id="f-dringlich">
|
||
<option value="hoch">hoch</option>
|
||
<option value="mittel" selected>mittel</option>
|
||
<option value="niedrig">niedrig</option>
|
||
</select>
|
||
</div>
|
||
<div id="feld-bewertung" hidden>
|
||
<label class="feld-schild" for="f-bewertung" id="bewertung-schild">Bewertung (1–5)</label>
|
||
<select id="f-bewertung">
|
||
<option value="">—</option>
|
||
<option value="1">1 – schwach</option>
|
||
<option value="2">2</option>
|
||
<option value="3">3 – solide</option>
|
||
<option value="4">4</option>
|
||
<option value="5">5 – stark</option>
|
||
</select>
|
||
</div>
|
||
<div id="feld-creator" hidden>
|
||
<label class="feld-schild" for="f-creator" id="schild-creator">Creator</label>
|
||
<select id="f-creator"><option value="">—</option></select>
|
||
<p class="feld-hinweis" id="hinweis-creator" hidden></p>
|
||
</div>
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-titel" id="schild-titel">Überschrift</label>
|
||
<input id="f-titel" maxlength="160" required />
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-text" id="schild-text">Text <span class="leise">(optional)</span></label>
|
||
<textarea id="f-text" rows="4" maxlength="6000"></textarea>
|
||
</div>
|
||
<!-- ==== Nur bei Agentur-Events ====================================
|
||
Zwei Felder, die den Unterschied zwischen einem Aufruf und einer
|
||
Aktion ausmachen, an der jemand teilnehmen kann: WAS ist zu tun
|
||
(und was springt dabei heraus) und WAS GILT dabei. Beides stand
|
||
bisher irgendwo im Fliesstext oder gar nicht -- und jede
|
||
Rueckfrage dazu kostet eine Nachricht. -->
|
||
<div class="neu__zeile" id="feld-aufgaben" hidden>
|
||
<label class="feld-schild" for="f-aufgaben">Aufgaben
|
||
<span class="leise">– womit sammelt man Punkte, was gibt es zu gewinnen</span></label>
|
||
<textarea id="f-aufgaben" rows="5" maxlength="6000"
|
||
placeholder="z. B. · 1 Punkt je Live-Stunde · 3 Punkte je neuem Abo · Platz 1 gewinnt …"></textarea>
|
||
</div>
|
||
<div class="neu__zeile" id="feld-regeln" hidden>
|
||
<label class="feld-schild" for="f-regeln">Regeln
|
||
<span class="leise">– was zählt, was nicht, bis wann</span></label>
|
||
<textarea id="f-regeln" rows="5" maxlength="6000"
|
||
placeholder="z. B. · Nur Streams auf dem eigenen Konto · Punkte zählen bis 23:59 am letzten Tag"></textarea>
|
||
</div>
|
||
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
||
<div class="neu__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Eintragen</button>
|
||
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
|
||
</div>
|
||
</form>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<div class="filter" id="filter"></div>
|
||
|
||
<!-- Fertige Punkte zum Uebernehmen -- nur in Bereichen, fuer die es
|
||
welche gibt (derzeit LIVE-Analyse). -->
|
||
<!-- Unterweisungen mit beidseitiger Bestaetigung. Nur im Bereich
|
||
"Schutz & Regeln" -- dort gehoeren Richtlinien hin. -->
|
||
<div id="schulung" hidden></div>
|
||
|
||
<div id="vorlagen" hidden></div>
|
||
|
||
<div id="liste" aria-busy="true"><p class="leise">Einträge werden geladen …</p></div>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/wahl.js?v=202609102244" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609102244" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609102244" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609102244" defer></script>
|
||
<script src="assets/js/checkliste.js?v=202609102244" defer></script>
|
||
<script src="assets/js/ampel.js?v=202609102244" defer></script>
|
||
<script src="assets/js/schulung.js?v=202609102244" defer></script>
|
||
<script src="assets/js/vorlagen.js?v=202609102244" defer></script>
|
||
<script src="assets/js/bereich.js?v=202609102244" defer></script>
|
||
</body>
|
||
</html>
|