Files
tessera-ctl/docs
schalli e0ce594c5a feat(quick-260910-krx): Anordnung und Widgets an forTenant() gebunden
Aufgabe 2 — TDD zuerst (20 Faelle in dashboard.service.spec.ts, 8 vorher/12
neu, Zwei-Klienten-Nachweis ueber __makeBoundClient nach dem Muster von
module-access.service.spec.ts), dann die Umstellung:

- getLayout/saveLayout laufen GEMEINSAM gebunden (ein Testfall nagelt das
  fest); saveLayout uebersetzt eine gebundene Konflikt-Schreibung
  (PrismaClientUnknownRequestError, gemessen in Aufgabe 1 — NICHT P2002)
  in eine deutsche ConflictException.
- getWidgets/addWidget/updateWidgetConfig/removeWidget laufen gebunden;
  die drei Besitzpruefungen ueber die Benutzerkennung bleiben unveraendert
  bestehen (die Regeln dieses Bereichs kennen keine Benutzerdimension).
  updateWidgetConfig/removeWidget fuehren Besitzpruefung UND Schreibzugriff
  ueber DENSELBEN gebundenen Klienten.
- dashboard.controller.ts reicht den bereits aufgeloesten Mandanten bei
  getLayout/updateWidgetConfig/removeWidget durch (keine neue
  Vertrauensquelle, weiterhin aus extractContext/Sitzungsnachweis).
- Der Modulkatalog und die vier Suchmaschinenzugriffe bleiben in dieser
  Aufgabe unveraendert (Aufgabe 3).
- Falsifizierungsnachweis durchgefuehrt: tenantPrisma.widgetInstance.delete
  probeweise auf this.prisma zurueckgebaut — Test "Widget entfernen: ebenso,
  beide Abfragen ueber denselben Klienten" wird rot mit "erwarteter
  gebundener Aufruf widgetInstance.delete(tenant=tenant-1) fehlt im
  Protokoll"; Rueckbau zurueckgenommen, Testlauf wieder gruen (20/20).

Zwei dokumentierte Abweichungen (Rule 3): (1) Befund A hatte fuer
widgetInstance sieben Treffer vorhergesagt, gemessen sind sechs (macht
zusammen mit dashboardLayout acht statt neun) — der Verify-Schwellwert
wird entsprechend auf >=8 gelesen. (2) Die Stand-Spalte fuer
dashboardLayout/widgetInstance in der Klassifikationsdatei wird bereits
hier minimal nachgezogen (nicht erst in Aufgabe 3), weil
rls-access-inventory.spec.ts sonst am Ende dieser Aufgabe rot waere —
derselbe Praezedenzfall wie 260910-exd, Aufgabe 2.

Baseline gehalten: 851 Tests / 56 Dateien gruen (839 + 12 neue), Typpruefung
sauber, Wegwerf-Werkzeug 87/87.
2026-09-11 08:54:22 +02:00
..

Tessera — Anleitungen

Tessera ist eine Plattform, auf der verschiedene Arbeitswerkzeuge — genannt Module — an einer Stelle zusammenlaufen. Statt zwischen mehreren Anwendungen zu wechseln, meldet man sich einmal an und findet alles in derselben Oberfläche: ein einstellbares Dashboard, eine Seitenleiste mit den freigeschalteten Modulen und einen Marktplatz, über den weitere hinzukommen.

Diese Sammlung richtet sich an vier verschiedene Leserkreise. Suchen Sie sich den passenden heraus — die Anleitungen überschneiden sich bewusst kaum.

Anleitung Für wen Worum es geht
Für Anwender alle, die mit Tessera arbeiten Anmelden, Dashboard einrichten, Module benutzen
Für Administratoren wer Tessera einrichtet Benutzer, Gruppen, AD-Anbindung, Freigaben, SMTP
Für den Betrieb wer die Server betreut Installieren, neue Fassungen einspielen, Sicherungen, Fehlersuche
Für Entwickler wer an Tessera mitbaut Aufbau, Modulsystem, Berechtigungen, Konventionen

Daneben liegt das CI/CD-Runbook, das die Einrichtung der Bau-Pipeline in Gitea beschreibt. Es richtet sich an dieselben Leute wie die Betriebsanleitung, deckt aber nur den Weg vom Quelltext zum fertigen Abbild ab.

Ebenfalls dabei: Mandantentrennung auf Datenbankebene, das sich an dieselben Leute wie die Betriebsanleitung richtet und ausschliesslich die Datenbankrolle behandelt, mit der Tessera verbindet (WINDOWS #18).


Die drei Dinge, die am häufigsten Zeit kosten

Wenn Sie nur wenig lesen wollen — diese drei Punkte haben in der Praxis am meisten Verwirrung gestiftet:

1. Die Anmeldung läuft über den Benutzernamen, nicht über die E-Mail-Adresse. Das Feld heißt „Benutzername". Wer stattdessen seine E-Mail-Adresse einträgt, kommt nicht hinein — ohne dass eine hilfreiche Meldung erscheint. Es sieht aus wie ein kaputter Login, ist aber nur das falsche Feld.

2. „Aktiviert" und „freigegeben" sind zwei verschiedene Dinge. Ein Modul wird zuerst für das Unternehmen aktiviert und danach einzelnen Gruppen oder Personen freigegeben. Sehen Sie ein Modul im Marktplatz, aber nicht in Ihrer Seitenleiste, fehlt die zweite Stufe — wenden Sie sich an Ihre Administration. Details in der Administrationsanleitung.

3. Beim Ausrollen genügt docker compose up -d nicht. Ohne --force-recreate laufen die alten Container weiter, obwohl ein neues Abbild heruntergeladen wurde — ohne jede Fehlermeldung. Das Einspielen wirkt erfolgreich, ist es aber nicht. Der genaue Ablauf samt Kontrollbefehl steht in der Betriebsanleitung.


Zum Stand dieser Anleitungen

Sie wurden gegen den tatsächlichen Quelltext geschrieben, nicht aus der Planung abgeleitet. Beschriftungen von Schaltflächen und Feldern sind wörtlich aus den Sprachdateien der Oberfläche übernommen, damit sie zu dem passen, was auf dem Bildschirm steht.

Zwei Einschränkungen, die Sie kennen sollten:

  • Wo eine Aussage sich nicht aus dem Quelltext belegen ließ — etwa eine Einstellung, die von Hand auf dem Server ergänzt wurde — steht ein Hinweis im Text statt einer Vermutung.
  • Tessera wird derzeit ausschließlich intern eingesetzt. Die Trennung mehrerer Mandanten ist in der Architektur angelegt, aber nicht Gegenstand dieser Anleitungen.