Filipe: "dan will ich dass die rechte hand auch neue personen hinzufuegen kann. also neue erstellen kann und die codes genau so sieht wie dogfather, damit sie das auch machen kann wenn er live ist." WAS SIE DARF: Modis und Community anlegen, und deren Codes neu setzen. Die Liste ist ABGELEITET aus ROLLEN_ZUM_AENDERN -- dieselben zwei Rollen, die sie ohnehin vergeben darf. Zwei Listen waeren zwei Gelegenheiten, eine davon zu aendern und die andere zu vergessen. WAS SIE NICHT DARF: eine zweite rechte Hand, eine linke Hand oder einen zweiten DogFather anlegen -- und an einer linken Hand auch nichts aendern. Ohne die zweite Schranke haette sie den Code einer linken Hand neu setzen koennen und damit einen Zugang in der Hand, der fast so viel darf wie sie selbst. Die alte Schranke kannte nur "admin" und "manager". NUR DIE RECHTE, NICHT DIE LINKE. `istHand()` haette beide getroffen; fuer die linke Hand ist "legt niemanden an" eine ausdrueckliche Entscheidung vom 21.09. VIER STELLEN IN DER OBERFLAECHE, die alle an Rollennamen hingen: `nurLesen = ich.rolle === 'hand'` -- sie bekam die Liste und kein Formular. Jetzt abgeleitet aus `darf_anlegen`. Die Wache darueber warf sie auf die Startseite, sobald `nurLesen` falsch wurde. Die Seite ging fuer sie einfach nicht auf, ohne Meldung. Der Sendeweg hing an `ich.rolle === 'admin'`. Fuer sie gab es damit GAR KEINEN: Die Seite antwortete "Fuer die Rolle modi gibt es hier keinen Weg" -- ein Satz, der wie ein Formularfehler klingt und eine fehlende Zeile war. UND EIN ECHTER FUND: `rollenwahlErgaenzen()` hing jede Zusatzrolle an das Formular, die mit der Personenliste kam -- ohne zu fragen, ob man sie anlegen darf. Solange nur DogFather das Formular sah, fiel es nicht auf: Er darf sie alle. Der rechten Hand bot es "rechte Hand" und "linke Hand" an. Der Server haette es abgelehnt -- aber der Knopf verriet eine Rolle, die sie nicht vergeben soll. Zwei Pruefungen waren dabei selbst kaputt: pruef-personen-formular erwartete sieben Rollen (seit "linke" am 21.09. sind es acht) und suchte den Namen im sichtbaren Text -- die Abschnitte sind zugeklappt und zeigen nur Anfangsbuchstaben. Beides abgeleitet statt gezaehlt. Geprueft: pruef-personen-formular 43/0 (war 34 ok / 2 FEHL), davon neun am echten Bildschirm auf der Crew-Adresse -- anmelden, Formular oeffnen, anlegen, Code lesen, Person in der Liste wiederfinden. pruef-haus-trennung 81/0 (war 72 ok / 2 FEHL), pruef-rollen-anlegen 11/0.
122 lines
5.4 KiB
HTML
122 lines
5.4 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>Team · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609220139" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609220139" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609220139" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609220139" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609220139" />
|
||
<link rel="stylesheet" href="assets/css/team.css?v=202609220139" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609220139" />
|
||
<!-- 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=202609220139" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<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>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Team</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">
|
||
|
||
<!-- ==== DER KOPF ================================================
|
||
Er sagt in einem Satz, was diese Seite ist UND was sie nicht
|
||
ist. Der zweite Teil ist der wichtigere: Eine Seite mit Zahlen
|
||
über Kollegen wird sonst als Überwachung gelesen -- und dann
|
||
arbeitet niemand mehr offen damit.
|
||
|
||
Aus der Recherche (Fachliteratur zu Arbeitslast-Dashboards):
|
||
Der Zweck ist, Stellen zu finden, an denen Unterstützung fehlt.
|
||
Wer das nicht dazuschreibt, baut ein Kontrollwerkzeug, auch wenn
|
||
er es nicht wollte. -->
|
||
<!-- ==== EINE ECHTE KACHEL, IM TON DER KATEGORIE (09.09.2026) ====
|
||
|
||
Filipe: "perfektionnir das in einer kachel in der farbe von der
|
||
kategorie bitte."
|
||
|
||
`t-kachel` steht in der Modulliste von module.css und bekommt
|
||
damit dieselbe Form wie jede Kachel im Haus: gefraeste Fase oben
|
||
links, Kantenlicht, Eckwinkel, Raster. Die FARBE kommt aus
|
||
`--ton` -- derselben Variablen, aus der die Kachel auf der
|
||
Startseite ihren Ton zieht, und dort ist es Ton 22 (#ffd166).
|
||
Beide lesen dieselbe Zahl; die Kachel auf der Startseite und die
|
||
Ueberschrift hier koennen also nicht auseinanderlaufen. -->
|
||
<section class="t-kachel" data-ton="22">
|
||
<div class="t-kopf">
|
||
<div class="t-kopf__text">
|
||
<p class="feldschild">Rund um das Team</p>
|
||
<h1 class="t-kopf__titel">Manager & Scouts</h1>
|
||
<p class="t-kopf__unter" id="kopf-unter">
|
||
Wer betreut wen, wo staut sich etwas, wo fehlt jemand.
|
||
</p>
|
||
</div>
|
||
<p class="t-kopf__grenze">
|
||
Termine, Chats und Dateien kommen hier nicht vor – weder Inhalte
|
||
noch Zahlen. Das ist eine <strong>Arbeitslage</strong>, keine Überwachung.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- ==== DIE LÜCKEN ZUERST ======================================
|
||
Eine Kennzahl sagt, wie es läuft. Eine Lücke sagt, wo etwas
|
||
fehlt -- und nur das Zweite kann man heute abstellen. Deshalb
|
||
steht sie oben und nicht unter den Tabellen. -->
|
||
<section class="t-luecken" id="luecken" hidden></section>
|
||
|
||
<!-- ==== DIE LAGE IN ZAHLEN ===================================== -->
|
||
<section class="t-lage" id="lage" hidden></section>
|
||
|
||
<!-- ==== DIE LEUTE ==============================================
|
||
Jede Person einzeln, nicht als Durchschnitt: Zwei Scouts mit je
|
||
sechs Creators und einer mit achtzehn ergeben einen Schnitt von
|
||
zehn -- und der sagt nichts über den, bei dem es klemmt. -->
|
||
<section class="t-gruppe" id="manager-block" hidden>
|
||
<h2 class="feldschild">Manager</h2>
|
||
<div class="t-liste" id="manager-liste"></div>
|
||
</section>
|
||
|
||
<section class="t-gruppe" id="scout-block" hidden>
|
||
<h2 class="feldschild">Scouts</h2>
|
||
<div class="t-liste" id="scout-liste"></div>
|
||
</section>
|
||
|
||
<p class="leise" id="laedt">Die Arbeitslage wird geladen …</p>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/nachfrage.js?v=202609220139" defer></script>
|
||
|
||
|
||
<script src="assets/js/wahl.js?v=202609220139" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609220139" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609220139" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609220139" defer></script>
|
||
<script src="assets/js/team.js?v=202609220139" defer></script>
|
||
</body>
|
||
</html>
|