- Aufgabe 2: vier sichere Biome-Regeln (useImportType pfadgebunden auf apps/web+packages, noUselessEscapeInRegex, useConst, useExponentiationOperator) sowie fuenf ungesicherte Regeln (useNodejsImportProtocol, useLiteralKeys, useOptionalChain, useTemplate, useParseIntRadix) angewendet und den gesamten Diff von Hand gelesen (ldap.service.ts zeichenweise gegen Gross-/Kleinschreibung der AD-Merkmale, auth.service.ts/jwt.strategy.ts gegen Durchwinken bei fehlender Sitzung geprueft) - noUselessSwitchCase bleibt bewusst stehen (tender-normalizer.service.ts:60, die Fallmarke dokumentiert Absicht) - Toter Code (D-03): fuenf folgenlose Auffangvariablen entfernt, eine nicht benutzte Funktion (forSystemQuery, Pruefskript) entfernt, ein positionsgebundener Dekoratorparameter umbenannt (current-user.decorator.ts), fuenf Symptomfunde entfernt und als Folgeaufgaben zu melden (siehe unten) - Sechs weitere, im Plan nicht namentlich gelistete aber gleich-kategorische Dead-Code-Fundstellen in Testdateien zusaetzlich bereinigt (groups.service.spec.ts, cert-manager.test.tsx, ldap.service.spec.ts, prisma-tenant.extension.spec.ts x3) — noetig, um die vom Plan selbst verlangten Nullstaende bei noUnusedVariables/ noUnusedImports/noUnusedFunctionParameters zu erreichen Dekoratordaten aus apps/api unveraendert (593 Zeilen, sha256 6e1583f1...). Endstand 620 Befunde (541 echt, 79 Test) statt der im Plan geschaetzten 621/542 — eine Differenz von 1, weil das Streichen des Namens aus `catch (e: any)` in calendar.service.ts (Symptom-Fix) den dort ebenfalls gemeldeten noExplicitAny-Befund miteliminiert; das ist eine erwuenschte Nebenwirkung, keine Regression. Fehlerstufe 0, beide Testlaeufe punktgleich gruen (69/1124, 66/459), pnpm type-check 4/4, pnpm lint --force 5/5. Folgeaufgaben aus D-03 (nicht in diesem Vorgang behoben): - force-password-change.interceptor.ts: Freigabeliste prueft nur den Pfad, nicht die HTTP-Methode - change-password/page.tsx: nach erzwungenem Wechsel bleibt die Person auf der Seite stehen (keine Weiterleitung, keine Aktualisierung der Benutzerablage) - VehicleTable.tsx: Loeschschaltflaeche hat keinen Besetztzustand, laesst sich doppelt ausloesen - SplitTab.tsx: downloadAllAsZip erhielt eine ungenutzte Uebersetzungsfunktion, Hinweis auf fest verdrahtete Texte im Zip-Pfad Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TPPB4ApQxzSU1rwV2Ffj9J
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.