Ein Modi sieht nur SEINE Aufgaben -- und gibt sich selbst keine

Filipe, unmissverstaendlich und mehrfach: "die modis sollen immer nur
ihre aufgaben auch sehen und nicht die von anderen, so wie bei den
daten ... damit wir endlich den modis aufgaben anstaendig verteilen
koennen und sie sich nicht selber aufgaben geben."

DAS DREHT DIE ENTSCHEIDUNG VOM 09.09. AUSDRUECKLICH UM. Damals: "ja,
sie sind untereinander ein team", damit ein Schichttausch ohne Umweg
geht. Beides steht jetzt im Code nebeneinander, damit niemand spaeter
die aeltere findet und fuer die gueltige haelt.

VIER AENDERUNGEN:

  Die Sicht. Ein Modi sieht nur `a.verantwortlich_id = ich`. Was ihm
  ueber aufgaben_zuteilung gegeben wurde, haengt mitZugeteilten() an --
  ein Pool, in dem er steht, bleibt also sichtbar, bis ihn jemand
  uebernimmt. Die rechte und die linke Hand behalten die Uebersicht.

  Das Anlegen. Im Team Dogi legt nur an, wer auch verteilen darf. In
  der AGENTUR bleibt es, wie es war -- dort ist eine Aufgabe eine
  Notiz an sich selbst, kein Auftrag von jemandem. Eine Regel, die
  beide Haeuser ueber einen Kamm schert, waere falsch.

  Der Knopf. "Neue Aufgabe" steht fuer einen Modi gar nicht mehr da.
  Ein Knopf, der mit 403 antwortet, ist schlimmer als keiner: Die
  Meldung erscheint ganz oben, und wer weiter unten steht, sieht nur,
  dass nichts passiert.

  Die Kacheln. Ein Modi sieht jetzt den Bereich "Entwicklung &
  Nachwuchs" mit denselben zwei Kacheln wie die Leitung -- nicht mehr
  zwei eigene mit anderem Namen. Zwei Namen fuer dieselbe Sache ist
  genau der Fehler, der am 19.09. zwei Kacheln "Chat" ergeben hat.
  "Talente" bleibt draussen: Dort stehen Notizen ueber Zuschauer, die
  nichts davon wissen.

UND DIE LINKE HAND SIEHT "DEIN TEAM" NICHT MEHR (Filipes Wunsch).
Abgeleitet, nicht nachgebaut: Ihre Liste ist die der rechten Hand
MINUS dieser einen Kachel, erkannt am ZIEL statt am Namen -- der Name
ist am 17.09. schon einmal gewandert.

Gemessen: admin 30 Kacheln, hand 30, linke 29 (ohne "Dein Team"),
modi 25 (mit dem Bereich, ohne Talente).

Zwei Pruefungen hielten die alte Regel fest und wurden dadurch rot --
genau ihre Aufgabe. Beide umgedreht, mit der alten Entscheidung im
Kommentar. pruef-zuteilung 65/0, pruef-verteilen 19/0 (war 15),
pruef-aufgabenbrett 49/0.
This commit is contained in:
2026-09-22 01:17:11 +02:00
parent ea32d6790b
commit 39c0b4dc1f
43 changed files with 676 additions and 539 deletions
+32 -3
View File
@@ -10,7 +10,7 @@
import express from "express";
import {
db, protokolliere, echteIp, sitzungLesen, betreutWo, istLeitung, darfAufgabenVerteilen, ohneDogFather, heuteLokal, ROLLEN_SORTIERUNG, ROLLEN_GRUPPE, betreuteIds,
db, protokolliere, echteIp, sitzungLesen, betreutWo, istLeitung, darfAufgabenVerteilen, darfAufgabenAnlegen, ohneDogFather, heuteLokal, ROLLEN_SORTIERUNG, ROLLEN_GRUPPE, betreuteIds,
externPruefen, externSql, sichtbarePersonenIds, sichtbareCreatorIds,
MODI_KATEGORIEN, kategorienFuer, kategoriePersonen,
KANAELE, kanaeleFuer,
@@ -209,10 +209,32 @@ function sichtbarRoh(person) {
`case` ohne `break` faellt in den naechsten -- genau das ist hier
gewollt und der kuerzeste ehrliche Weg, "diese beiden gleich" zu
sagen. */
/* =================================================================
EIN MODI SIEHT NUR SEINE EIGENEN (22.09.2026) -- und das dreht
die Entscheidung vom 09.09. ausdruecklich um.
Filipe, mehrfach und zuletzt unmissverstaendlich: "die modis
sollen immer nur ihre aufgaben auch sehen und nicht die von
anderen, so wie bei den daten ... damit wir endlich den modis
aufgaben anstaendig verteilen koennen und sie sich nicht selber
aufgaben geben."
Am 09.09. hatte er das Gegenteil entschieden ("ja, sie sind
untereinander ein team"), damit ein Schichttausch ohne Umweg
geht. Diese Zeile haelt beides fest, damit niemand spaeter die
aeltere Entscheidung findet und sie fuer die gueltige haelt: Die
neuere gilt.
WAS BLEIBT: Was ihm ueber `aufgaben_zuteilung` gegeben wurde,
sieht er weiterhin -- das haengt `mitZugeteilten()` an diese
Bedingung an. Ein Pool, in dem er steht, bleibt also sichtbar,
bis ihn jemand uebernimmt. */
case "modi":
return { wo: "a.verantwortlich_id = ?", werte: [person.id] };
case "hand":
/* Die linke Hand sieht dasselbe wie die rechte (21.09.2026). */
case "linke":
case "modi": {
case "linke": {
const liste = [...TEAM_DOGI_ROLLEN].map((r) => `'${r}'`).join(", ");
const modis = db().prepare(
`SELECT id FROM personen WHERE rolle IN (${liste})`).all().map((z) => z.id);
@@ -777,6 +799,13 @@ aufgabenRouter.delete("/workspace/api/notizen/:id", gleicheHerkunft, (req, res)
aufgabenRouter.post("/workspace/api/aufgaben", gleicheHerkunft, (req, res) => {
try {
/* IM TEAM DOGI LEGT NUR DIE LEITUNG AN (22.09.2026). Ein Modi
bekommt Aufgaben; er gibt sich keine. Die Schranke steht VOR der
Feldpruefung, damit die Antwort nicht erst ueber Feldfehler
redet, wenn der Weg ohnehin zu ist. */
if (!darfAufgabenAnlegen(req.person)) {
return res.status(403).json({ fehler: "nur_leitung_legt_an" });
}
const { aus, fehler } = pruefeFelder(req.body || {}, { neu: true, person: req.person });
if (fehler.length) return res.status(400).json({ fehler: fehler.join(" ") });