diff --git a/AGENTS.md b/AGENTS.md index f1c38b9..30bc8e6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,6 +18,8 @@ Regeln für alle Agenten, die an dieser Doku, am Tibi-Server / tibi-admin oder a `../tibi-admin-nova/frontend/src/lib/i18n/locales/de.json` stehen. Findet man keinen String, beschreibt man die Wirkung („der Knopf oben rechts") statt einen Namen zu erfinden. - **Sprache:** Deutsch, saubere Umlaute (ä ö ü ß), Du-Form, kurze Sätze. Ton: **per Du, aber professionell** — sachlich wie ein gutes Handbuch, niemals Babysprache. Keine belehrenden Binsen („wenn du nichts findest, verändere die Suche"), keine Verniedlichung („keine Angst"), keine erfundenen Floskeln. UI-Namen immer wörtlich aus `de.json` bzw. Screenshot. Anweisungen nennen den exakten Klickpfad; „Was-tun-wenn" nur für echte, am Code belegte Fälle. +- **Ton in Fehlerabschnitten (verbindlich):** Der Leser ist erwachsen und fachlich. Störungen werden als **Tabelle** beschrieben: `Meldung | Bedeutung (Ursache) | Vorgehen`. Verboten sind: „Wenn etwas schiefgeht", „Wenn nicht alles klappt", Arbeit für den Leser erfinden („notiere Aktion, Uhrzeit und Fehlermeldung"), Erziehungsfloskeln („prüfe Zeichen für Zeichen", „Feststelltaste beachten", „statt weiter zu raten", „höchstens drei Versuche"), Warnungen an die Vernunft („nicht blind", „doppelt anlegen vermeiden") und Verweise auf Betreuungspersonen („bitte deine Betreuung/Teamleitung um Prüfung/Freischaltung"). + Stattdessen: **Ursache benennen und die Instanz, die es löst** — z. B. „Dafür ist das Recht `allowSnapshots` nötig; es wird am Projekt-Admin-Token gesetzt ([Benutzer und Rechte](/admin/benutzer-rechte/))". Nebenwirkungen sachlich benennen: „Der Lauf ist nicht abbrechbar; ein zweiter Lauf löst Versand und Berechnung erneut aus." ## 2. Wo was hingehört — Stand: ausgebaut (keine Hüllen mehr) diff --git a/plans/audit-report.json b/plans/audit-report.json index 1737ee5..39960ad 100644 --- a/plans/audit-report.json +++ b/plans/audit-report.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-10-17T11:51:09.612Z", + "generatedAt": "2026-10-17T13:19:19.983Z", "stats": { "files": 70, "byDir": { @@ -13,9 +13,9 @@ "server": 5 }, "components": { - "Aside": 111, + "Aside": 108, "Badge": 30, - "Steps": 92, + "Steps": 87, "TabItem": 64, "Tabs": 28, "Card": 11, diff --git a/src/content/docs/anwender/aktionen.md b/src/content/docs/anwender/aktionen.md index e748e70..a5e4fef 100644 --- a/src/content/docs/anwender/aktionen.md +++ b/src/content/docs/anwender/aktionen.md @@ -23,7 +23,7 @@ import { Aside, Steps } from '@astrojs/starlight/components'; ![Abgeschlossene Aktion mit vollständigem Fortschrittsbalken und Anzeige „100% abgeschlossen"](../../../assets/anwender/aktionen-fortschritt.webp) @@ -41,21 +41,17 @@ Während der **Ausführung** zeigt der Bereich **Fortschritt** einen Balken mit -Ein gestarteter Lauf lässt sich nicht abbrechen — plane die **Eingaben** daher vorher und starte erst, wenn alle Felder stimmen. +Ein gestarteter Lauf lässt sich nicht abbrechen. -## Wenn etwas schiefgeht +## Fehler - - -1. Bei **Aktion konnte nicht ausgeführt werden.** lies zuerst die Meldung unter **Letztes Ergebnis**. -2. Prüfe deine **Eingaben** auf Tippfehler und unvollständige Felder. -3. Korrigiere sie und klicke erneut auf **Ausführen**. -4. Bleibt der Fehler bestehen, notiere Aktion, Uhrzeit und Fehlermeldung und bitte deine Betreuung um Prüfung. - - +| Meldung | Bedeutung (Ursache) | Vorgehen | +| ------- | ------------------- | -------- | +| **Aktion konnte nicht ausgeführt werden.** | Der Lauf ist fehlgeschlagen; die Ursache steht unter **Letztes Ergebnis**. | Meldung unter **Letztes Ergebnis** auswerten, **Eingaben** korrigieren, erneut **Ausführen** | +| Fehler bleibt nach korrigierten **Eingaben** bestehen | Ursache außerhalb der Eingaben (Konfiguration oder Berechtigung) | Aktionsnamen und Meldung aus **Letztes Ergebnis** an die Administration geben — sie sieht Berechtigungen und Server-Log | Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/anmelden.md b/src/content/docs/anwender/anmelden.md index 6ff8b59..417a830 100644 --- a/src/content/docs/anwender/anmelden.md +++ b/src/content/docs/anwender/anmelden.md @@ -21,24 +21,15 @@ Du arbeitest im **tibi-admin**, dem Verwaltungs-Backend für deine Inhalte (Rele ![Anmeldemaske von tibi-admin mit Feldern für Benutzername und Passwort](../../../assets/anwender/anmelden-login.webp) -## Wenn die Anmeldung fehlschlägt +## Fehler bei der Anmeldung -Bleibst du auf der Anmeldeseite oder erscheint die Meldung „Ungültiger Benutzername oder Passwort", gehe wie folgt vor: - - - -1. Prüfe Benutzername und Passwort Zeichen für Zeichen. -2. Deaktiviere die Feststelltaste und gib das Passwort erneut ein. -3. Klicke erneut auf **Anmelden**. - - - - +| Meldung | Bedeutung (Ursache) | Vorgehen | +| ------- | ------------------- | -------- | +| „Ungültiger Benutzername oder Passwort" | Benutzername oder Passwort stimmen nicht (häufig: vertippte Zeichen oder aktive Feststelltaste). | Korrigiere die Schreibweise — Groß- und Kleinschreibung zählen — und klicke erneut auf **Anmelden**. | +| Die Anmeldung schlägt wiederholt fehl. | Das Passwort ist unbekannt oder das Konto ist gesperrt. | Wende dich an die Administration; sie setzt das Passwort in der **Benutzerverwaltung** zurück (**Passwort zurücksetzen**). | ## Abmelden und Profil diff --git a/src/content/docs/anwender/benutzer-teams.md b/src/content/docs/anwender/benutzer-teams.md index d944fe1..6f2fe70 100644 --- a/src/content/docs/anwender/benutzer-teams.md +++ b/src/content/docs/anwender/benutzer-teams.md @@ -49,7 +49,7 @@ Du legst keine Benutzer an und änderst keine Rechte — du stellst eine Anfrage 1. Halte fest, was du benötigst (beispielsweise Zugang für eine Kollegin). 2. Notiere Team und gewünschte Rolle. -3. Sende diese Bitte an deine Teamleitung. +3. Sende diese Anfrage an die Administration. 4. Warte auf die Bestätigung. 5. Prüfe danach, ob die Freischaltung vorliegt. @@ -61,7 +61,7 @@ Gib keine Zugänge auf Zuruf frei und ändere keine Rechte eigenmächtig. Falsch ## Hinweis zur Stellvertretung -Meldet sich der Support mit deinem Konto an, um dir zu helfen (Stellvertretung über **Als dieser Benutzer einloggen**), geschieht das ausschließlich nach Absprache mit dir oder deiner Teamleitung. Sprich ihn an, wenn du unsicher bist. Du musst dafür nichts einrichten. +Meldet sich der Support mit deinem Konto an, um dir zu helfen (Stellvertretung über **Als dieser Benutzer einloggen**), geschieht das ausschließlich nach Absprache mit dir. Sprich ihn an, wenn du unsicher bist. Du musst dafür nichts einrichten. Während der Stellvertretung zeigt ein Banner über der Seite **Eingeloggt als @Benutzername** mit dem Hinweis **Impersonation** und rechts die Schaltfläche **Zurück zur Administration**. Alles, was du in dieser Zeit tust, geschieht im Namen des vertretenen Kontos. Zum Beenden klickst du auf **Zurück zur Administration** (**Beenden**) und landest wieder in deiner eigenen Sitzung. diff --git a/src/content/docs/anwender/eintrag-bearbeiten.md b/src/content/docs/anwender/eintrag-bearbeiten.md index 5470d74..07557d5 100644 --- a/src/content/docs/anwender/eintrag-bearbeiten.md +++ b/src/content/docs/anwender/eintrag-bearbeiten.md @@ -55,7 +55,7 @@ Das Fenster **Einträge durchsuchen** listet alle Einträge der verknüpften Sam ## Sprachen und Übersetzungen -Arbeitet deine Sammlung mehrsprachig, wechselst du oben im Editor mit **DE** und **EN** (Tastenkürzel Strg + L) die Bearbeitungssprache. Jedes übersetzbare Feld zeigt daneben seinen Sprachstand an; über **Übersetzen** am Feld überträgst du den Text in die andere Sprache und prüfst ihn danach Zeichen für Zeichen. +Arbeitet deine Sammlung mehrsprachig, wechselst du oben im Editor mit **DE** und **EN** (Tastenkürzel Strg + L) die Bearbeitungssprache. Jedes übersetzbare Feld zeigt daneben seinen Sprachstand an; über **Übersetzen** am Feld überträgst du den Text in die andere Sprache und prüfst ihn danach. ![Eintrag-Editor mit Sprachleiste DE EN und Übersetzen-Schaltflächen an den Feldern](../../../assets/anwender/eintrag-sprachen.webp) @@ -83,22 +83,19 @@ In langen Formularen drückst du Strg + F (am Mac Cmd + F) und suchst im Fenster Verlässt du die Seite mit ungespeicherten Änderungen, erscheint die Rückfrage **Änderungen verwerfen?** Brich ab und speichere zuerst, sonst gehen die Eingaben verloren. -## Wenn das Speichern blockiert ist +## Fehler beim Speichern -Rot markierte Felder bedeuten: Hier fehlt eine Angabe oder sie ist ungültig. +Rot markierte Felder bedeuten: eine Angabe fehlt oder verletzt eine der Regeln aus dem Schema. - - -1. Lies den Hinweis an der Speichern-Schaltfläche (Anzahl der Fehler). -2. Klicke auf das erste rot markierte Feld. -3. Fülle Pflichtfelder aus, sie sind mit Stern markiert. -4. Beachte bei besonderen Feldern das Format, beispielsweise Datum oder Zahl. -5. Klicke erneut auf **Speichern**. - - +| Meldung | Bedeutung (Ursache) | Vorgehen | +|---|---|---| +| Hinweis an der Speichern-Schaltfläche zählt Fehler | Der Server hat die Validierung des Formulars abgelehnt; jedes rot markierte Feld nennt seinen Grund | Feld korrigieren, dann erneut **Speichern** | +| Pflichtfeld (Stern) leer | Das Schema verlangt einen Wert (`validator.required`) | Wert eintragen | +| „ungültiges Format" o. ä. am Feld | Das Schema prüft Format (Datum, Zahl, E-Mail, Muster) | Wert an das erwartete Format anpassen — die Regel steht als Hilfetext am Feld | +| Konflikt beim Speichern (Status 409, mit `legacy.httpCodes` 500) | Ein Unique-Index der Sammlung ist verletzt — typisch: `translationKey`, `slug` oder ein anderer als eindeutig markierter Wert existiert schon (`internal/controller/http_status.go:45-52`) | Wert ändern oder den bestehenden Eintrag bearbeiten | Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). diff --git a/src/content/docs/anwender/hilfe.md b/src/content/docs/anwender/hilfe.md index 2ab461e..014ac69 100644 --- a/src/content/docs/anwender/hilfe.md +++ b/src/content/docs/anwender/hilfe.md @@ -1,52 +1,34 @@ --- -title: 'Hilfe, wenn es klemmt' -description: 'Häufige Fragen und was du dann tust.' +title: 'Hilfe bei Störungen' +description: 'Meldungen, ihre Ursachen und die zuständige Stelle — von der Anmeldung bis zum fehlenden Bild.' --- -import { Aside, Steps } from '@astrojs/starlight/components'; +import { Aside } from '@astrojs/starlight/components'; -Diese Seite hilft dir einzuordnen, wo ein Problem liegt — die ausführliche Anleitung steht jeweils auf der verlinkten Seite. +Störungen lassen sich meist über die Meldung einordnen. Die ausführliche Anleitung steht auf der jeweils verlinkten Seite. -## Anmeldung schlägt fehl +## Fehlerübersicht -Prüfe Benutzername und Passwort Zeichen für Zeichen (Feststelltaste beachten) und klicke erneut auf **Anmelden**. Nach höchstens drei Versuchen bitte deine Betreuung um ein neues Passwort, statt weiter zu raten. Die genaue Abfolge steht unter [Anmelden](/anwender/anmelden/). - - - -## Eintrag wird nicht gefunden - -Häufige Ursachen: falsche Sammlung, aktiver Filter oder Tippfehler. Setze alle Filter zurück (**Alle zurücksetzen**) und prüfe die Sammlung in der linken Liste. Wie Suche, Filter und Sortierung zusammenspielen, steht unter [Lesen, Suchen, Filtern](/anwender/lesen-suchen-filtern/). - -## Speichern ist blockiert - -Rot markierte Felder bedeuten: Eine Pflichtangabe (Feld mit Stern) fehlt oder ist ungültig — fülle sie und klicke erneut auf **Speichern**. Klickst du mit leeren Pflichtfeldern auf **Speichern**, zählt ein Hinweis oben rechts die Fehler und die betroffenen Felder werden rot markiert, wie das Bild zeigt. Fülle zuerst alle rot markierten Felder aus und klicke danach erneut auf **Speichern**. Details zu Pflichtfeldern und Formaten stehen unter [Einträge anlegen und bearbeiten](/anwender/eintrag-bearbeiten/). +| Meldung | Bedeutung (Ursache) | Vorgehen | +|---|---|---| +| „Ungültiger Benutzername oder Passwort" | Zugangsdaten stimmen nicht (Schreibweise und Groß-/Kleinschreibung zählen) oder die Sitzung ist abgelaufen | Anmeldung erneut versuchen; nach wiederholtem Fehlschlag setzt die Administration das Passwort in der **Benutzerverwaltung** zurück (**Passwort zurücksetzen**) — [Anmelden](/anwender/anmelden/) | +| „Keine Berechtigung für diese Aktion" | Dem Konto fehlt das Recht für dieses Projekt oder diese Sammlung | Rechte vergibt die Administration ([Benutzer und Teams](/anwender/benutzer-teams/)) | +| „Eintrag nicht gefunden" | Der Eintrag wurde gelöscht oder liegt in einer anderen Sammlung | Filter zurücksetzen (**Alle zurücksetzen**) und die Sammlung in der linken Liste prüfen; die inhaltliche Zuständigkeit steht in der Teamansicht | +| Pflichtfeld-Hinweis, rot markierte Felder | Ein Feld mit Stern ist leer oder ungültig — der Server prüft die Regeln aus dem Schema | Rot markierte Felder ausfüllen, dann erneut **Speichern** — [Einträge anlegen und bearbeiten](/anwender/eintrag-bearbeiten/) | +| Bild bleibt nach dem Speichern leer | Die Referenz zeigt auf eine Datei, die nicht zum Eintrag passt oder für das Konto nicht freigegeben ist | Bild im Bildfeld erneut aus der Mediathek wählen und **Speichern**; bleibt es leer, Freigabe über die Administration — [Medien](/anwender/medien/) | ![Neuer Seiten-Eintrag mit rot markierten Pflichtfeldern Seitentitel und URL-Pfad und dem Hinweis Bitte korrigiere die markierten Felder](../../../assets/anwender/hilfe-fehler.webp) - +## Zuständigkeiten -## Bild fehlt - -Öffne den Eintrag, wähle das Bild im Bildfeld erneut aus der Mediathek und klicke auf **Speichern**. Bleibt es danach leer, bitte deine Betreuung um Prüfung der Freigabe. Hochladen und Bildeditor stehen unter [Medien](/anwender/medien/). - -## An wen du dich wendest - - - -1. Lies die Meldung auf dem Bildschirm wörtlich ab. -2. Halte fest, was du unmittelbar zuvor angeklickt hast. -3. Wende dich bei Inhalten (Texte, Bilder, Seiten) an deine Teamleitung. -4. Wende dich bei Technik (Fehler, Tempo, Ausfall) an den Betreiber. -5. Wende dich bei Zugängen (Passwort, Rolle, Team) an deine Teamleitung. - - +| Thema | Stelle | +|---|---| +| Inhalte: Texte, Bilder, Seiten, Zuständigkeit für eine Sammlung | das zuständige Team — Mitgliederliste in der Teamansicht ([Benutzer und Teams](/anwender/benutzer-teams/)) | +| Zugänge: Passwort, Rolle, Team, Projektzugang | Administration (**Benutzerverwaltung**) | +| Technik: Server-Fehler, Laufzeit, Ausfälle, Projekt-Token-Rechte | Betreiber des tibi-server | Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/ki-nutzen.md b/src/content/docs/anwender/ki-nutzen.md index 6914eff..98a64a2 100644 --- a/src/content/docs/anwender/ki-nutzen.md +++ b/src/content/docs/anwender/ki-nutzen.md @@ -104,10 +104,10 @@ Deine Unterhaltung bleibt lokal in diesem Browser gespeichert. Die Sprachaufnahm -Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). Kommt die KI nicht weiter, hilft [Hilfe, wenn es klemmt](/anwender/hilfe/). +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). Für Störungen siehe [Hilfe bei Störungen](/anwender/hilfe/). Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/lesen-suchen-filtern.md b/src/content/docs/anwender/lesen-suchen-filtern.md index c8b22dd..637aa85 100644 --- a/src/content/docs/anwender/lesen-suchen-filtern.md +++ b/src/content/docs/anwender/lesen-suchen-filtern.md @@ -38,7 +38,7 @@ Deine gewählte Ansicht bleibt erhalten. Nach einem Neuladen siehst du dieselbe Liefert die Suche keine Treffer, gehe wie folgt vor: @@ -46,7 +46,7 @@ Liefert die Suche keine Treffer, gehe wie folgt vor: 1. Kürze den Suchbegriff und suche erneut. -2. Prüfe die Schreibweise Zeichen für Zeichen. +2. Prüfe die Schreibweise und suche erneut. 3. Leere das Suchfeld vollständig, um wieder alle Einträge zu sehen. diff --git a/src/content/docs/anwender/massenbearbeitung.md b/src/content/docs/anwender/massenbearbeitung.md index 993ae0e..11239da 100644 --- a/src/content/docs/anwender/massenbearbeitung.md +++ b/src/content/docs/anwender/massenbearbeitung.md @@ -58,10 +58,13 @@ Steht ein Feld nicht unter **Feld wählen…**, bearbeite die betroffenen Eintr Die Massenbearbeitung lässt sich nicht rückgängig machen. Prüfe die **Vorschau** und teste neue Operationen zuerst an wenigen Einträgen. -## Wenn nicht alles klappt +## Fehler -- Einzelne Einträge können scheitern (z. B. Pflichtfeld leer, keine Berechtigung). Dann meldet die Anzeige sinngemäß „{done} von {total} aktualisiert, {failed} fehlgeschlagen“ — notiere die Zahl und prüfe die übrigen Einträge einzeln. -- Steht dort **Füge mindestens eine Operation hinzu.**, hast du noch keine **Operation** angelegt. -- Zum Löschen vieler Einträge wechsele oben auf **Löschen** — dort heißt der Knopf **Löschen** statt **Änderungen anwenden**, und die Nachfrage lautet **Möchtest du {count} Einträge wirklich unwiderruflich löschen?**. +| Meldung | Bedeutung (Ursache) | Vorgehen | +| ------- | ------------------- | -------- | +| „{done} von {total} aktualisiert, {failed} fehlgeschlagen" | Einzelne Einträge sind gescheitert (z. B. Pflichtfeld leer, fehlende Berechtigung). | Prüfe die gescheiterten Einträge einzeln. | +| **Füge mindestens eine Operation hinzu.** | Es ist noch keine **Operation** angelegt. | Lege unter **Operationen** mindestens eine Operation an. | + +Zum Löschen vieler Einträge wechsele oben auf **Löschen** — dort heißt der Knopf **Löschen** statt **Änderungen anwenden**, und die Nachfrage lautet **Möchtest du {count} Einträge wirklich unwiderruflich löschen?**. Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/medien.md b/src/content/docs/anwender/medien.md index 6482ce8..b209293 100644 --- a/src/content/docs/anwender/medien.md +++ b/src/content/docs/anwender/medien.md @@ -48,18 +48,16 @@ Sobald du Dateien ablegst, gleitet unten die Warteschlange ein („0 von 1 hochg ![Upload-Warteschlange mit einer Datei, Schnell-Upload und Bearbeiten und hochladen](../../../assets/anwender/medien-warteschlange.webp) -Wird ein Upload abgelehnt, gehe wie folgt vor: +Abgelehnte Uploads nennen den Grund in der Warteschlange: - - -1. Prüfe, ob die Datei die zulässige Größe überschreitet („Datei ist zu groß"), und wähle eine kleinere Datei. -2. Prüfe das Format („Dateityp ist nicht erlaubt") und verwende beispielsweise JPG. -3. Wiederhole den Versuch mit einer Datei pro Durchgang. - - +| Meldung | Bedeutung (Ursache) | Vorgehen | +|---|---|---| +| „Datei ist zu groß" | Die Datei überschreitet das Limit `upload.maxBodySize` der Sammlung bzw. des Servers (`internal/config/server.go:45`) | Kleinere Datei wählen oder das Bild vorher verkleinern (Bildeditor) | +| „Dateityp ist nicht erlaubt" | Der MIME-Typ steht nicht in der Erlaubnisliste (`upload.allowedMimeTypes`) | Zulässiges Format verwenden (meist JPG, PNG, WebP, PDF) | +| Upload bricht ab | Verbindung oder Sitzung beendet, während die Datei übertragen wird | Datei erneut in die Warteschlange legen | ## Bild anpassen diff --git a/src/content/docs/anwender/orientierung.md b/src/content/docs/anwender/orientierung.md index 96a7cf9..3a4ba71 100644 --- a/src/content/docs/anwender/orientierung.md +++ b/src/content/docs/anwender/orientierung.md @@ -36,7 +36,7 @@ Ein Projekt ist beispielsweise eine Website oder ein Shop. ![Projektliste mit allen Projekten, darunter die Corporate Website](../../../assets/anwender/orientierung-projektwechsel.webp) diff --git a/src/content/docs/anwender/seiten-bauen.md b/src/content/docs/anwender/seiten-bauen.md index 2ee3bb3..6f05c63 100644 --- a/src/content/docs/anwender/seiten-bauen.md +++ b/src/content/docs/anwender/seiten-bauen.md @@ -24,7 +24,7 @@ Ein Block ist ein Baustein. Eine Seite besteht aus mehreren Bausteinen untereina ![Pagebuilder mit geöffneter Blockauswahl für Corporate-Blöcke](../../../assets/anwender/seiten-pagebuilder.webp) diff --git a/src/content/docs/anwender/sichern.md b/src/content/docs/anwender/sichern.md index f2dfa5a..7f18e71 100644 --- a/src/content/docs/anwender/sichern.md +++ b/src/content/docs/anwender/sichern.md @@ -19,7 +19,7 @@ Der **tibi-admin** (Verwaltungs-Backend, Release **Nova**) kennt zwei Sicherunge ![Snapshot-Übersicht mit Einträgen des Corporate-Projekts](../../../assets/anwender/sichern-uebersicht.webp) diff --git a/src/content/docs/anwender/verlauf-wiederherstellen.md b/src/content/docs/anwender/verlauf-wiederherstellen.md index c13d81d..633123d 100644 --- a/src/content/docs/anwender/verlauf-wiederherstellen.md +++ b/src/content/docs/anwender/verlauf-wiederherstellen.md @@ -26,7 +26,7 @@ Jeder gespeicherte Eintrag bekommt automatisch einen **Verlauf**: wer was wann g Steht dort **Kein Verlauf für diesen Datensatz**, wurde der Eintrag noch nie geändert — dann gibt es nichts zurückzuspielen. ## Unterschiede (Diff) lesen diff --git a/src/content/docs/projekt/audit-backup.md b/src/content/docs/projekt/audit-backup.md index d9c3a78..4dfb149 100644 --- a/src/content/docs/projekt/audit-backup.md +++ b/src/content/docs/projekt/audit-backup.md @@ -1,6 +1,6 @@ --- title: 'Änderungen und Sicherung' -description: 'Audit-Log lesen, Snapshots nutzen, Backup und Restore mit dem Betreiber abstimmen.' +description: 'Audit-Log lesen, Snapshots nutzen, Backup und Restore ausführen.' --- import { Aside, Steps, Card, CardGrid } from '@astrojs/starlight/components'; @@ -198,7 +198,7 @@ Der Check läuft in `admin_auth.go:20-74` **immer in dieser Reihenfolge**: Fehlt am Token das richtige Flag, antwortet der Endpunkt mit `403` — auch wenn du Projekt-Admin bist. `permissions: []` im Snapshot-Profil hilft dir heute nicht weiter (Phase 2); maßgeblich ist `allowSnapshots` am Token. -## Backup und Restore (mit Betreiber) +## Backup und Restore Backups sind der Voll-Export für Umzug und Desaster-Fall — im Admin unter `/projects/:id/backup`: @@ -219,8 +219,8 @@ Backups sind der Voll-Export für Umzug und Desaster-Fall — im Admin unter `/p | Fortschritt | Ja (Stream) | Ja (SSE-Stream) | ## Fehler @@ -229,8 +229,8 @@ Fortschritt läuft als Stream (`text/event-stream`) — bei Abbrüchen nichts do |---|---|---| | Audit bleibt leer | `audit.enabled` im Projekt fehlt oder Server-Flag aus | Beide Schalter prüfen, Änderung erneut auslösen | | Alte Einträge verschwinden | TTL (`720h`) abgelaufen | Wichtige Stände als Snapshot sichern, TTL ggf. auf `"0"` | -| Snapshot-Button fehlt | Token ohne `allowSnapshots` | Betreiber um Recht bitten | -| Backup-Button fehlt | Kein Projekt-Admin oder `AllowBackup` fehlt | Betreiber um Recht bitten | +| Snapshot-Button fehlt | Token ohne `allowSnapshots` | Flag `allowSnapshots` am Projekt-Token setzen (siehe [Rechte und Auth-Reihenfolge](#rechte-und-auth-reihenfolge)) | +| Backup-Button fehlt | Kein Projekt-Admin oder `AllowBackup` fehlt | Projekt-Admin-Rolle bzw. Flag `AllowBackup` am Projekt-Token prüfen (siehe [Rechte und Auth-Reihenfolge](#rechte-und-auth-reihenfolge)) | | `400 missing restoreToken` | Restore ohne Token aufgerufen | Erst `POST /backup` (Analyse), Token aus der Antwort nehmen | | `404 restore token not found or expired` | Token verbraucht, aufgeräumt oder TTL abgelaufen | Analyse erneut hochladen, neues Token holen | | `403 invalid entry id` / `404 snapshot not found` | Snapshot-Restore mit falscher/gelöschter ID | ID aus `GET /snapshots` neu lesen | diff --git a/src/content/docs/projekt/llm-nutzen.md b/src/content/docs/projekt/llm-nutzen.md index 8eddcf2..6811438 100644 --- a/src/content/docs/projekt/llm-nutzen.md +++ b/src/content/docs/projekt/llm-nutzen.md @@ -167,6 +167,6 @@ Dazu die zweite Fehlerlage: Scheitert schon der Stream-Aufbau (Provider down, Mo | `502` | Provider antwortet nicht oder Stream bricht ab | Später erneut versuchen, `maxTokens` senken | | `413` | Body zu groß | Nachrichten kürzen | -Budget-Verwaltung (wer darf was): `llmBudgets` stehen am Benutzer (`models/user.go`) und an der Org. Nur System-Admins ändern sie frei — Org-Admins verlieren das Feld still (`llmBudgets` wird auf `nil` gesetzt bzw. aus Änderungen gestrichen), Team-Admins und Mitglieder bekommen beim Schreibversuch `updating llmBudgets only allowed for admins`. Wende dich also für Budget-Erhöhungen an den Betrieb. +Budget-Verwaltung (wer darf was): `llmBudgets` stehen am Benutzer (`models/user.go`) und an der Org. Nur System-Admins ändern sie frei — Org-Admins verlieren das Feld still (`llmBudgets` wird auf `nil` gesetzt bzw. aus Änderungen gestrichen), Team-Admins und Mitglieder bekommen beim Schreibversuch `updating llmBudgets only allowed for admins`. Budget-Erhöhungen setzen System-Admins (`llmBudgets` am Benutzer oder an der Org). Verifiziert am 68b4278 2026-10-17 (tibi-server: setup.go LLM-Routen + Providers-Antwort ohne Secrets, llm_chat.go inkl. 429/502/413-Mapping und RecordUsage, registry.go Typ-Filter, provider.go, models.go EstimateUsage, openai.go resolveModel + buildRequest-Clamp + include_usage, quota.go CheckBudget/CheckBudgetIfSet/RecordUsage, usage_model.go llm_usage, user.go LLMBudget + Feldschutz, config/scope.go llm.chat, server.go ConfigLLMProvider) diff --git a/src/content/docs/projekt/sammlungen-anlegen.md b/src/content/docs/projekt/sammlungen-anlegen.md index 22998ec..56cf723 100644 --- a/src/content/docs/projekt/sammlungen-anlegen.md +++ b/src/content/docs/projekt/sammlungen-anlegen.md @@ -174,8 +174,8 @@ Details stehen unter [Lesen und suchen](/projekt/abfragen-lesen/). | Datei-Upload landet falsch | `uploadPath` fehlt oder zeigt ins falsche Verzeichnis | `../media/` wie in allen Starter-Sammlungen setzen | Verifiziert am e3f92eb 2026-10-17 (tibi-svelte-starter), am 4c55f82 2026-10-17 (tibi-types); Meta-Ergänzungen verifiziert am 1897bb5 2026-10-17 (tibi-docs), am 2b091d8 2026-10-17 (tibi-admin-nova: NavigationTreeField), am 4c55f82 2026-10-17 (tibi-types: collection-meta.schema.json) diff --git a/src/content/docs/reference/fehlercodes.md b/src/content/docs/reference/fehlercodes.md index 7d74932..07ab137 100644 --- a/src/content/docs/reference/fehlercodes.md +++ b/src/content/docs/reference/fehlercodes.md @@ -7,7 +7,7 @@ import { Aside } from '@astrojs/starlight/components'; Jede Antwort folgt dem Muster `{"error": ""}`. Status plus Text verraten dir Ursache und Fix. Alle Texte unten stehen wörtlich so im Code (`internal/controller/*.go`, `validator.go`). Das gilt für API-Antworten — wirfst du selbst im Hook, steuert `msg` den Fehlertext und `json` den Körper (ohne `json` echot der Server dein geworfenes Objekt; siehe [Hooks schreiben](/projekt/hooks-schreiben/)). -## Tabelle: Fehler zu Ursache zu Fix +## Fehlerübersicht | Status | Antwort | Ursache | Fix | | --- | --- | --- | --- | diff --git a/src/content/docs/reference/rest-system.md b/src/content/docs/reference/rest-system.md index 6251b9e..ebce5ea 100644 --- a/src/content/docs/reference/rest-system.md +++ b/src/content/docs/reference/rest-system.md @@ -60,6 +60,6 @@ Jeder Eintrag beschreibt ein Struct-Feld — erzeugt aus den Go-Tags (`getModelM | `validator` | Validierungsregeln, falls gesetzt | `["required", "min=1", "max=100"]` bei `name` | | `sliceOf` / `structOf` | Elementtyp bei Listen bzw. Unterfelder bei Objekten | `scopes`: `sliceOf: string` | -Nützlich für Generatoren und Agents: Statt Raten fragst du `GET /api/v1/_meta/token` und weißt, welche Felder `POST /api/v1/token` akzeptiert — etwa dass `scopes` eine String-Liste ist. +Für Generatoren und Agents: `GET /api/v1/_meta/token` nennt die Felder, die `POST /api/v1/token` akzeptiert — etwa dass `scopes` eine String-Liste ist. Verifiziert am 68b4278 2026-10-17 (tibi-server)