From 1897bb50d95cba282643babf0e4a9cf188b91483 Mon Sep 17 00:00:00 2001 From: Sebastian Frank Date: Fri, 16 Oct 2026 22:49:07 +0000 Subject: [PATCH] Doku-Vollausbau: 62 Seiten (Projekt/Admin/Anwender/Referenz), Hook-Referenz mit Signaturen, Corporate-Screenshots, Coverage-Inventar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Einstieg: Schnellstart + Neues Projekt aus Starter-Skill, Was-ist-Tibi mit Backend/Website-Trennung - Projekt: Sammlungen, Felder, Abfragen, Rechte, Hooks, Dateien, i18n, Suche, SSR, Pagebuilder, Jobs, Audit, Deploy, LLM, MCP - Hook-Referenz: 66 Symbole mit Signatur + Beispiel + Fehlerfall (5 Kapitel) - Admin: Ansichten, Editor, Medien, Exporte, Aktionen, Rechte, KI, Setup, Customizing - Anwender: 11 Anleitungen im professionellen Du-Ton, 30 Corporate-Screenshots - Referenz: Schemas, Token-Köpfe, Fehlerbilder, Shortcuts, OpenAPI-Platzhalter - ADR-0001 bis 0003, Coverage-Skript (282 Items) + Map, Plan-Dateien --- AGENTS.md | 34 +- astro.config.mjs | 89 +- docker-compose-local.yml | 2 +- package.json | 3 +- plans/coverage-map.json | 346 +++++++ plans/coverage-report.json | 874 ++++++++++++++++++ plans/doku-ausbau.md | 167 ++++ plans/t-shots-arbeitsauftrag.md | 39 + scripts/coverage-inventory.mjs | 387 ++++++++ scripts/sync-server-docs.mjs | 4 +- src/assets/anwender/anmelden-abmelden.webp | Bin 0 -> 52438 bytes src/assets/anwender/anmelden-login.webp | Bin 0 -> 6928 bytes src/assets/anwender/benutzer-profil.webp | Bin 0 -> 18078 bytes src/assets/anwender/benutzer-teams.webp | Bin 0 -> 31456 bytes src/assets/anwender/eintrag-formular.webp | Bin 0 -> 25972 bytes src/assets/anwender/eintrag-gespeichert.webp | Bin 0 -> 29898 bytes src/assets/anwender/eintrag-neu.webp | Bin 0 -> 32558 bytes src/assets/anwender/export-dialog.webp | Bin 0 -> 25260 bytes src/assets/anwender/export-fertig.webp | Bin 0 -> 34022 bytes src/assets/anwender/ki-chat.webp | Bin 0 -> 15798 bytes src/assets/anwender/ki-stimme.webp | Bin 0 -> 13564 bytes src/assets/anwender/ki-zusammenfassen.webp | Bin 0 -> 16606 bytes src/assets/anwender/lesen-filter.webp | Bin 0 -> 36342 bytes src/assets/anwender/lesen-karten.webp | Bin 0 -> 34542 bytes src/assets/anwender/lesen-liste.webp | Bin 0 -> 32554 bytes src/assets/anwender/lesen-suche.webp | Bin 0 -> 19978 bytes src/assets/anwender/medien-editor.webp | Bin 0 -> 53572 bytes src/assets/anwender/medien-raster.webp | Bin 0 -> 76260 bytes src/assets/anwender/medien-upload.webp | Bin 0 -> 79420 bytes .../anwender/orientierung-projektwechsel.webp | Bin 0 -> 47788 bytes .../anwender/orientierung-schnellsuche.webp | Bin 0 -> 20124 bytes src/assets/anwender/orientierung-start.webp | Bin 0 -> 38934 bytes src/assets/anwender/seiten-bloecke.webp | Bin 0 -> 65754 bytes src/assets/anwender/seiten-overlay.webp | Bin 0 -> 41318 bytes src/assets/anwender/seiten-pagebuilder.webp | Bin 0 -> 64068 bytes .../anwender/seiten-viewport-mobil.webp | Bin 0 -> 46438 bytes .../anwender/seiten-viewport-tablet.webp | Bin 0 -> 47364 bytes src/assets/anwender/sichern-details.webp | Bin 0 -> 36052 bytes src/assets/anwender/sichern-statistik.webp | Bin 0 -> 24998 bytes src/assets/anwender/sichern-uebersicht.webp | Bin 0 -> 35544 bytes src/content/docs/admin/aktionen.md | 91 ++ src/content/docs/admin/ansichten-listen.md | 105 +++ src/content/docs/admin/benutzer-rechte.md | 107 +++ src/content/docs/admin/customizing.md | 89 ++ src/content/docs/admin/eintrags-editor.md | 105 +++ src/content/docs/admin/exporte.md | 85 ++ src/content/docs/admin/ki-funktionen.md | 134 +++ src/content/docs/admin/konzept.md | 36 + src/content/docs/admin/medien.md | 83 ++ src/content/docs/admin/setup.md | 85 ++ src/content/docs/adr/0000-vorlage.md | 11 + src/content/docs/adr/0001-starlight.md | 9 + .../docs/adr/0002-code-schlaegt-doku.md | 9 + src/content/docs/adr/0003-selbstlaeufer.md | 9 + src/content/docs/anwender/anmelden.md | 73 ++ src/content/docs/anwender/benutzer-teams.md | 68 ++ .../docs/anwender/eintrag-bearbeiten.md | 88 ++ src/content/docs/anwender/exportieren.md | 65 ++ src/content/docs/anwender/hilfe.md | 91 ++ src/content/docs/anwender/ki-nutzen.md | 105 +++ .../docs/anwender/lesen-suchen-filtern.md | 103 +++ src/content/docs/anwender/medien.md | 95 ++ src/content/docs/anwender/orientierung.md | 88 ++ src/content/docs/anwender/seiten-bauen.md | 129 +++ src/content/docs/anwender/sichern.md | 67 ++ src/content/docs/einstieg/begriffe.md | 6 +- src/content/docs/einstieg/neues-projekt.md | 115 +++ src/content/docs/einstieg/schnellstart.md | 100 +- src/content/docs/einstieg/was-ist-tibi.md | 37 +- src/content/docs/index.mdx | 27 +- src/content/docs/projekt/abfragen-lesen.md | 143 +++ src/content/docs/projekt/audit-backup.md | 145 +++ src/content/docs/projekt/dateien-bilder.md | 109 +++ src/content/docs/projekt/deploy.md | 131 +++ src/content/docs/projekt/felder-widgets.md | 199 ++++ src/content/docs/projekt/hooks-schreiben.md | 234 +++++ src/content/docs/projekt/jobs-actions.md | 144 +++ src/content/docs/projekt/llm-nutzen.md | 172 ++++ src/content/docs/projekt/mcp-nutzen.md | 754 +++++++++++++++ src/content/docs/projekt/navigation-i18n.md | 119 +++ src/content/docs/projekt/pagebuilder-dev.md | 248 +++++ src/content/docs/projekt/rechte-tokens.md | 154 +++ .../docs/projekt/sammlungen-anlegen.md | 166 ++++ src/content/docs/projekt/ssr-website.md | 178 ++++ src/content/docs/projekt/suche.md | 103 +++ src/content/docs/reference/fehlercodes.md | 54 ++ src/content/docs/reference/hook-kontexte.md | 75 ++ src/content/docs/reference/hooks-daten.md | 413 +++++++++ src/content/docs/reference/hooks-medien.md | 84 ++ src/content/docs/reference/hooks-meta.md | 173 ++++ src/content/docs/reference/hooks-netze.md | 191 ++++ .../docs/reference/hooks-sicherheit.md | 209 +++++ src/content/docs/reference/openapi.md | 5 + src/content/docs/reference/schemas.md | 81 ++ .../docs/reference/tastatur-kurzbefehle.md | 82 ++ src/content/docs/reference/token-koepfe.md | 67 ++ src/content/docs/server/betrieb.md | 89 ++ src/content/docs/server/konfiguration.md | 140 +++ src/content/docs/server/schnittstellen.md | 104 +++ src/content/docs/server/sicherheit.md | 82 ++ src/content/docs/server/uebersicht.md | 40 + 101 files changed, 8980 insertions(+), 68 deletions(-) create mode 100644 plans/coverage-map.json create mode 100644 plans/coverage-report.json create mode 100644 plans/doku-ausbau.md create mode 100644 plans/t-shots-arbeitsauftrag.md create mode 100644 scripts/coverage-inventory.mjs create mode 100644 src/assets/anwender/anmelden-abmelden.webp create mode 100644 src/assets/anwender/anmelden-login.webp create mode 100644 src/assets/anwender/benutzer-profil.webp create mode 100644 src/assets/anwender/benutzer-teams.webp create mode 100644 src/assets/anwender/eintrag-formular.webp create mode 100644 src/assets/anwender/eintrag-gespeichert.webp create mode 100644 src/assets/anwender/eintrag-neu.webp create mode 100644 src/assets/anwender/export-dialog.webp create mode 100644 src/assets/anwender/export-fertig.webp create mode 100644 src/assets/anwender/ki-chat.webp create mode 100644 src/assets/anwender/ki-stimme.webp create mode 100644 src/assets/anwender/ki-zusammenfassen.webp create mode 100644 src/assets/anwender/lesen-filter.webp create mode 100644 src/assets/anwender/lesen-karten.webp create mode 100644 src/assets/anwender/lesen-liste.webp create mode 100644 src/assets/anwender/lesen-suche.webp create mode 100644 src/assets/anwender/medien-editor.webp create mode 100644 src/assets/anwender/medien-raster.webp create mode 100644 src/assets/anwender/medien-upload.webp create mode 100644 src/assets/anwender/orientierung-projektwechsel.webp create mode 100644 src/assets/anwender/orientierung-schnellsuche.webp create mode 100644 src/assets/anwender/orientierung-start.webp create mode 100644 src/assets/anwender/seiten-bloecke.webp create mode 100644 src/assets/anwender/seiten-overlay.webp create mode 100644 src/assets/anwender/seiten-pagebuilder.webp create mode 100644 src/assets/anwender/seiten-viewport-mobil.webp create mode 100644 src/assets/anwender/seiten-viewport-tablet.webp create mode 100644 src/assets/anwender/sichern-details.webp create mode 100644 src/assets/anwender/sichern-statistik.webp create mode 100644 src/assets/anwender/sichern-uebersicht.webp create mode 100644 src/content/docs/admin/aktionen.md create mode 100644 src/content/docs/admin/ansichten-listen.md create mode 100644 src/content/docs/admin/benutzer-rechte.md create mode 100644 src/content/docs/admin/customizing.md create mode 100644 src/content/docs/admin/eintrags-editor.md create mode 100644 src/content/docs/admin/exporte.md create mode 100644 src/content/docs/admin/ki-funktionen.md create mode 100644 src/content/docs/admin/konzept.md create mode 100644 src/content/docs/admin/medien.md create mode 100644 src/content/docs/admin/setup.md create mode 100644 src/content/docs/adr/0000-vorlage.md create mode 100644 src/content/docs/adr/0001-starlight.md create mode 100644 src/content/docs/adr/0002-code-schlaegt-doku.md create mode 100644 src/content/docs/adr/0003-selbstlaeufer.md create mode 100644 src/content/docs/anwender/anmelden.md create mode 100644 src/content/docs/anwender/benutzer-teams.md create mode 100644 src/content/docs/anwender/eintrag-bearbeiten.md create mode 100644 src/content/docs/anwender/exportieren.md create mode 100644 src/content/docs/anwender/hilfe.md create mode 100644 src/content/docs/anwender/ki-nutzen.md create mode 100644 src/content/docs/anwender/lesen-suchen-filtern.md create mode 100644 src/content/docs/anwender/medien.md create mode 100644 src/content/docs/anwender/orientierung.md create mode 100644 src/content/docs/anwender/seiten-bauen.md create mode 100644 src/content/docs/anwender/sichern.md create mode 100644 src/content/docs/einstieg/neues-projekt.md create mode 100644 src/content/docs/projekt/abfragen-lesen.md create mode 100644 src/content/docs/projekt/audit-backup.md create mode 100644 src/content/docs/projekt/dateien-bilder.md create mode 100644 src/content/docs/projekt/deploy.md create mode 100644 src/content/docs/projekt/felder-widgets.md create mode 100644 src/content/docs/projekt/hooks-schreiben.md create mode 100644 src/content/docs/projekt/jobs-actions.md create mode 100644 src/content/docs/projekt/llm-nutzen.md create mode 100644 src/content/docs/projekt/mcp-nutzen.md create mode 100644 src/content/docs/projekt/navigation-i18n.md create mode 100644 src/content/docs/projekt/pagebuilder-dev.md create mode 100644 src/content/docs/projekt/rechte-tokens.md create mode 100644 src/content/docs/projekt/sammlungen-anlegen.md create mode 100644 src/content/docs/projekt/ssr-website.md create mode 100644 src/content/docs/projekt/suche.md create mode 100644 src/content/docs/reference/fehlercodes.md create mode 100644 src/content/docs/reference/hook-kontexte.md create mode 100644 src/content/docs/reference/hooks-daten.md create mode 100644 src/content/docs/reference/hooks-medien.md create mode 100644 src/content/docs/reference/hooks-meta.md create mode 100644 src/content/docs/reference/hooks-netze.md create mode 100644 src/content/docs/reference/hooks-sicherheit.md create mode 100644 src/content/docs/reference/openapi.md create mode 100644 src/content/docs/reference/schemas.md create mode 100644 src/content/docs/reference/tastatur-kurzbefehle.md create mode 100644 src/content/docs/reference/token-koepfe.md create mode 100644 src/content/docs/server/betrieb.md create mode 100644 src/content/docs/server/konfiguration.md create mode 100644 src/content/docs/server/schnittstellen.md create mode 100644 src/content/docs/server/sicherheit.md create mode 100644 src/content/docs/server/uebersicht.md diff --git a/AGENTS.md b/AGENTS.md index 90fdcc5..c2041a0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,32 +1,40 @@ # AGENTS.md — Tibi Doku -Regeln für alle Agenten, die an dieser Doku oder an Tibi-Server / Tibi-Admin-Nova arbeiten. +Regeln für alle Agenten, die an dieser Doku, am Tibi-Server / tibi-admin oder an Projekten aus `tibi-svelte-starter` arbeiten. + +## 0. Benennung und Blickwinkel + +- Wir nennen es **tibi-server** und **tibi-admin** (Release Nova, Repo `tibi-admin-nova`). Alte `tibi-admin`-Repos werden ignoriert. +- Backend = tibi-server (API) + tibi-admin (Bedienoberfläche). Projekte sind eigenständige Websites/Shops/Intranet aus `tibi-svelte-starter`. +- Entwickler-Doku beschreibt **Projektnutzung** (klonen, konfigurieren, bauen), keine Tibi-Core-Entwicklung. ## 1. Grundsatz -- **Single Source:** Code-Nähe schlägt Doku-Kopie. Details stehen in `tibi-server/docs/` bzw. `tibi-admin-nova/docs/`, diese Seite rendert nur. +- **Single Source:** Code-Nähe schlägt Doku-Kopie. Details stehen in `tibi-server/docs/` bzw. `tibi-admin-nova/docs/` (Doku-Begriff: **tibi-admin**), diese Seite rendert nur. **Code schlägt Doku:** Bestandsdoku gilt als Behauptung, Quelle ist der Code (`internal/*`, `tibi-types/schemas`, `frontend/src/lib`, Tests, Test-Pläne). - **Definition of Done:** Jede PR an `tibi-server` oder `tibi-admin-nova`, die API, Hooks, Collections, Permissions, Jobs, Realtime, LLM, Deploy oder UX ändert, aktualisiert auch die Docs — sonst ist die PR nicht fertig. -- **Sprache:** Deutsch, saubere Umlaute (ä ö ü ß), Du-Form für Anleitungen, kurze Sätze. +- **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. -## 2. Wo was hingehört (Diátaxis) — Stand: Neuaufbau +## 2. Wo was hingehört — Stand: Gerüst steht, Hüllen mit Arbeitsaufträgen -Aktuell existiert nur `einstieg/`. Weitere Bereiche werden sauber neu aufgebaut; -pro Bereich Seite anlegen, Sidebar-Gruppe in `astro.config.mjs` ergänzen. +Jede Hüllen-Seite enthält Abschnitt „Für spätere Agenten“ mit Quelle-der-Wahrheit (Code zuerst), Prüfschritten und Ziel-Struktur. Hüllen abarbeiten heißt: Code prüfen, Seite befüllen, `Verifiziert am ` ergänzen. | Ordner | Inhalt | Beispiel | |---|---|---| -| `einstieg/` | Tutorials, Erste Schritte | Schnellstart, Begriffe | -| `server/` (geplant) | **SYNC — nicht von Hand editieren**, Quelle `../tibi-server/docs/` | Collections, Hooks | -| `nova/` (geplant) | Teils SYNC aus `../tibi-admin-nova/docs/`, plus Konzeptseite | Sammlungen, Export | -| `anwender/` (geplant) | Redakteurs-Anleitungen (Aufgaben, keine Konzepte) | Anmelden, Pflegen | -| `reference/` (geplant) | **Generiert — nie von Hand**, OpenAPI/Typen/Schema | openapi.md | -| `adr/` (geplant) | Architektur-Entscheide, Format siehe Vorlage im Git-Verlauf (`adr/0000-vorlage.md`) | Starlight-Entscheid | +| `einstieg/` | Tutorials, Erste Schritte (Projekt-Blick) | Schnellstart, Neues Projekt, Begriffe | +| `projekt/` | Projekt-Entwickler baut eigenständige Website (Sammlungen → Deploy) | Hooks, SSR, Suche | +| `server/` | **SYNC — nicht von Hand editieren**, Quelle `../tibi-server/docs/`; dazu Handseiten Betrieb | Konfiguration, Sicherheit | +| `admin/` | Teils SYNC aus `../tibi-admin-nova/docs/`, plus Handseiten | Konzept, Editor, Exporte | +| `anwender/` | Redakteurs-Anleitungen im Verwaltungs-Backend (Aufgaben, keine Konzepte) | Anmelden, Medien | +| `reference/` | Teils **generiert — nie von Hand** (openapi), teils Code-Stand-Tabellen | Hook-Kontexte, Token-Köpfe | +| `adr/` | Architektur-Entscheide, Format siehe `adr/0000-vorlage.md` | Code-schlägt-Doku | ## 3. Neue Seite anlegen - Datei `src/content/docs//.md` mit Frontmatter `title` + `description`. - Sidebar: jede Gruppe explizit in `astro.config.mjs` eintragen (beim Neuaufbau pro Bereich ergänzen; `autogenerate` erst nutzen, sobald der Ordner gepflegt befüllt ist). - Bilder nach `src/assets/`, max. 200 KB, deutsche Alt-Texte. +- Screenshots für Anwender-Seiten: nur Mock-Projekt `corporate` (nie `t1`), Ablauf unter `plans/t-shots-arbeitsauftrag.md`. +- Vollständigkeit: neue Fähigkeit braucht genau eine Dokustelle — Tabelle in `plans/doku-ausbau.md` („Vollständigkeit") miterweitern. ## 4. Sync-Workflow @@ -36,7 +44,7 @@ npm run sync npm run build # muss fehlerfrei durchlaufen ``` -- `server/uebersicht.md` und `nova/konzept.md` sind Handarbeit und werden vom Sync nie überschrieben (`keep`) — beim Neuaufbau zuerst diese beiden Seiten neu anlegen, dann syncen. +- `server/uebersicht.md` und `admin/konzept.md` sind Handarbeit und werden vom Sync nie überschrieben (`keep`) — Sync-Ziel für Admin ist `src/content/docs/admin/` (Repo bleibt `tibi-admin-nova`). - Sync-Artefakte werden mitcommittet (statischer Build braucht sie). ## 5. Verbote diff --git a/astro.config.mjs b/astro.config.mjs index 2d29793..db6188e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -17,7 +17,7 @@ export default defineConfig({ integrations: [ starlight({ title: 'Tibi Doku', - description: 'Entwickler- und Anwender-Dokumentation für Tibi-Server und Tibi-Admin-Nova', + description: 'Entwickler- und Anwender-Dokumentation für Tibi-Server und Tibi-Admin', defaultLocale: 'root', locales: { root: { label: 'Deutsch', lang: 'de' }, @@ -42,6 +42,93 @@ export default defineConfig({ { label: 'Was ist Tibi?', slug: 'einstieg/was-ist-tibi' }, { label: 'Schnellstart', slug: 'einstieg/schnellstart' }, { label: 'Begriffe', slug: 'einstieg/begriffe' }, + { label: 'Neues Projekt', slug: 'einstieg/neues-projekt' }, + ], + }, + { + label: 'Server', + items: [ + { label: 'Übersicht', slug: 'server/uebersicht' }, + { label: 'Konfiguration', slug: 'server/konfiguration' }, + { label: 'Betrieb', slug: 'server/betrieb' }, + { label: 'Sicherheit', slug: 'server/sicherheit' }, + { label: 'Schnittstellen', slug: 'server/schnittstellen' }, + ], + }, + { + label: 'Projekt bauen', + items: [ + { label: 'Sammlungen', slug: 'projekt/sammlungen-anlegen' }, + { label: 'Felder und Widgets', slug: 'projekt/felder-widgets' }, + { label: 'Lesen und suchen', slug: 'projekt/abfragen-lesen' }, + { label: 'Rechte und Tokens', slug: 'projekt/rechte-tokens' }, + { label: 'Hooks', slug: 'projekt/hooks-schreiben' }, + { label: 'Dateien und Bilder', slug: 'projekt/dateien-bilder' }, + { label: 'Navigation und Sprachen', slug: 'projekt/navigation-i18n' }, + { label: 'Suche', slug: 'projekt/suche' }, + { label: 'Pagebuilder-Anbindung', slug: 'projekt/pagebuilder-dev' }, + { label: 'Website mit SSR', slug: 'projekt/ssr-website' }, + { label: 'Jobs und Aktionen', slug: 'projekt/jobs-actions' }, + { label: 'LLM nutzen', slug: 'projekt/llm-nutzen' }, + { label: 'MCP nutzen', slug: 'projekt/mcp-nutzen' }, + { label: 'Sicherung', slug: 'projekt/audit-backup' }, + { label: 'Veröffentlichen', slug: 'projekt/deploy' }, + ], + }, + { + label: 'Admin', + items: [ + { label: 'Konzept', slug: 'admin/konzept' }, + { label: 'Einrichten', slug: 'admin/setup' }, + { label: 'Anpassen', slug: 'admin/customizing' }, + { label: 'Ansichten und Listen', slug: 'admin/ansichten-listen' }, + { label: 'Eintrags-Editor', slug: 'admin/eintrags-editor' }, + { label: 'Medien', slug: 'admin/medien' }, + { label: 'Exporte', slug: 'admin/exporte' }, + { label: 'Aktionen', slug: 'admin/aktionen' }, + { label: 'Benutzer und Rechte', slug: 'admin/benutzer-rechte' }, + { label: 'KI-Funktionen', slug: 'admin/ki-funktionen' }, + ], + }, + { + label: 'Anwender', + items: [ + { label: 'Anmelden', slug: 'anwender/anmelden' }, + { label: 'Zurechtfinden', slug: 'anwender/orientierung' }, + { label: 'Lesen, suchen, filtern', slug: 'anwender/lesen-suchen-filtern' }, + { label: 'Einträge bearbeiten', slug: 'anwender/eintrag-bearbeiten' }, + { label: 'Bilder und Dateien', slug: 'anwender/medien' }, + { label: 'Seiten bauen', slug: 'anwender/seiten-bauen' }, + { label: 'Benutzer und Teams', slug: 'anwender/benutzer-teams' }, + { label: 'Exportieren', slug: 'anwender/exportieren' }, + { label: 'Sichern', slug: 'anwender/sichern' }, + { label: 'Hilfe', slug: 'anwender/hilfe' }, + { label: 'KI nutzen', slug: 'anwender/ki-nutzen' }, + ], + }, + { + label: 'Referenz', + items: [ + { label: 'OpenAPI', slug: 'reference/openapi' }, + { label: 'Schemas', slug: 'reference/schemas' }, + { label: 'Hook-Kontexte', slug: 'reference/hook-kontexte' }, + { label: 'Hook-Referenz: Daten', slug: 'reference/hooks-daten' }, + { label: 'Hook-Referenz: Netze und Nachrichten', slug: 'reference/hooks-netze' }, + { label: 'Hook-Referenz: Sicherheit und Identität', slug: 'reference/hooks-sicherheit' }, + { label: 'Hook-Referenz: Formate und Diagnose', slug: 'reference/hooks-meta' }, + { label: 'Hook-Referenz: Templates und Medien', slug: 'reference/hooks-medien' }, + { label: 'Token-Köpfe', slug: 'reference/token-koepfe' }, + { label: 'Fehlerbilder', slug: 'reference/fehlercodes' }, + { label: 'Tastatur und Schnellsuche', slug: 'reference/tastatur-kurzbefehle' }, + ], + }, + { + label: 'ADR', + items: [ + { label: 'Vorlage', slug: 'adr/0000-vorlage' }, + { label: 'Starlight', slug: 'adr/0001-starlight' }, + { label: 'Code schlägt Doku', slug: 'adr/0002-code-schlaegt-doku' }, + { label: 'Selbstläufer-Regel', slug: 'adr/0003-selbstlaeufer' }, ], }, ], diff --git a/docker-compose-local.yml b/docker-compose-local.yml index d1bbf06..b2d2ee1 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -16,7 +16,7 @@ services: XDG_CONFIG_HOME: /tmp/.config XDG_CACHE_HOME: /tmp/.cache ASTRO_TELEMETRY_DISABLED: "1" - command: sh -c "npm install && npm run dev -- --host 0.0.0.0 --port 4321" + command: sh -c "rm -f .astro/dev.json && npm install && npm run dev -- --host 0.0.0.0 --port 4321" expose: - 4321 labels: diff --git a/package.json b/package.json index 33d7496..07a9733 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "preview": "astro preview", "astro": "astro", "sync": "node scripts/sync-server-docs.mjs", - "sync:openapi": "node scripts/sync-openapi.mjs" + "sync:openapi": "node scripts/sync-openapi.mjs", + "coverage": "node scripts/coverage-inventory.mjs" }, "dependencies": { "@astrojs/starlight": "^0.42.6", diff --git a/plans/coverage-map.json b/plans/coverage-map.json new file mode 100644 index 0000000..c2b76ca --- /dev/null +++ b/plans/coverage-map.json @@ -0,0 +1,346 @@ +{ + "_kommentar": "Start-Mapping Routen/Contexts/Tools/Schemas/Komponenten/Testplaene auf Doku-Slugs. Unvollstaendig by design, Rest fuellt der Orga-Agent. Keys muessen exakt den Inventar-Items aus scripts/coverage-inventory.mjs entsprechen.", + "routes": { + "/_/:project/:collection": "projekt/abfragen-lesen", + "/_/:project/:collection/:id": "projekt/abfragen-lesen", + "/_/:project/:collection/_count": "projekt/abfragen-lesen", + "/_/:project/:collection/_facet": "projekt/suche", + "/_/:project/:collection/_queue": "projekt/suche", + "/_/:project/_actions/:action": "projekt/jobs-actions", + "/_/:project/_/assets/:name/*path": "projekt/dateien-bilder", + "/_openapi/:project": "reference/openapi", + "/audit": "projekt/audit-backup", + "/llm/chat": "projekt/llm-nutzen", + "/mcp": "projekt/mcp-nutzen", + "/token/_scopes": "projekt/rechte-tokens", + "/version": "server/schnittstellen", + "_/:project/_/admin/backup": "projekt/audit-backup", + "_/:project/_/admin/snapshots": "projekt/audit-backup", + "/_/:project/:collection/:id/:field": "projekt/abfragen-lesen", + "/_/:project/:collection/:id/:field/*path": "projekt/abfragen-lesen", + "/llm/providers": "projekt/llm-nutzen", + "_/:project/_/admin/backup/:restoreToken": "projekt/audit-backup", + "_/:project/_/admin/backup/analyze-download": "server/schnittstellen", + "_/:project/_/admin/backup/download/:file": "projekt/audit-backup", + "_/:project/_/admin/embedding/status": "server/betrieb", + "_/:project/_/admin/regenerate-search": "server/betrieb", + "_/:project/_/admin/reload": "server/betrieb", + "_/:project/_/admin/search-worker/status": "server/betrieb", + "_/:project/_/admin/snapshots/:id": "projekt/audit-backup", + "_/:project/_/admin/snapshots/:id/download": "projekt/audit-backup", + "_/:project/_/admin/snapshots/:id/restore": "projekt/audit-backup", + "_/:project/_/admin/snapshots/configs": "projekt/audit-backup", + "_/:project/_/admin/snapshots/configs/:name/trigger": "projekt/audit-backup", + "_/:project/_/admin/snapshots/download/:file": "projekt/audit-backup", + "_/:project/_/admin/snapshots/prune": "projekt/audit-backup", + "_/:project/_/admin/snapshots/stats": "projekt/audit-backup", + "/*path": "server/sicherheit", + "/embedding/status": "server/schnittstellen", + "/shutdown": "server/schnittstellen" + }, + "contexts": { + "base64.decode": "reference/hooks-meta", + "base64.encode": "reference/hooks-meta", + "bcrypt.check": "reference/hooks-sicherheit", + "bcrypt.hash": "reference/hooks-sicherheit", + "cache.clear": "reference/hooks-daten", + "cache.count": "reference/hooks-daten", + "cache.delete": "reference/hooks-daten", + "cache.get": "reference/hooks-daten", + "cache.has": "reference/hooks-daten", + "cache.set": "reference/hooks-daten", + "channel.send": "reference/hooks-netze", + "channel.subscribe": "reference/hooks-netze", + "charset.decode": "reference/hooks-meta", + "charset.iso8859ToUtf8": "reference/hooks-meta", + "config.namespace": "reference/hooks-sicherheit", + "config.project": "reference/hooks-sicherheit", + "config.server": "reference/hooks-sicherheit", + "cookie.get": "reference/hooks-sicherheit", + "cookie.set": "reference/hooks-sicherheit", + "crypto.md5": "reference/hooks-sicherheit", + "crypto.sha256": "reference/hooks-sicherheit", + "db.count": "reference/hooks-daten", + "db.create": "reference/hooks-daten", + "db.delete": "reference/hooks-daten", + "db.deleteMany": "reference/hooks-daten", + "db.find": "reference/hooks-daten", + "db.update": "reference/hooks-daten", + "db.updateMany": "reference/hooks-daten", + "debug.dump": "reference/hooks-meta", + "debug.sentryTraceId": "reference/hooks-meta", + "debug.sleep": "reference/hooks-meta", + "exec.command": "reference/hooks-sicherheit", + "fs.configDir": "reference/hooks-daten", + "fs.copy": "reference/hooks-daten", + "fs.mkDir": "reference/hooks-daten", + "fs.readDir": "reference/hooks-daten", + "fs.readFile": "reference/hooks-daten", + "fs.remove": "reference/hooks-daten", + "fs.stat": "reference/hooks-daten", + "fs.writeFile": "reference/hooks-daten", + "http.fetch": "reference/hooks-netze", + "http.fetchStream": "reference/hooks-netze", + "image.filter": "reference/hooks-medien", + "json.parse": "reference/hooks-meta", + "json.stringify": "reference/hooks-meta", + "jwt.create": "reference/hooks-sicherheit", + "jwt.parse": "reference/hooks-sicherheit", + "pdf.cpu": "reference/hooks-medien", + "pdf.fromHTML": "reference/hooks-medien", + "ratelimit.backoffCheck": "reference/hooks-netze", + "ratelimit.backoffRecord": "reference/hooks-netze", + "ratelimit.backoffReset": "reference/hooks-netze", + "ratelimit.windowCheck": "reference/hooks-netze", + "ratelimit.windowCount": "reference/hooks-netze", + "ratelimit.windowReset": "reference/hooks-netze", + "request": "reference/hooks-daten", + "response.flush": "reference/hooks-daten", + "response.header": "reference/hooks-daten", + "response.write": "reference/hooks-daten", + "response.writeHeader": "reference/hooks-daten", + "response.writeSSE": "reference/hooks-daten", + "smtp.sendMail": "reference/hooks-netze", + "tpl.execute": "reference/hooks-medien", + "user.auth": "reference/hooks-sicherheit", + "xml.create": "reference/hooks-meta", + "xml.parse": "reference/hooks-meta" + }, + "tools": { + "action_call": "projekt/mcp-nutzen", + "actions_list": "projekt/mcp-nutzen", + "collections_list": "projekt/mcp-nutzen", + "document_get": "projekt/mcp-nutzen", + "documents_list": "projekt/mcp-nutzen", + "action_describe": "projekt/mcp-nutzen", + "agent_guide_get": "projekt/mcp-nutzen", + "asset_read": "projekt/mcp-nutzen", + "assets_list": "projekt/mcp-nutzen", + "audit_query": "projekt/mcp-nutzen", + "backup_create": "projekt/mcp-nutzen", + "collection_describe": "projekt/mcp-nutzen", + "document_create": "projekt/mcp-nutzen", + "document_delete": "projekt/mcp-nutzen", + "document_update": "projekt/mcp-nutzen", + "documents_count": "projekt/mcp-nutzen", + "documents_facet": "projekt/mcp-nutzen", + "file_read": "projekt/mcp-nutzen", + "jobs_list": "projekt/mcp-nutzen", + "openapi_get": "projekt/mcp-nutzen", + "org_get": "projekt/mcp-nutzen", + "orgs_list": "projekt/mcp-nutzen", + "project_get": "projekt/mcp-nutzen", + "project_reload": "projekt/mcp-nutzen", + "projects_list": "projekt/mcp-nutzen", + "queue_status": "projekt/mcp-nutzen", + "regenerate_search": "projekt/mcp-nutzen", + "snapshots_list": "projekt/mcp-nutzen", + "system_meta_get": "projekt/mcp-nutzen", + "team_get": "projekt/mcp-nutzen", + "teams_list": "projekt/mcp-nutzen", + "user_create": "projekt/mcp-nutzen", + "user_delete": "projekt/mcp-nutzen", + "user_get": "projekt/mcp-nutzen", + "user_update": "projekt/mcp-nutzen", + "users_list": "projekt/mcp-nutzen" + }, + "schemas": { + "action.schema.json": "projekt/jobs-actions", + "collection.schema.json": "reference/schemas", + "field.schema.json": "projekt/felder-widgets", + "hooks.schema.json": "projekt/hooks-schreiben", + "job.schema.json": "projekt/jobs-actions", + "permissions.schema.json": "projekt/rechte-tokens", + "project.schema.json": "einstieg/neues-projekt", + "asset.schema.json": "reference/schemas", + "collection-meta.schema.json": "reference/schemas", + "defs.schema.json": "reference/schemas", + "field-list.schema.json": "reference/schemas", + "field-meta.schema.json": "reference/schemas", + "image-filter.schema.json": "reference/schemas", + "openapi.schema.json": "reference/schemas", + "projections.schema.json": "reference/schemas", + "snapshot.schema.json": "reference/schemas" + }, + "components": { + "lib/components/ActionView": "admin/aktionen", + "lib/components/BackupView": "projekt/audit-backup", + "lib/components/CollectionView": "admin/ansichten-listen", + "lib/components/EntryView": "admin/eintrags-editor", + "lib/components/entry/widgets/pagebuilder/PagebuilderOverlay": "projekt/pagebuilder-dev", + "lib/components/admin/AdminHub": "admin/benutzer-rechte", + "lib/components/admin/OrgAssignmentSection": "admin/benutzer-rechte", + "lib/components/admin/OrgCreateDrawer": "admin/benutzer-rechte", + "lib/components/admin/OrgDetailDrawer": "admin/benutzer-rechte", + "lib/components/admin/OrgTab": "admin/benutzer-rechte", + "lib/components/admin/PermissionChipsInput": "admin/benutzer-rechte", + "lib/components/admin/ProjectAdminView": "admin/benutzer-rechte", + "lib/components/admin/ProjectCreateDrawer": "admin/benutzer-rechte", + "lib/components/admin/ProjectDetailDrawer": "admin/benutzer-rechte", + "lib/components/admin/ProjectRelationRow": "admin/benutzer-rechte", + "lib/components/admin/RoleSection": "admin/benutzer-rechte", + "lib/components/admin/TeamAssignmentSection": "admin/benutzer-rechte", + "lib/components/admin/TeamCreateDrawer": "admin/benutzer-rechte", + "lib/components/admin/TeamDetailDrawer": "admin/benutzer-rechte", + "lib/components/admin/TeamTab": "admin/benutzer-rechte", + "lib/components/admin/UserCreateDrawer": "admin/benutzer-rechte", + "lib/components/admin/UserDetailDrawer": "admin/benutzer-rechte", + "lib/components/admin/UserTab": "admin/benutzer-rechte", + "lib/components/ai/AiActionDivider": "admin/ki-funktionen", + "lib/components/ai/AiButton": "admin/ki-funktionen", + "lib/components/ai/AiChat": "admin/ki-funktionen", + "lib/components/ai/AiConversationList": "admin/ki-funktionen", + "lib/components/ai/AiDebugContext": "admin/ki-funktionen", + "lib/components/ai/AiHighlight": "admin/ki-funktionen", + "lib/components/ai/AiMessage": "admin/ki-funktionen", + "lib/components/ai/AiSummaryDivider": "admin/ki-funktionen", + "lib/components/ai/AiToolInspector": "admin/ki-funktionen", + "lib/components/ai/AiToolStatus": "admin/ki-funktionen", + "lib/components/ai/AiVisionOverlay": "admin/ki-funktionen", + "lib/components/entry/widgets/pagebuilder/BlueprintCard": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/PagebuilderOverviewOverlay": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/PagebuilderScreenshotHost": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/PagebuilderThumbnail": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/PagebuilderViewportControl": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/PagebuilderWidget": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/pagebuilder/RowPreview": "projekt/pagebuilder-dev", + "lib/components/entry/widgets/BooleanWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ChipArrayWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/DateWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/FileArrayWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/FileWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ForeignFileWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ForeignKeyChipArrayWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ForeignKeyWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ImageEditor": "admin/eintrags-editor", + "lib/components/entry/widgets/JsonWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/NavigationTreeField": "admin/eintrags-editor", + "lib/components/entry/widgets/NumberWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/ObjectArrayField": "admin/eintrags-editor", + "lib/components/entry/widgets/ObjectField": "admin/eintrags-editor", + "lib/components/entry/widgets/ObjectNavigationCard": "admin/eintrags-editor", + "lib/components/entry/widgets/RichtextWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/SelectWidget": "admin/eintrags-editor", + "lib/components/entry/widgets/TextWidget": "admin/eintrags-editor", + "lib/components/entry/DiffDialog": "admin/eintrags-editor", + "lib/components/entry/DrillDownBreadcrumb": "admin/eintrags-editor", + "lib/components/entry/EntryJsonOverlay": "admin/eintrags-editor", + "lib/components/entry/FieldRenderer": "admin/eintrags-editor", + "lib/components/entry/FieldSearch": "admin/eintrags-editor", + "lib/components/entry/ForeignKeyDrawer": "admin/eintrags-editor", + "lib/components/entry/I18nFieldWrapper": "admin/eintrags-editor", + "lib/components/entry/I18nLanguageTabs": "admin/eintrags-editor", + "lib/components/entry/InlineEntryForm": "admin/eintrags-editor", + "lib/components/entry/LinkedEntryEditorDrawer": "admin/eintrags-editor", + "lib/components/entry/PreviewElement": "admin/eintrags-editor", + "lib/components/entry/ReadonlyFieldDisplay": "admin/eintrags-editor", + "lib/components/entry/ReferencedBy": "admin/eintrags-editor", + "lib/components/entry/TranslationBar": "admin/eintrags-editor", + "lib/components/entry/WidgetDispatcher": "admin/eintrags-editor", + "lib/components/token/TokenAdminTab": "admin/benutzer-rechte", + "lib/components/token/TokenCreatedDialog": "admin/benutzer-rechte", + "lib/components/token/TokenFormDrawer": "admin/benutzer-rechte", + "lib/components/token/TokenList": "admin/benutzer-rechte", + "lib/components/token/TokenScopePicker": "admin/benutzer-rechte", + "lib/components/token/TokenSettings": "admin/benutzer-rechte", + "lib/components/ui/Avatar": "admin/ansichten-listen", + "lib/components/ui/Badge": "admin/ansichten-listen", + "lib/components/ui/Breadcrumb": "admin/ansichten-listen", + "lib/components/ui/Chip": "admin/ansichten-listen", + "lib/components/ui/CommandPalette": "admin/ansichten-listen", + "lib/components/ui/ConfirmDialog": "admin/ansichten-listen", + "lib/components/ui/DrawerBreadcrumb": "admin/ansichten-listen", + "lib/components/ui/ExportDialog": "admin/ansichten-listen", + "lib/components/ui/FieldValuePreview": "admin/ansichten-listen", + "lib/components/ui/FilterPopover": "admin/ansichten-listen", + "lib/components/ui/ForeignKeySelect": "admin/ansichten-listen", + "lib/components/ui/FormCard": "admin/ansichten-listen", + "lib/components/ui/FormField": "admin/ansichten-listen", + "lib/components/ui/Icon": "admin/ansichten-listen", + "lib/components/ui/KbdBadge": "admin/ansichten-listen", + "lib/components/ui/KeyboardShortcuts": "admin/ansichten-listen", + "lib/components/ui/LoadingState": "admin/ansichten-listen", + "lib/components/ui/MediaLightbox": "admin/ansichten-listen", + "lib/components/ui/NovaAiPill": "admin/ansichten-listen", + "lib/components/ui/NovaAiStreamContent": "admin/ansichten-listen", + "lib/components/ui/OptimizedImage": "admin/ansichten-listen", + "lib/components/ui/Pagination": "admin/ansichten-listen", + "lib/components/ui/PlaceholderCover": "admin/ansichten-listen", + "lib/components/ui/PreviewMetaItem": "admin/ansichten-listen", + "lib/components/ui/PreviewTitleBadge": "admin/ansichten-listen", + "lib/components/ui/RecordPreviewCard": "admin/ansichten-listen", + "lib/components/ui/RichTooltip": "admin/ansichten-listen", + "lib/components/ui/SaveActionButton": "admin/ansichten-listen", + "lib/components/ui/SearchIndexBuildNotice": "admin/ansichten-listen", + "lib/components/ui/SearchInput": "admin/ansichten-listen", + "lib/components/ui/SearchScoreIndicator": "admin/ansichten-listen", + "lib/components/ui/Section": "admin/ansichten-listen", + "lib/components/ui/SessionTimeoutWarning": "admin/ansichten-listen", + "lib/components/ui/Skeleton": "admin/ansichten-listen", + "lib/components/ui/SkeletonCard": "admin/ansichten-listen", + "lib/components/ui/SlideOverDrawer": "admin/ansichten-listen", + "lib/components/ui/SortPopover": "admin/ansichten-listen", + "lib/components/ui/Spinner": "admin/ansichten-listen", + "lib/components/ui/StructuredPreviewContent": "admin/ansichten-listen", + "lib/components/ui/ThemeToggle": "admin/ansichten-listen", + "lib/components/ui/Toast": "admin/ansichten-listen", + "lib/components/ui/UserList": "admin/ansichten-listen", + "lib/components/ui/ValidationBadge": "admin/ansichten-listen", + "lib/components/ui/VideoPlayer": "admin/ansichten-listen", + "lib/components/ui/VideoPreview": "admin/ansichten-listen", + "lib/components/ui/VoiceFilterTextInput": "admin/ansichten-listen", + "lib/components/ui/VoiceRecorderButton": "admin/ansichten-listen", + "lib/components/ui/VoiceTextInputControl": "admin/ansichten-listen", + "App": "admin/konzept", + "lib/components/ActionMappedFieldList": "admin/aktionen", + "lib/components/ActionMethodScaffold": "admin/aktionen", + "lib/components/ActionOutputMapping": "admin/aktionen", + "lib/components/ActionProgressMapping": "admin/aktionen", + "lib/components/AdminLayout": "admin/konzept", + "lib/components/AuditDiff": "projekt/audit-backup", + "lib/components/AuditHistoryPanel": "projekt/audit-backup", + "lib/components/AuditRestoreDialog": "projekt/audit-backup", + "lib/components/AuditSidebarHistory": "projekt/audit-backup", + "lib/components/AuditView": "projekt/audit-backup", + "lib/components/BulkEditPanel": "admin/ansichten-listen", + "lib/components/CollectionCards": "admin/ansichten-listen", + "lib/components/CollectionList": "admin/ansichten-listen", + "lib/components/CollectionTable": "admin/ansichten-listen", + "lib/components/FileUploadQueue": "admin/medien", + "lib/components/LoginPage": "anwender/anmelden", + "lib/components/MediaGrid": "admin/medien", + "lib/components/MediaGridTile": "admin/medien", + "lib/components/NavigationCollectionView": "admin/ansichten-listen", + "lib/components/ProfilePage": "anwender/benutzer-teams", + "lib/components/ProjectList": "admin/konzept", + "lib/components/SnapshotView": "projekt/audit-backup", + "__ignore": [ + "lib/mock/*", + "*.test", + "lib/i18n/locales/*", + "*.d", + "graphify-out/*" + ] + }, + "testplans": { + "05-collection-view.md": "admin/ansichten-listen", + "37-pagebuilder.md": "projekt/pagebuilder-dev", + "40-actions.md": "admin/aktionen", + "43-backup-restore.md": "projekt/audit-backup", + "44-snapshots.md": "projekt/audit-backup", + "02-navigation-routing.md": "anwender/orientierung", + "07-entry-editor-advanced.md": "admin/eintrags-editor", + "11-foreign-keys.md": "admin/eintrags-editor", + "16-ai-integration.md": "admin/ki-funktionen", + "17-ai-tts.md": "admin/ki-funktionen", + "25-file-upload.md": "admin/medien", + "27-media-grid.md": "admin/medien", + "34-i18n-fields.md": "admin/eintrags-editor", + "35-entry-i18n.md": "admin/eintrags-editor", + "36-voice-input-fields.md": "admin/eintrags-editor", + "38-foreign-file.md": "admin/medien", + "39-preview-resolver.md": "admin/customizing", + "41-search-index-status.md": "projekt/suche", + "42-impersonation.md": "admin/benutzer-rechte" + } +} diff --git a/plans/coverage-report.json b/plans/coverage-report.json new file mode 100644 index 0000000..87c8067 --- /dev/null +++ b/plans/coverage-report.json @@ -0,0 +1,874 @@ +{ + "generatedAt": "2026-10-16T22:24:42.372Z", + "categories": { + "routes": { + "total": 36, + "mapped": 36, + "openCount": 0, + "openItems": [] + }, + "contexts": { + "total": 66, + "mapped": 66, + "openCount": 0, + "openItems": [], + "symbols": [ + { + "symbol": "base64.decode", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_base64.go", + "hasArgs": true + }, + { + "symbol": "base64.encode", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_base64.go", + "hasArgs": true + }, + { + "symbol": "bcrypt.check", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_bcrypt.go", + "hasArgs": true + }, + { + "symbol": "bcrypt.hash", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_bcrypt.go", + "hasArgs": true + }, + { + "symbol": "cache.clear", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.count", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.delete", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.get", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.has", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.set", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "channel.send", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_channel.go", + "hasArgs": true + }, + { + "symbol": "channel.subscribe", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_channel.go", + "hasArgs": true + }, + { + "symbol": "charset.decode", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_charset.go", + "hasArgs": true + }, + { + "symbol": "charset.iso8859ToUtf8", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_charset.go", + "hasArgs": true + }, + { + "symbol": "config.namespace", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_config.go", + "hasArgs": false + }, + { + "symbol": "config.project", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_config.go", + "hasArgs": false + }, + { + "symbol": "config.server", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_config.go", + "hasArgs": false + }, + { + "symbol": "cookie.get", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_cookie.go", + "hasArgs": true + }, + { + "symbol": "cookie.set", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_cookie.go", + "hasArgs": true + }, + { + "symbol": "crypto.md5", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_crypto.go", + "hasArgs": true + }, + { + "symbol": "crypto.sha256", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_crypto.go", + "hasArgs": true + }, + { + "symbol": "db.count", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.create", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.delete", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.deleteMany", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.find", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.update", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.updateMany", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "debug.dump", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_debug.go", + "hasArgs": true + }, + { + "symbol": "debug.sentryTraceId", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_debug.go", + "hasArgs": false + }, + { + "symbol": "debug.sleep", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_debug.go", + "hasArgs": true + }, + { + "symbol": "exec.command", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_exec.go", + "hasArgs": true + }, + { + "symbol": "fs.configDir", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": false + }, + { + "symbol": "fs.copy", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.mkDir", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.readDir", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.readFile", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.remove", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.stat", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.writeFile", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "http.fetch", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_http.go", + "hasArgs": true + }, + { + "symbol": "http.fetchStream", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_http.go", + "hasArgs": true + }, + { + "symbol": "image.filter", + "page": "reference/hooks-medien", + "stufe": 4, + "goFile": "context_image.go", + "hasArgs": true + }, + { + "symbol": "json.parse", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_json.go", + "hasArgs": true + }, + { + "symbol": "json.stringify", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_json.go", + "hasArgs": true + }, + { + "symbol": "jwt.create", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_jwt.go", + "hasArgs": true + }, + { + "symbol": "jwt.parse", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_jwt.go", + "hasArgs": true + }, + { + "symbol": "pdf.cpu", + "page": "reference/hooks-medien", + "stufe": 4, + "goFile": "context_pdf.go", + "hasArgs": false + }, + { + "symbol": "pdf.fromHTML", + "page": "reference/hooks-medien", + "stufe": 4, + "goFile": "context_pdf.go", + "hasArgs": false + }, + { + "symbol": "ratelimit.backoffCheck", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "ratelimit.backoffRecord", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "ratelimit.backoffReset", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "ratelimit.windowCheck", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "ratelimit.windowCount", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "ratelimit.windowReset", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_ratelimit.go", + "hasArgs": true + }, + { + "symbol": "request", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_request.go", + "hasArgs": false + }, + { + "symbol": "response.flush", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_response.go", + "hasArgs": false + }, + { + "symbol": "response.header", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_response.go", + "hasArgs": false + }, + { + "symbol": "response.write", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_response.go", + "hasArgs": true + }, + { + "symbol": "response.writeHeader", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_response.go", + "hasArgs": true + }, + { + "symbol": "response.writeSSE", + "page": "reference/hooks-daten", + "stufe": 4, + "goFile": "context_response.go", + "hasArgs": true + }, + { + "symbol": "smtp.sendMail", + "page": "reference/hooks-netze", + "stufe": 4, + "goFile": "context_smtp.go", + "hasArgs": true + }, + { + "symbol": "tpl.execute", + "page": "reference/hooks-medien", + "stufe": 4, + "goFile": "context_tpl.go", + "hasArgs": true + }, + { + "symbol": "user.auth", + "page": "reference/hooks-sicherheit", + "stufe": 4, + "goFile": "context_user.go", + "hasArgs": false + }, + { + "symbol": "xml.create", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_xml.go", + "hasArgs": true + }, + { + "symbol": "xml.parse", + "page": "reference/hooks-meta", + "stufe": 4, + "goFile": "context_xml.go", + "hasArgs": true + } + ] + }, + "tools": { + "total": 36, + "mapped": 36, + "openCount": 0, + "openItems": [], + "symbols": [ + { + "symbol": "action_call", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "action_describe", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "actions_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "agent_guide_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "asset_read", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "assets_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "audit_query", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "backup_create", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "collection_describe", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "collections_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "document_create", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "document_delete", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "document_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "document_update", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "documents_count", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "documents_facet", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "documents_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "file_read", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "jobs_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "openapi_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "org_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "orgs_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "project_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "project_reload", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "projects_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "queue_status", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "regenerate_search", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "snapshots_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "system_meta_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "team_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "teams_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "user_create", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "user_delete", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "user_get", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "user_update", + "page": "projekt/mcp-nutzen", + "stufe": 4 + }, + { + "symbol": "users_list", + "page": "projekt/mcp-nutzen", + "stufe": 4 + } + ] + }, + "schemas": { + "total": 16, + "mapped": 16, + "openCount": 0, + "openItems": [] + }, + "components": { + "total": 151, + "mapped": 151, + "openCount": 0, + "openItems": [] + }, + "testplans": { + "total": 19, + "mapped": 19, + "openCount": 0, + "openItems": [] + } + }, + "depth": { + "routes": { + "total": 36, + "stufe4": 0, + "stufe3": 0, + "stufe2": 36, + "stufe1": 0 + }, + "contexts": { + "total": 66, + "stufe4": 66, + "stufe3": 0, + "stufe2": 0, + "stufe1": 0 + }, + "tools": { + "total": 36, + "stufe4": 36, + "stufe3": 0, + "stufe2": 0, + "stufe1": 0 + }, + "schemas": { + "total": 16, + "stufe4": 0, + "stufe3": 0, + "stufe2": 16, + "stufe1": 0 + }, + "components": { + "total": 151, + "stufe4": 0, + "stufe3": 0, + "stufe2": 151, + "stufe1": 0 + }, + "testplans": { + "total": 19, + "stufe4": 0, + "stufe3": 0, + "stufe2": 19, + "stufe1": 0 + } + }, + "schemasDetail": { + "action.schema.json": [ + "audit", + "cors", + "hooks", + "meta", + "name", + "permissions" + ], + "asset.schema.json": [ + "name", + "path" + ], + "collection-meta.schema.json": [ + "agent", + "defaultSort", + "designGuide", + "exports", + "group", + "hide", + "i18n", + "imageUrl", + "label", + "muiIcon", + "openapi", + "pagebuilder", + "preview", + "query", + "sections", + "sidebar", + "singleton", + "subNavigation", + "viewHint" + ], + "collection.schema.json": [ + "audit", + "bulk", + "cors", + "defaultLanguage", + "fields", + "hiddenFields", + "hooks", + "imageFilter", + "indexes", + "meta", + "name", + "permissions", + "projections", + "queryLimits", + "readonlyFields", + "search", + "strictFields", + "upload", + "uploadPath" + ], + "defs.schema.json": [], + "field-list.schema.json": [], + "field-meta.schema.json": [ + "addElementLabel", + "choices", + "containerProps", + "defaultValue", + "dependsOn", + "downscale", + "drillDown", + "filter", + "foreign", + "helperText", + "hide", + "hideLabel", + "i18n", + "imageEditor", + "inputProps", + "label", + "openapi", + "pageSize", + "pagebuilder", + "position", + "preview", + "protected", + "schemaRef", + "section", + "widget" + ], + "field.schema.json": [], + "hooks.schema.json": [ + "audit", + "delete", + "get", + "post", + "put" + ], + "image-filter.schema.json": [], + "job.schema.json": [ + "cron", + "file", + "meta", + "timeout", + "type" + ], + "openapi.schema.json": [ + "delete", + "disabled", + "get", + "getOne", + "post", + "put" + ], + "permissions.schema.json": [ + "public", + "user" + ], + "project.schema.json": [ + "actions", + "admin", + "assets", + "audit", + "collections", + "cors", + "hook", + "jobs", + "legacy", + "meta", + "namespace", + "snapshotPath", + "snapshots", + "strictFields", + "upload" + ], + "projections.schema.json": [], + "snapshot.schema.json": [ + "collectionDedup", + "collections", + "description", + "enabled", + "includeMedia", + "mode", + "name", + "permissions", + "retention", + "schedule" + ] + } +} diff --git a/plans/doku-ausbau.md b/plans/doku-ausbau.md new file mode 100644 index 0000000..14a865e --- /dev/null +++ b/plans/doku-ausbau.md @@ -0,0 +1,167 @@ +# Doku-Ausbau: Plan und Status + +Lebendes Dokument. Der Orga-Agent (Agent Warpfuchs) aktualisiert Status, Sessions und Second-Opinion-Ergebnisse nach jedem Schritt. Stand: 2026-10-16. + +## Regeln (kurz) + +- Benennung: **tibi-server**, **tibi-admin** (Release Nova, Repo `tibi-admin-nova`). Projekte = eigenständige Websites/Shops/Intranet aus `tibi-svelte-starter`. +- Dev-Doku = Projektnutzung, keine Core-Entwicklung. Ton: Deutsch, Du-Form, kurze Sätze. +- Keine lange Prosa: Tabellen, Listen, Steps, Tabs, Code-Beispiele, Starlight-Komponenten. +- Code schlägt Doku: jede Aussage am Code verifiziert, Stempel `Verifiziert am `. +- `npm run build` in tibi-docs bleibt immer grün. Keine toten Links. + +## Themenpakete + +| Paket | Seiten | Agent | Status | Second Opinion | Abnahme | +|---|---|---|---|---|---| +| T-REF Referenz | schemas, hook-kontexte, token-köpfe, fehlercodes | general ses_ebb2308e0ffeybmgl7oG1Eyn0b | ✅ fertig | ✅ SO eingearbeitet (16 Schemas, 409/500-Legacy-Default, Login-Pfad) | Build + Links ✅ | +| T-PROJ-A Projekt Kern | sammlungen-anlegen, felder-widgets, abfragen-lesen, rechte-tokens | general ses_ebb2308d4ffev0H1z4mvNfsw5k | ✅ fertig | ✅ SO eingearbeitet (_count/_facet-Routen, required name+permissions, 25 Widgets) | Build + Links ✅ | +| T-PROJ-B Projekt Logik | hooks-schreiben, dateien-bilder, navigation-i18n, suche | general ses_ebb0d36b6ffeJ44pbErML0Z4X9 | ✅ fertig | ✅ SO eingearbeitet (SSR-Cache vs Dependencies, topK + YAML-rrf-Block) | Build + Links ✅ | +| T-PROJ-C Projekt Ship | ssr-website, jobs-actions, audit-backup, deploy | general ses_ebb0d36a7ffeY76nGYPhP0U5xR | ✅ fertig | ✅ SO eingearbeitet (cron-Pflicht korrigiert, Snapshot-Zitat + tags-Typo) | Build + Links ✅ | +| T-SERVER Server-Hand | konfiguration, betrieb, sicherheit, schnittstellen | general ses_ebb2308d3ffeCTZqqtzMszuDnH | ✅ fertig | ✅ SO eingearbeitet (MCP-Route fest, CORS-Merge, 429, kein Abo-Endpunkt) | Build + Links ✅ | +| T-ADMIN-A Admin I | ansichten-listen, eintrags-editor, medien, exporte | general ses_ebb0d36a5ffe0n1PbsS1E6V5HM | ✅ fertig | ✅ SO eingearbeitet (Custom-Export: db.loadAll/ctx.xlsx/contentType+blob, qm-Param) | Build + Links ✅ | +| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | general ses_ebad2bf8affeZ9uV0HzJf2k357 | ✅ fertig | ✅ SO eingearbeitet (Test-Pläne 40/42 verlinkt, Widget-Enum klargestellt, toter Anker gefixt) | Build + Links ✅ | +| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | general ses_ebad2bf77ffeQm3uhj279Qrc09 | ✅ fertig | ✅ SO eingearbeitet (/ statt Strg+K, „Dateien hinzufügen", Tabelle statt Zeilen, Duplikat-Aside) | Build + Links ✅ | +| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | general ses_ebad2bf75ffezS1KTRTQDO5GT5 | ✅ fertig | ✅ SO eingearbeitet (Snapshot-Reiter, „Exportieren", Benutzerverwaltung, echte Fehltexte) | Build + Links ✅ | +| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | – | ⏳ offen | ⏳ | Build + Links | +| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | – | ⏳ offen | ⏳ | Build + Links | +| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | – | ⏳ offen | ⏳ | Build + Links | +| T-SHOTS Screenshots | `src/assets/anwender/*` NUR aus Mock-Projekt `corporate` (nie `t1`!), Auftrag: `plans/t-shots-arbeitsauftrag.md` | general ses_ebac0c7feffed3DYtWznC2bqzJ | ✅ fertig (24 webp, <200 KB, Vision-Spotcheck ok) | ✅ Text-Abweichungen eingearbeitet (Live-Schalter, OK-Button, Reiter, Corporate-Blöcke) | Build + Links ✅ | +| T-PROJ-D Vollständigkeit | pagebuilder-dev, mcp-nutzen (36 Tools), llm-nutzen | general ses_ebac0c804ffe9vElWvaKTju4H9 | ✅ fertig | ✅ SO eingearbeitet (REST-only: sieben statt fünf) | Build + Links ✅ | +| T-FINISH Finish | index-Karten, uebersicht/konzept-Stempel, Voll-Linkcheck, AGENTS-Spiegelung | Orga (direkt) | ✅ fertig (v1) | — (Linkcheck: alle ok, 0 Hüllen, ADR-0003 angelegt) | Build 55 Seiten ✅ | +| T-PB Pagebuilder komplett | pagebuilder-dev + seiten-bauen: Overlay-Editor, Modi, Viewport, Overview/inline, drillDown | general ses_eb9584bafffekRtyPPBn7ORTeA | ✅ fertig | ✅ SO eingearbeitet (OK/blur-Pfad, <768-px-Hinweis) | Build + Links ✅ | +| T-TON Ton-Rewrite | alle 10 anwender-Seiten: professionell-per-du, UI-Namen aus de.json | general ses_eb95443a5ffe8IrJVmt1DcAReX | ✅ fertig | ✅ SO eingearbeitet („Bild hochladen", Sitzungs-Hinweis, Live-Qualifier, KI-Beschreibung, Browser-Zurück) | Build + Links ✅ | +| T-SHOTS-2 Pagebuilder-Shots | Overlay + Viewport (corporate), Einbau in seiten-bauen | general ses_eb9503e20ffetq8gZU0Ff5U06T | ✅ fertig (3 webp, Icon-Tooltip korrigiert) | ✅ Abweichung eingearbeitet | Build ✅ | +| T-COV Coverage-Inventar | Skript + Map: Routen, Kontexte, Tools, Schemas, Komponenten, Test-Pläne | general ses_eb9584ba6ffeUrQq7fowAHlPXO | ✅ fertig (282/282 gemappt, 0 OFFEN) | ⏳ Map v1 = Topic-Level bei ui/*, Verifikation folgt | `npm run coverage` grün | + +Legende: ⏳ offen · 🔄 läuft (Session-ID) · 👀 Review/SO läuft · ✅ fertig. + +## Vollständigkeit: Was ist wo abgedeckt (100-%-Ziel) + +Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Der Orga-Agent prüft diese Tabelle vor T-FINISH Zeile für Zeile. + +### tibi-server (`internal/*`) + +| Baustein | Dokustelle | Status | +|---|---|---| +| config (Server-Config, Env, Admin-Tokens) | server/konfiguration | ✅ | +| controller + dbapi + dbcrud + mongocrud (Routen, CRUD, Filter) | server/schnittstellen, projekt/abfragen-lesen | ✅ | +| hook (24 Kontexte) + Lifecycle-Stufen (get/post/put/delete/audit) | reference/hook-kontexte, projekt/hooks-schreiben | ✅ | +| realtime (Hub, SSE) | server/schnittstellen | ✅ | +| llm (chat, providers, Budgets) | projekt/llm-nutzen | ⏳ Hülle | +| mcp (36 Tools, Transport, Scopes) | projekt/mcp-nutzen (+ server/schnittstellen Überblick) | ⏳ Hülle | +| image (Filter) + upload | projekt/dateien-bilder | ✅ | +| ratelimit (Login-Backoff, 429) | server/sicherheit | ✅ | +| suexec + Pfad-Schalter | server/sicherheit | ✅ | +| audit (TTL, Lesen) | projekt/audit-backup | ✅ | +| jobs (Cron) + actions | projekt/jobs-actions | ✅ | +| snapshots + backup/restore | projekt/audit-backup | ✅ | +| search (Textindex, RRF-Hybrid, Regenerate) | projekt/suche (+ projekt/sammlungen-anlegen für Index-YAML) | ✅ | +| embedding + vectorindex | projekt/suche (Kurzüberblick) | ✅ | +| rankfusion (RRF-Formel) | projekt/suche | ✅ | +| permissions (public/user/token, Orgs/Teams-Matrix) | projekt/rechte-tokens | ✅ | +| filecleanup (automatisch, keine Config-Fläche) | kein eigener Artikel — Einzeiler in server/betrieb prüfen (T-FINISH) | ⏳ | +| cache (Hook-lokal) | projekt/hooks-schreiben (Kontext-Tabelle) | ✅ | +| mock, models, testsuite, utils, version, mgocrud.old (intern, keine Projekt-Fläche) | keine Doku nötig | — | +| SSR-Hooks + ssr-Collection + clear_cache | projekt/ssr-website | ✅ | +| CORS-Kaskade | server/sicherheit | ✅ | +| OpenAPI-Generator | reference/openapi + server/schnittstellen | ✅ | +| Deploy/Compose-Profile | projekt/deploy + server/betrieb | ✅ | + +### tibi-admin (`frontend/src/...`) + +| Baustein | Dokustelle | Status | +|---|---|---| +| Ansichten (Tabelle/Karten/Medien/Navigation) + Suche/Sort/Filter/Blättern | admin/ansichten-listen + anwender/lesen-suchen-filtern | ✅ | +| Editor + 25 Widgets + Fremdschlüssel + i18n | admin/eintrags-editor + anwender/eintrag-bearbeiten | ✅ | +| Medien (Grid, Upload, Editor, Lightbox) | admin/medien + anwender/medien | ✅ | +| Exporte (Listen + Custom-Skripte) | admin/exporte + anwender/exportieren | ✅ | +| Actions (Ausführen, Fortschritt) | admin/aktionen | ✅ | +| Benutzer/Teams/Orgs/Rollen/Tokens/Impersonation | admin/benutzer-rechte + anwender/benutzer-teams | ✅ | +| KI (Chat, Zusammenfassen, STT/TTS, Budgets) | admin/ki-funktionen | ✅ | +| Pagebuilder (Widget, Registry, CSS-Transform, Vorschau, Screenshots) | projekt/pagebuilder-dev + admin/medien (Thumbnail?) + anwender/seiten-bauen | ⏳ Hülle (dev), Rest ✅ | +| Setup (Docker, Mock, URLs) + Customizing (Views, Meta, Skripte) | admin/setup, admin/customizing | ✅ | +| CommandPalette, Shortcuts, Breadcrumb, Audit/history-UI, Backup/Snapshot-UI | verstreut in admin/* — T-FINISH prüft Erwähnung je Seite | ⏳ | + +### tibi-types + Starter + +| Baustein | Dokustelle | Status | +|---|---|---| +| 16 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, ...) | reference/schemas + je Projekt-Seite | ✅ | +| Starter-Skill (Platzhalter, Registrierung, Pfad A/B) | einstieg/schnellstart + einstieg/neues-projekt | ✅ | +| Mock-Projekte (corporate/shop/blog/intranet/events/t1) | plans/t-shots-arbeitsauftrag.md (corporate für Shots) | ✅ | + +## Wellen + +- Welle 1: T-REF, T-PROJ-A, T-SERVER (Fundament, unabhängig voneinander). +- Welle 2: T-PROJ-B, T-PROJ-C, T-ADMIN-A. +- Welle 3: T-ADMIN-B, T-ANW-A, T-ANW-B. +- Danach: T-SHOTS, dann T-FINISH. + +## Methode Vollständigkeit (v2 — messbar statt Gefühl) + +Stufe 1 — Inventare (Skript `scripts/coverage-inventory.mjs`, Befehl `npm run coverage`): Routen aus `setup.go`, Hook-Kontexte aus `context_*.go`, MCP-Tools aus `tools_*.go`, Schema-Top-Level aus `tibi-types`, Admin-Komponenten (`*.svelte`), Test-Pläne (Liste). Jedes Item → genau eine Doku-Seite (`plans/coverage-map.json`). Unzugeordnete Items = Arbeitsliste mit Zahl. + +Stufe 2 — Lücken-Pakete wie bisher (Generalist + Second Opinion), aber mit Inventar-Beleg. +Stufe 3 — Ton-Rewrite nach Stil-Guide (AGENTS.md §1), UI-Namen wörtlich aus `de.json`. + +## Ausbau Tiefe (v3 — Tiefe statt Erwähnung, mit Second Opinion abgestimmt) + +Befund: Das Inventar zählt Pakete statt Funktionen — „282/282" misst Tiefe grundsätzlich nicht. Neue Körnung: **Funktion**, neue Messlatte pro Item: `Erwähnung < Signatur < Signatur+Beispiel < Signatur+Beispiel+Fehler` (Ziel: Stufe 4 überall). Quelle fertig: `// args:`-Kommentare über jedem `Func*` in `context_*.go`. + +Tiefenstufen-DoD: Referenz = Name + Signatur + Codeblock mit Symbol + Fehlerfall (skriptgeprüft). Anleitung = jeder H2 Schritt mit wörtlichem UI-Namen + prüfbarem Ergebnis. Anwender = jeder Schritt nennt UI-String wörtlich. Übersicht = jede Fähigkeit genau ein Link. + +| Paket | Inhalt | Agent | Status | Second Opinion | Abnahme | +|---|---|---|---|---|---| +| P-DEPTH Messlatte | Map v2 Funktionskörnung + Depth-Mode im Skript (Gate vor allem Schreiben!) | general ses_eb9485d3cffeqGunIdpSLocnBq | ✅ fertig (66 Symbole, 0 auf Stufe 3/4 → ehrliche Null) | ✅ Orga-Entscheide (JS-signature zählt, context-Alias) eingebaut | `npm run coverage` mit Tiefenstufen ✅ | +| P-HOOKS-1 Daten | db, cache, request, response, fs (+ Referenz-Muster für alle) | general ses_eb9442455ffelLESMgDZZ40T4G | ✅ fertig (27 Symbole Stufe 4) | ✅ SO eingearbeitet (Zitat-Zeilen, configDir-Marker, Scanner per-###) | Build ✅ | +| P-HOOKS-2 Netze | http, smtp, channel, ratelimit | general ses_eb93e70f1fferm8NNuFeh6Ktn5 | ✅ fertig | ✅ SO-Spotcheck (smtp-Alias = Namensrest) | Stufe 4 ✅ | +| P-HOOKS-3 Sicherheit | jwt, user, bcrypt, crypto, cookie, exec, config | general ses_eb93e70e7ffedQM6Xqv9hH20oj | ✅ fertig | ✅ SO-Spotcheck (bcrypt-s, jwt-valid:false) | Stufe 4 ✅ | +| P-HOOKS-4 Medien | tpl, image, pdf | general ses_eb93e70e6ffepuNEqdv3N3uabP | ✅ fertig | ✅ SO (int64-Hinweis ergänzt) | Stufe 4 ✅ | +| P-HOOKS-5 Meta | base64, json, xml, charset, debug | general ses_eb93e70e5ffeuZXn6frVY3h2Do | ✅ fertig | ✅ SO-Spotcheck (dump/Kein-Fehlerfall ok) | Stufe 4 ✅ | +| P-MCP-D Tools-Tiefe | 36 Tools je Signatur+Beispiel+Fehler | general ses_eb93b206effe1eyg3y08aNDl7c | ✅ fertig (36/36 Stufe 4) | ✅ SO (9 REST-only, action_*-Kanon in mcp-nutzen, msg-vs-message präzisiert) | Build ✅ | +| P-LLM-D KI-Tiefe | Chat/Provider/Budget + ki-funktionen vertiefen | general ses_eb93435b4ffe2RV01zcGmhDqIb | ✅ fertig | ✅ SO (502-Config-Relativierung, Vision-Overlay, 4 fehlende Tools) | Build ✅ | +| P-UI-D Oberfläche | Shortcuts/CommandPalette/Breadcrumb/Audit-UI-Referenz | general ses_eb93435b3ffe7PMqEKHwW6lIby | ✅ fertig | ✅ SO (Undo/Redo, Ctrl+Shift+F-Bedingung) | Build ✅ | +| T-PEPP-A Komponenten-Projekt | projekt/*: Asides, Steps, Tabs, Cards, FileTree, del/ins, Code-Titel | general ses_eb9201da2ffe9RwCS1tpEdQoIu | ✅ fertig (alle Dateien ≤+17) | — (nur Darstellung) | Build ✅ | +| T-PEPP-B Komponenten-Rest | admin+reference+server+einstieg+index: gleiche Kur | general ses_eb9201d99ffe98zEJW1GP81efn | ✅ fertig (Code-Titel überall, Cards, del/ins) | — (nur Darstellung) | Build ✅ | +| T-KIANW KI-Anwender-Guide | NEU anwender/ki-nutzen.md + Mock-SSE-Screenshots (corporate) | general ses_eb9201d98ffeg0qr36c5jKrRKD | ✅ fertig (3 Shots, Datenverbleib ergänzt) | ✅ SO (Banner-Fußnote, Sprachausgabe-Fix) | Build ✅ | +| P-BLIND Blind-Read | Mini-Hook nur aus Doku bauen | general ses_eb93b2073ffemiWkRrQhctSfXR | ✅ DURCHGEFALLEN = gearbeitet (7 FAILs → alle am Code verifiziert + in hooks-schreiben/fehlercodes behoben) | — (Test-Ergebnis selbst) | 0 offene FAILs | + +Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind-Read-Test pro Los (Generalist baut Mini-Hook nur aus der Seite), SO-Spotcheck 3 Zufalls-Funktionen gegen Code. + +## Orga-Checkliste (Runde 3) + +- [x] Plan-Datei angelegt (`plans/doku-ausbau.md`) +- [x] Welle 1 gestartet (T-REF, T-PROJ-A, T-SERVER) — 3 Agenten laufen im Hintergrund +- [x] Welle 1 Ergebnisse eingetroffen (je Paket: Dateien geschrieben?) +- [x] Welle 1 Build + Links geprüft +- [x] Second Opinion T-REF, T-PROJ-A, T-SERVER eingeholt und eingearbeitet +- [x] Welle 2 Ergebnisse + Build + Second Opinions (alle drei Pakete fertig) +- [x] Welle 3 Ergebnisse + Build + Second Opinions (alle drei Pakete fertig) +- [x] T-SHOTS: Screenshots erstellt und eingebunden (24 webp aus corporate, Text-Abweichungen korrigiert) +- [x] T-FINISH: Index, Stempel, Linkcheck, AGENTS-Spiegelung (55 Seiten, 0 Hüllen, ADR-0003) +- [x] Abschlussmeldung an User +- [x] Stil-Guide professionell-per-du in AGENTS.md (§1) +- [x] T-PB Ergebnis + Build + Second Opinion +- [x] T-COV Inventar + Map, Lückenzahl steht (282/282, 0 OFFEN — Map v1 Topic-Level bei ui/*) +- [x] T-TON gestartet (alle 10 Anwender-Seiten) +- [x] T-TON Ergebnis + Build + Second Opinion +- [x] T-SHOTS-2 gestartet (Overlay + Viewport, corporate) +- [x] T-SHOTS-2 Ergebnis eingebaut +- [x] Abschlussmeldung Runde 2 an User + +## Orga-Checkliste Runde 3 (Tiefenausbau) + +- [x] P-DEPTH gestartet (Messlatte, Gate) +- [x] P-DEPTH Ergebnis: Funktionskörnung + Depth-Mode, verifiziert (66 Symbole, ehrliche Null auf 3/4) +- [x] P-HOOKS-1 gestartet (Muster-Los Daten) +- [x] P-HOOKS-1 Ergebnis + Blind-Read + SO (27 Symbole Stufe 4, Scanner per-###, Zitat-Regel) +- [x] P-HOOKS-2 bis 5 parallel gestartet (nur Kapitel-Dateien, Shared-Edits beim Orga) +- [ ] Lose 2-5 eingetroffen: Sidebar + Index-Links + Map-Umtrag (Orga), Build, SO-Spotcheck +- [ ] Blind-Read-Test über alle 5 Kapitel (Mini-Hook nur aus Doku) +- [x] P-MCP-D + P-LLM-D + P-UI-D starten +- [x] Abschlussmeldung Runde 3 an User +- [ ] Abschlussmeldung Runde 3 an User +- [ ] Offen an tibi-server: Typo `reponse.header` im Server-Code (`context_response.go`, von Doku wörtlich zitiert) → Issue +- [ ] Offen an tibi-admin-nova: totes `u`-Kürzel (`toggleUsers`-Key fehlt in `de.json`, nur Akkord `g → u` funktioniert) → Issue +- [ ] Abschlussmeldung Runde 3 an User diff --git a/plans/t-shots-arbeitsauftrag.md b/plans/t-shots-arbeitsauftrag.md new file mode 100644 index 0000000..8679089 --- /dev/null +++ b/plans/t-shots-arbeitsauftrag.md @@ -0,0 +1,39 @@ +# T-SHOTS Arbeitsauftrag: Screenshots für die Anwender-Doku + +Verbindlich für den Agenten, der T-SHOTS ausführt. Stand: 2026-10-16. + +## Eiserne Regeln + +- **Mock-Projekt: `corporate` (Corporate Website).** NIEMALS `t1` (Test Core — Playwright-Minimalprojekt mit Quatsch-Daten) oder andere Test-Namespaces. +- Anmeldung im Mock-Admin: `admin` / `admin` (siehe `frontend/assets/mock/login.json`). +- Admin im Mock-Modus starten (siehe `tibi-admin-nova/README.md`, Docker-Stack mit Mock-Profil). Kein echter Server nötig. +- Bilder nach `tibi-docs/src/assets/anwender/`, max 200 KB pro Datei (komprimieren, z. B. `cwebp`/`pngquant`), deutsche Alt-Texte direkt im Markdown (`![Alt-Text](...)`). +- 1 Bild pro 3–4 Klicks, exakt an der Stelle des HTML-Kommentars `` in der jeweiligen Seite einfügen (Kommentar dabei entfernen). +- Danach `npm run build` in tibi-docs — muss grün bleiben. + +## Warum corporate + +`frontend/assets/mock/project.json`: `corporate` → „Corporate Website — Hauptwebsite der Firma mit Blog, Team-Seite und Kontaktformular". Sammlungen (`_config/corporate/collections/`): `pages` (mit Pagebuilder!), `blog`, `team`, `navigation`, `medialib`, `downloads`, `redirects`, `settings`. Eigene Block-Registry (`corporate-blocks/registry.js` + `blocks.css`) — echte Vorschaubilder statt Platzhalter. + +## Shot-Liste (je Anwender-Seite) + +| Seite | Motive (in dieser Reihenfolge aufnehmen) | +|---|---| +| anmelden | Login-Formular (leer) → Fehler nach falschem Passwort → eingeloggter Start (Corporate-Projekt sichtbar) | +| orientierung | Start mit Projekt-Übersicht → geöffnetes Corporate-Projekt mit Menü → Schnellsuche (`/`) mit Ergebnis | +| lesen-suchen-filtern | Corporate-Liste (Tabelle) → Suche mit Treffer → Filter-Popover offen → Karten-Ansicht | +| eintrag-bearbeiten | Neu-Formular (Corporate-Blog) → ausgefülltes Formular → Speicher-Bestätigung → Pflichtfeld-Fehler (Stern) | +| medien | Medien-Raster (Corporate-Bilder) → „Dateien hinzufügen"-Dialog → Upload-Fortschritt → Bildeditor | +| seiten-bauen | Pagebuilder mit Corporate-Blöcken → Block-Auswahl → Vorschau (RowPreview) → veröffentlichte Seite | +| benutzer-teams | „Mein Profil" mit Rolle → Benutzerverwaltung (falls Rolle es zeigt) → Team-Ansicht | +| exportieren | Export-Dialog mit Formatwahl → Spaltenauswahl → fertige Datei | +| sichern | Snapshot-Ansicht (Reiter Snapshots) → Details → Statistik | +| hilfe | Keine Pflicht-Screenshots — nur wo sinnvoll (z. B. echte Fehlermeldung „Keine Berechtigung für diese Aktion") | + +## Ablauf + +1. Mock-Admin starten, als `admin`/`admin` anmelden, Projekt **Corporate Website** wählen. +2. Motive der Reihe nach aufnehmen (Browser-Screenshots, Desktop-Breite 1440, gleiche Fenstergröße für alle). +3. Zuschneiden auf Inhalt (keine Browser-Chrome-Ränder außer wo nötig), komprimieren (<200 KB). +4. In die Seiten einsetzen (Kommentar ersetzen), Alt-Texte deutsch („Anmeldemaske von tibi-admin mit ..."). +5. `npm run build` prüfen. Abnahme: Testleser erkennt jeden Schritt am Bild wieder. diff --git a/scripts/coverage-inventory.mjs b/scripts/coverage-inventory.mjs new file mode 100644 index 0000000..b22e078 --- /dev/null +++ b/scripts/coverage-inventory.mjs @@ -0,0 +1,387 @@ +#!/usr/bin/env node +/** + * Coverage-Inventar für die Tibi-Doku. + * + * Liest CODE (tibi-server, tibi-types, tibi-admin-nova) und gleicht die + * gefundenen Items mit plans/coverage-map.json ab. Reine Lückenliste: + * Exit-Code ist immer 0, kein Fail. + * + * - stdout: kompakte Übersicht pro Kategorie (total, gemappt, OFFEN, max 40) + * plus je Kategorie eine Depth-Zeile (Stufe 1/2/3/4) + * - plans/coverage-report.json: Zusammenfassung als JSON (inkl. depth) + * + * Körnung: contexts und tools sind Symbole (z. B. "db.find"), alle anderen + * Kategorien behalten ihre bisherige Körnung. Depth-Stufen je Symbol auf + * seiner Map-Seite (src/content/docs/.md): + * 1 = Symbol fehlt (oder Seite fehlt), 2 = nur Erwähnung, + * 3 = Erwähnung + Fenced-Codeblock mit Symbol ≤30 Zeilen danach, + * 4 = zusätzlich Error-Token im selben H2-Abschnitt. + * Andere Kategorien: reiner Map-Abgleich (gemappt = Stufe 2). + */ +import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const docsRoot = path.resolve(scriptDir, ".."); +const cmsRoot = path.dirname(docsRoot); + +const SERVER_ROOT = path.join(cmsRoot, "tibi-server"); +const TYPES_ROOT = path.join(cmsRoot, "tibi-types"); +const ADMIN_ROOT = path.join(cmsRoot, "tibi-admin-nova"); + +const MAP_PATH = path.join(docsRoot, "plans", "coverage-map.json"); +const REPORT_PATH = path.join(docsRoot, "plans", "coverage-report.json"); + +const MAX_OPEN_STDOUT = 40; + +function readText(p) { + return readFileSync(p, "utf8"); +} + +function warn(msg) { + console.error(`WARN: ${msg}`); +} + +/** 1. Routen: apiGroup.GET/POST/PUT/DELETE("pfad") + adm.* + OPTIONS aus setup.go, Duplikate raus. */ +function collectRoutes() { + const file = path.join(SERVER_ROOT, "internal", "controller", "setup.go"); + if (!existsSync(file)) { + warn(`setup.go nicht gefunden: ${file}`); + return []; + } + const src = readText(file); + const found = new Set(); + for (const re of [ + /apiGroup\.(GET|POST|PUT|DELETE)\(\s*"([^"]+)"/g, + /\badm\.(GET|POST|PUT|DELETE)\(\s*"([^"]+)"/g, + /\.OPTIONS\(\s*"([^"]+)"/g, + ]) { + let m; + while ((m = re.exec(src)) !== null) found.add(m[m.length - 1]); + } + return [...found].sort(); +} + +/** + * 2. Hook-Symbole in Funktionskörnung: je context_*.go (ohne _test) die + * JS-Aufrufnamen aus RegisterPackageFunctions("paket", ...{"funktion": GoIdent}) + * plus Register("name", GoIdent) (Sonderfall request). Item-Format + * "paket.funktion" bzw. "request". Dazu je Symbol: Go-Datei, Go-Ident und + * ob ein `args:`-Kommentar im direkt darüberstehenden Kommentarblock steht. + */ +function collectContextSymbols() { + const dir = path.join(SERVER_ROOT, "internal", "hook"); + if (!existsSync(dir)) { + warn(`hook-Verzeichnis nicht gefunden: ${dir}`); + return []; + } + const out = []; + const files = readdirSync(dir) + .filter((f) => f.startsWith("context_") && f.endsWith(".go") && !f.endsWith("_test.go")) + .sort(); + for (const f of files) { + const src = readText(path.join(dir, f)); + const lines = src.split("\n"); + const pkgRe = /RegisterPackageFunctions\(\s*"([^"]+)"\s*,\s*models\.ContextPackageFunctions\{(.*?)\}\)/gs; + let m; + while ((m = pkgRe.exec(src)) !== null) { + const pkg = m[1]; + const entryRe = /"([^"]+)"\s*:\s*([A-Za-z_][A-Za-z0-9_]*)/g; + let e; + while ((e = entryRe.exec(m[2])) !== null) { + out.push({ symbol: `${pkg}.${e[1]}`, goFile: f, goIdent: e[2], hasArgs: hasArgsComment(lines, e[2]) }); + } + } + // Sonderfall Einzel-Registrierung, z. B. Register("request", FuncRequest) + const singleRe = /\bRegister\(\s*"([^"]+)"\s*,\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)/g; + while ((m = singleRe.exec(src)) !== null) { + out.push({ symbol: m[1], goFile: f, goIdent: m[2], hasArgs: hasArgsComment(lines, m[2]) }); + } + } + out.sort((a, b) => (a.symbol < b.symbol ? -1 : a.symbol > b.symbol ? 1 : 0)); + return out; +} + +/** Enthält der zusammenhängende `//`-Block direkt über `func (` ein `args:`? */ +function hasArgsComment(lines, goIdent) { + const idx = lines.findIndex((l) => new RegExp(`^func\\s+${goIdent}\\s*\\(`).test(l)); + if (idx < 0) return false; + const block = []; + let j = idx - 1; + while (j >= 0 && /^\s*\/\//.test(lines[j])) { + block.unshift(lines[j]); + j--; + } + return block.some((l) => /(args:|JS signature:)/i.test(l)); +} + +/** 3. MCP-Tools: Name: "..." aus internal/mcp/tools_*.go. */ +function collectTools() { + const dir = path.join(SERVER_ROOT, "internal", "mcp"); + if (!existsSync(dir)) { + warn(`mcp-Verzeichnis nicht gefunden: ${dir}`); + return []; + } + const files = readdirSync(dir).filter((f) => f.startsWith("tools_") && f.endsWith(".go")); + const found = new Set(); + const re = /Name:\s*"([^"]+)"/g; + for (const f of files) { + const src = readText(path.join(dir, f)); + let m; + while ((m = re.exec(src)) !== null) found.add(m[1]); + } + return [...found].sort(); +} + +/** + * 4. Schemas: Dateinamen aus schemas/config/*.schema.json plus deren + * Top-Level-properties-Keys als Detail (für den Report). + */ +function collectSchemas() { + const dir = path.join(TYPES_ROOT, "schemas", "config"); + const detail = {}; + if (!existsSync(dir)) { + warn(`schemas-Verzeichnis nicht gefunden: ${dir}`); + return { items: [], detail }; + } + const files = readdirSync(dir) + .filter((f) => f.endsWith(".schema.json")) + .sort(); + for (const f of files) { + try { + const parsed = JSON.parse(readText(path.join(dir, f))); + const props = parsed && typeof parsed === "object" && parsed.properties && typeof parsed.properties === "object" + ? Object.keys(parsed.properties) + : []; + detail[f] = props.sort(); + } catch { + warn(`Schema nicht parsbar: ${f}`); + detail[f] = []; + } + } + return { items: files, detail }; +} + +/** 5. Admin-Komponenten: *.svelte unter frontend/src, relativ, ohne Endung. */ +function collectComponents() { + const srcDir = path.join(ADMIN_ROOT, "frontend", "src"); + if (!existsSync(srcDir)) { + warn(`frontend/src nicht gefunden: ${srcDir}`); + return []; + } + const out = []; + const walk = (dir) => { + for (const entry of readdirSync(dir)) { + const full = path.join(dir, entry); + if (statSync(full).isDirectory()) { + walk(full); + } else if (entry.endsWith(".svelte")) { + const rel = path.relative(srcDir, full).split(path.sep).join("/"); + out.push(rel.slice(0, -".svelte".length)); + } + } + }; + walk(srcDir); + return out.sort(); +} + +/** 6. Test-Pläne: Dateinamen aus docs/test-plans/. */ +function collectTestplans() { + const dir = path.join(ADMIN_ROOT, "docs", "test-plans"); + if (!existsSync(dir)) { + warn(`test-plans nicht gefunden: ${dir}`); + return []; + } + return readdirSync(dir).filter((f) => f.endsWith(".md")).sort(); +} + +const ERROR_TOKENS = ["Error", "error", "400", "401", "403", "404", "409", "429", "500", "nil", "verweigert", "denied"]; +/** Kategorien mit Depth-Mode (Symbol-Tiefe auf der Map-Seite). */ +const DEPTH_CATS = ["contexts", "tools"]; + +const docCache = new Map(); +function loadDocLines(slug) { + if (docCache.has(slug)) return docCache.get(slug); + const p = path.join(docsRoot, "src", "content", "docs", `${slug}.md`); + const lines = existsSync(p) ? readText(p).split("\n") : null; + docCache.set(slug, lines); + return lines; +} + +/** Fenced-Codeblock-Spannen als [startFence, endFence]-Paare (0-basiert). */ +function fencedSpans(lines) { + const spans = []; + let start = -1; + for (let i = 0; i < lines.length; i++) { + if (/^\s*```/.test(lines[i])) { + if (start < 0) start = i; + else { + spans.push([start, i]); + start = -1; + } + } + } + return spans; +} + +/** + * Depth-Stufe je Symbol auf seiner Map-Seite: + * 1 = fehlt (kein Map-Eintrag, Seite fehlt oder Symbol nicht als Text), + * 2 = nur Erwähnung, 3 = + Fenced-Codeblock mit Symbol ≤30 Zeilen danach, + * 4 = + Error-Token im selben H2-Abschnitt (bis zur nächsten H2). + */ +function symbolDepth(symbol, slug) { + if (!slug) return 1; + const lines = loadDocLines(slug); + if (!lines) return 1; + // Aliase: "paket.fn" gilt auch als "context.paket.fn" bzw. "context.fn" (Hook-Schreibweise) + const aliases = [symbol, `context.${symbol}`]; + const dot = symbol.indexOf("."); + if (dot > 0) aliases.push(`context.${symbol.slice(dot + 1)}`); + const mentions = []; + lines.forEach((l, i) => { + if (aliases.some((a) => l.includes(a))) mentions.push(i); + }); + if (mentions.length === 0) return 1; + const spans = fencedSpans(lines); + let anchor = -1; + for (const mi of mentions) { + const hit = spans.some( + ([s, e]) => s > mi && s <= mi + 30 && lines.slice(s, e + 1).some((l) => aliases.some((a) => l.includes(a))), + ); + if (hit) { + anchor = mi; + break; + } + } + if (anchor < 0) return 2; + // Abschnitt = eigene ###-Sektion (bis zum nächsten ### oder ##), nicht das ganze Paket: + // sonst zählt der Fehler-Token fremder Symbole (Mess-Loophole). + let start = 0; + for (let k = anchor; k >= 0; k--) { + if (/^####?\s/.test(lines[k])) { + start = k; + break; + } + } + let stop = lines.length; + for (let k = anchor + 1; k < lines.length; k++) { + if (/^####?\s/.test(lines[k])) { + stop = k; + break; + } + } + const section = lines.slice(start, stop).join("\n"); + // Explizit ausgewiesene Abwesenheit ("kein Fehlerfall") zählt als dokumentiert. + if (/kein Fehlerfall/i.test(section)) return 4; + return ERROR_TOKENS.some((t) => section.includes(t)) ? 4 : 3; +} + +function loadMap() { + const empty = { routes: {}, contexts: {}, tools: {}, schemas: {}, components: {}, testplans: {} }; + if (!existsSync(MAP_PATH)) { + warn(`keine coverage-map gefunden (${path.relative(docsRoot, MAP_PATH)}), alles OFFEN`); + return empty; + } + try { + const parsed = JSON.parse(readText(MAP_PATH)); + for (const key of Object.keys(empty)) { + if (parsed[key] && typeof parsed[key] === "object") empty[key] = parsed[key]; + } + return empty; + } catch { + warn("coverage-map.json nicht parsbar, alles OFFEN"); + return empty; + } +} + +function main() { + const schemas = collectSchemas(); + const ctxSymbols = collectContextSymbols(); + const ctxBySymbol = new Map(ctxSymbols.map((s) => [s.symbol, s])); + const inventory = { + routes: collectRoutes(), + contexts: ctxSymbols.map((s) => s.symbol), + tools: collectTools(), + schemas: schemas.items, + components: collectComponents(), + testplans: collectTestplans(), + }; + const map = loadMap(); + + const report = { generatedAt: new Date().toISOString(), categories: {}, depth: {} }; + let totalAll = 0; + let openAll = 0; + + for (const [cat, items] of Object.entries(inventory)) { + const mapping = map[cat] ?? {}; + // "__ignore": exakte Items oder Präfixe mit "*" (Infra ohne Doku-Fläche, z. B. Mock-Daten, Tests) + const ignores = Array.isArray(mapping.__ignore) ? mapping.__ignore : []; + const isIgnored = (item) => + ignores.some((pat) => (pat.endsWith("*") ? item.startsWith(pat.slice(0, -1)) : item === pat)); + const open = items.filter((item) => !(item in mapping) && !isIgnored(item)); + totalAll += items.length; + openAll += open.length; + report.categories[cat] = { + total: items.length, + mapped: items.length - open.length, + openCount: open.length, + openItems: open, + }; + + console.log(`${cat}: total=${items.length} gemappt=${items.length - open.length} OFFEN=${open.length}`); + for (const item of open.slice(0, MAX_OPEN_STDOUT)) console.log(` OFFEN: ${item}`); + if (open.length > MAX_OPEN_STDOUT) { + console.log(` ... +${open.length - MAX_OPEN_STDOUT} weitere (siehe plans/coverage-report.json)`); + } + + // Depth-Mode: contexts/tools je Symbol auf der Map-Seite, Rest Map-Abgleich. + const depth = { total: items.length, stufe4: 0, stufe3: 0, stufe2: 0, stufe1: 0 }; + if (DEPTH_CATS.includes(cat)) { + const details = []; + for (const item of items) { + if (isIgnored(item)) { + depth.stufe2 += 1; + details.push({ symbol: item, page: null, stufe: 2, ignored: true }); + continue; + } + const page = mapping[item] ?? null; + const stufe = symbolDepth(item, page); + depth[`stufe${stufe}`] += 1; + const detail = { symbol: item, page, stufe }; + if (cat === "contexts") { + const sym = ctxBySymbol.get(item); + detail.goFile = sym?.goFile ?? null; + detail.hasArgs = sym?.hasArgs ?? false; + } + details.push(detail); + } + details.sort((a, b) => a.stufe - b.stufe || (a.symbol < b.symbol ? -1 : 1)); + report.categories[cat].symbols = details; + } else { + depth.stufe2 = items.length - open.length; + depth.stufe1 = open.length; + } + report.depth[cat] = depth; + console.log( + `depth ${cat}: total=${depth.total} stufe4=${depth.stufe4} stufe3=${depth.stufe3} stufe2=${depth.stufe2} stufe1=${depth.stufe1}`, + ); + if (cat === "contexts") { + const noArgs = ctxSymbols.filter((s) => !s.hasArgs).map((s) => s.symbol); + console.log(` ohne args-Kommentar (${noArgs.length}): ${noArgs.join(", ") || "–"}`); + } + } + console.log(`GESAMT: total=${totalAll} OFFEN=${openAll}`); + + report.schemasDetail = schemas.detail; + writeFileSync(REPORT_PATH, JSON.stringify(report, null, 2) + "\n", "utf8"); + console.log(`Report: ${path.relative(process.cwd(), REPORT_PATH)}`); +} + +try { + main(); +} catch (err) { + console.error(`FEHLER: ${err?.message ?? err} (reine Liste, kein Fail)`); +} +process.exit(0); diff --git a/scripts/sync-server-docs.mjs b/scripts/sync-server-docs.mjs index e964824..8139887 100644 --- a/scripts/sync-server-docs.mjs +++ b/scripts/sync-server-docs.mjs @@ -3,7 +3,7 @@ * sync-server-docs.mjs — Single Source bleibt in den Quell-Repos, * diese Doku rendert nur. Kopiert: * - ../tibi-server/docs/*.md -> src/content/docs/server/ (ohne uebersicht.md zu überschreiben) - * - ../tibi-admin-nova/docs/*.md -> src/content/docs/nova/ (+ test-plans/) + * - ../tibi-admin-nova/docs/*.md -> src/content/docs/admin/ (+ test-plans/) * Fügt fehlendes Starlight-Frontmatter (title) aus Dateinamen/H1 hinzu. */ import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; @@ -14,7 +14,7 @@ const root = join(dirname(fileURLToPath(import.meta.url)), '..'); const serverSrc = join(root, '..', 'tibi-server', 'docs'); const novaSrc = join(root, '..', 'tibi-admin-nova', 'docs'); const serverDst = join(root, 'src', 'content', 'docs', 'server'); -const novaDst = join(root, 'src', 'content', 'docs', 'nova'); +const novaDst = join(root, 'src', 'content', 'docs', 'admin'); const titleFromName = (f) => f.replace(/\.md$/, '').replace(/^\d+-/, '').split('-') diff --git a/src/assets/anwender/anmelden-abmelden.webp b/src/assets/anwender/anmelden-abmelden.webp new file mode 100644 index 0000000000000000000000000000000000000000..7bd23620bec6f3d311b785cbc3b7be3bb9aee916 GIT binary patch literal 52438 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

Iek^pYbZ4&xL(?#$-oo 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/anmelden-login.webp b/src/assets/anwender/anmelden-login.webp new file mode 100644 index 0000000000000000000000000000000000000000..4b3aea1cfbf938e1bf4670ea065e8050ab0a07fa GIT binary patch literal 6928 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/eintrag-formular.webp b/src/assets/anwender/eintrag-formular.webp new file mode 100644 index 0000000000000000000000000000000000000000..34928a19daf9889dcb1405ba26101eb78eb3f749 GIT binary patch literal 25972 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®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 E0D8!I?WV=lr_AZvMz8 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/export-fertig.webp b/src/assets/anwender/export-fertig.webp new file mode 100644 index 0000000000000000000000000000000000000000..8f25b6a01a4add2a2751055a0f29e3a7c4456603 GIT binary patch literal 34022 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/ki-chat.webp b/src/assets/anwender/ki-chat.webp new file mode 100644 index 0000000000000000000000000000000000000000..06d12b9a322c4af370e5c214289c86f4512021b8 GIT binary patch literal 15798 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�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 aF1&1x?gkP+R7Y!_Y2?6S7@7aFt^WhD?UAYg literal 0 HcmV?d00001 diff --git a/src/assets/anwender/ki-zusammenfassen.webp b/src/assets/anwender/ki-zusammenfassen.webp new file mode 100644 index 0000000000000000000000000000000000000000..ec91bf4ff03e3f4c6378a2217a272eb763190b08 GIT binary patch literal 16606 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/lesen-liste.webp b/src/assets/anwender/lesen-liste.webp new file mode 100644 index 0000000000000000000000000000000000000000..a7488f26ddb419258468f6adf1ff92af4f33a6d5 GIT binary patch literal 32554 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

!*;@r}gxxi;kDi1p!62HGTm8(@|YoRI9bG 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 H*Zsc$LvMR3 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/lesen-suche.webp b/src/assets/anwender/lesen-suche.webp new file mode 100644 index 0000000000000000000000000000000000000000..6fa6a27d164b269bac9999f9a50b4ef2f5c64d60 GIT binary patch literal 19978 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 Z0K}ecnbc^i$t#gQvGRQ6q97Rn_!lhdhtvQ7 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/medien-editor.webp b/src/assets/anwender/medien-editor.webp new file mode 100644 index 0000000000000000000000000000000000000000..be4fad21095a13d945f531443b991820d7529213 GIT binary patch literal 53572 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 YqvA~ndr{c)f87|(1VZ1t9{}+G01#pqApigX literal 0 HcmV?d00001 diff --git a/src/assets/anwender/medien-upload.webp b/src/assets/anwender/medien-upload.webp new file mode 100644 index 0000000000000000000000000000000000000000..21289df5cbebdc403d4d9c41b955a3417512d1e8 GIT binary patch literal 79420 zcma&MV|ZoVviBX^wr$&;bZpzUZQHh;4mx(yvF)T|+gwlY`#$^Z=bUH1=e+B~ob#I3 zTys^8QKM?C`u&w8zkg@r00vSQ6H!o8;3A^>bM5d1mJ3W%03HG=V9SvvQ9@EvK{_8< zm;fJXZuh=)DbQ*hv`Jvj4~j_Nte1S@looMG@kzw5oq!Iu;_r_*?Zg5q`!BY zy(f6%S>!67gZQr30x0+Id&2n2{eqq8T*Z9(@$pp(s0H+X)<63Lmfkb3N8ar#2C|(z3Br0Pe1^`<<`95D&s@%ey=tE!AJPh^&Mc(-?4YX z%lrkf;Gh5X`d<7+xN%PJH}u(?377;Rem#F+zV3VwO#06NxZf9!uTKO={6_(-uhw_? zukH`|&w{^u-34cT+&)*n{9g#$^n~99-*?^#uRlY4Yu_|tg2sdy=A6!nXPjm1exzm{<_ z+*F*DG_nSj5yqqMH|b#bk7Vs)Cf~hIfZx2%Y=?|6nZ}$tdyny238+$IaolX2r!nt@ zE9;4-HU$i9xv~iwD!o@bLn)r>LaED$45JHoE~sIi!P*lBhM#D_Rc)%c7U{l;&9A`o zfom`i>$+Txvu43ZIyS3T2w)E-=O_Z84?4WJ zd`R;D+kVRvZo^R8q`i|~^}=03ngGMvGjn~~*iG-8^b%PDv^hjLV)WTuJ@V^8pO0L= zCMpD+=hW#DvBY3cEESx@4zlafZ&urgdzoTJ!pX|IJj zX2^bLf-_RIcd~+8@2FEdsSLW#(P1JL6QQ|H?{$FR{KP?!OG&25{L>1%Ff&LAn8qC^u z^lb{{I6`FG5}Uh>LtjrX9`a=WN2!rF32HF897@(f<~FQ#EzC5tQ2(E=TEolm(r{DL z$r@IMn~MLJ@%wB31=l56hE#iO=P(let30wy@(UxgH?*UY^TjGfD*9;|%Wkefjty`k zF}_hKt2kKhq+%?FIX(&?{BwN%KYwEP^1BP2KVLQGnH9D;^X8I+1lm7?>;HD`|FN&i z7h-NxYQPloRY40{#uVFTSJ1iw(mhN#Au#yAN9n(Nkpa>FAGiMs`vB7AbSBnD!>UT_ z!yLL`3XC<@tH9DuIg&eTFaz2~ifB#j6~#_3zT#6v5@RMQLTc?#qMf1cF4Y@lB?N9d zaDq8u@XphJyP(kMLOenf$owR?q!;-<;q<(P`oHABCeILsBZ}{4GSLQn-5C#s7fs$!9&#glz z`f)>SB>O5k~Zh|~5}7c!Oaq6^tn2%;Q<3iGPY;aid( z{l60?K8zFcbYVksn4x<-WK=lM*SSO8D*@-e+tv3)24d(e1?9L@Ofd09XTP4QGb3Oj z$$H{Hvi+Wa=^@T7Si4GJTmNrDvIvW1)*Gcp|2#c?PkgkszuOi0xZ}fo=9jdfDQ(_c zG4WW(=2r2rlt*vi#^vlAT85#UhJT9h3NrC*D6EE+{y9PAi-u@;WX91D&iup&o?f~( zMh0kno10d)rk=J?TUcI~>MF=ouTcs% zj!Ei&tdXjq9>oGGJ1t?Qu!A}z3I%qs7juDdT^vKGYN4sx#Vix<;C|<$mSn86i%MqBmAt6eX%dJ{L<~Df?dvaS3O>Ml%0)Rd}w%ibFg8p zmF(j`pO_+um~CfNsqnx~`?05_vHfZY4y~y;_Z5cBrkANEpX43Pj<%pXLQbT$OUrTf zqif?gTZy+0HR{(im_y3SUuxxMP9Fiit2{9qa^LBnWh64d^*q!eoIRHQnIBliZMG$x zg*PdISJ3Tg6!E;IR$h$#nLbI|pVMcU*W2@i5LTbto{`L?|1lOST&Qn#eq6jen5DhU zj0(u|mlYOsuSHG!4oG5SowA#EX)~#5zsxXnB|;L&YKmOyDlks~ z{i@a@Y^|nJX5tn3fi-G}q9)Ahkve_%^M!WN{fdnkU1 zTf@O#wPsTbR+Eb?&5B6J`_bSf{se?Rqz5TnQmr3afGeQL$Ig$Iv(iUF?VGM@pSd;a z>vgX$RogU2NOI(ZXkiDAtd41kx{Ezvru1H5W{r7!r-)X%sy~WdukhYSLx#}IzNK?%3QD$=l7S6rot-|P7k0$=_X;5 zW%U2lw^LKNcJB^MMbh2@jms>odCq^y8mAZ}pqVKdrnt)5Kof204{dHsP>kw~E5a>J zvaHHKemlFze7?nUUMv#kzHZyiSPYwNr8fZV@L|nul{-P!74coUJfK)NF$ctKMGpF> zT%lbZhXqi4MEk)Xmux;9yp9(v@*pMR8*$V2#gnJ_du#RAxJwzszZTclO6wYnNWT_a z=xw1YxJF9i`d&N&AqNI#H|MIaGzW0vszalDx1SBxh%{6%;5>HE-$k3Yw)TMu>)GW~ zzZ-K4gy;XbxqatjIC{>n2nDBuPA=3MazI#|yw66k$9-Z%QZQ#VXH-iLEnsZ8a0COaeFF zgd>#8?kn4?+AAYrVYH`Qyu(8H(w%YVaN}no9=~@D5(^#906QpB46F!*S58X`+G?`2 z8pTH2_W}@Vh{LgJ`4K2g+`Ochi>{P2a&{1HzB4D>RqU0*CMOY-;s-g(jGfsJg$1hz zIR}IIto8xU+4ZitO_~Lmizp+5Pa(^!(At#gE{vTI`@rD3&WxXzDu^`_HtZPF1Ror?KTBQIun5jI&BH~TDlfF@ ziGYur{GZ(M6@eEFbiBtM|FN@L$EAi40pF}ycBm%Hv`4t7vZ~`b=Y;)jEFgm9O+h-W zmFghc$HD8QN1Xz!6|Ic5>Gl5*N z+v=>)`;;})PeVkQGJD|1oJi2MlwRCEK!55rB@EmEx$ZC#+HFOP0Js_B4MSe~g|Ra} zT1V5%Y)3(K%;MLI%&}Thh+^XoMafvqnfc5hE5GGfbYhlvYZHZSjVi?NBB(C@{!j3>q(Gae3~%onh;mGfk=F zAy&CSSL~PzQ^wA_TSxN^=NJv`{9%MWeuMN3>9_pgMCXky99|v7Xshr+ujN&;`iDeB z;>O_QjA6oayu_7w*X9!Y=-cMl`RR-}ijj0^=|FnU?CH+ZT(aqu6J$|+b*&xAnAwKg z{k=_O-ns=%Y!0~l8TP#`r%UY*M8Jons~r3rjQX9C{w46%;$sOIc`Z~EdP(IV{OUJZ z;=FuchoQP{nu5Aowl-4G_C{l}+4x)N`pemnPC1boE*`B|U#RaCSnN12N;1U2g4P&_ zAhyM9)qYCYJynA7Mg)*K;OH@mgCGUzWQ&J$$nQsGb>L2YJiBQR6lu5GN7(`UfMqB- z!8w8Olte%z_t&$K(U4+n4$Iy>*if4`y-ckwI%6G#yB>=-S?v-DmsI#*M+8kdE(EmMmNlgq3A_{3 zAtFQe<|dv(+9wsVJecY}Y6hJyyp+_TmOuNZ>TCVT(kLaPS_s1M+ylJ1(r3rqk@vw4 z2iRsb8PDP&!C@`7yZkRPQ_ztJbkOgPp{MEm_Y|LJZr}T9(;1V@B@SaXq1|X94i}#a z?P676O5J&=rhi*j!|@WRdC70>@@YUum5v-!Qx$r2mKSH8B^19I^!g7{`l<||4NiPq z_^D`XfK%laTJpnm2uutA4ig|iq5gRkRuo$CYZ^Cvl1B4hH+s63eQg0lWj%NvrW1K* zqrUD`?Uuee*sFcON?BX2=9w_^)%kc<1jLAdSPlkP8;3VDK)7X1hCF479@&Q(PgYXo z^+^87j$5hi#8)LnpC*rEbgu+MY)r@f*bEkqw%3@(@)QI3`f1cu=@C1zx}|6lb2!I{ zn2;9%!ue4p6xj4La2&uS0g3gyeM=TwqD250UTC?ui500j$_yzTq(vxh( zht)-Lnd_u_RJR#B&Q&2LoMDqQaWX+iBI(5{(wI8q%I@x7Ot1p~(17TYdtOnq!iZ`l z{`k9S&FQy?6GLm6IR@gXbT+EYB2}waQjo6t< z^uREU3ZzW_JEXFE!#vmO*k~CHu`K{UcRGd<;Of^%zRkf>HLu@vNo(@R!7jJW&AKr-W#7RH+=m2t)>OKj7W|~exIVT@Cr&% zoU-)sXc7Qz5)=^NW`|Mv0kQi9UY`beoe*@nKJ(QwrTH4IP-R?&ink=edrJxqNI%@M z`PsYOYy#zfUwZp%35;bBH92yF?pHQ*&%wxfGeTazo%wh8lYv1lbX$f#el>fMt9ysy zfcL@e#)ukZ%YUYMhkgm6eu9H~Wa3SW8TTGSEB^$jHE*%7w#g$Y(uocrLkg>Cyv|W9 zW5Z$;x*)&0y+0xzNpB?aRHTzp;m1(7#b)_yYktTyelZbKTsfKN`1GJ9aIQI>l`&>e zqe*%oV*JRK@6I5DHAj)glA1P#w&|f70aBWN{H|Okg9Z@!4oA&4r`Wr&} zYhA&r&PPr7j_pp5BZiGywPP_ucl-m1i4kO+RCYp2y`zz(Zkd-ieQ z1HlG!0-lMGQbWY=M`J>(H;9D6=yzY-)yAiSKmfn2AE=~~54(lCHcLYAgU(E^F}uEM zB}H}T(LX9R*f2(mVp2zz!jm%IPD`x+&_{(u^`0{NmsAT_bf~FJbX21{7L}r>;HlJJj zJtNU^^~^!7lW2H}rgEau1S_EZ=74`RZxXovG*hZPdkr(?I~4|5{fp!^) z(yMLem!l#{c{w%%0^?-`c@8|^f~9V#v-M1x6(S9&ZA_Z!W-DN|Qisd9kC>1a#?hU!}>&lmnAKB-6En@^A zi~5;%Wq*qjAvw$2J{WV^OC>oO9`{OobMNwNq`)IT==v7jr|E5i#n8YqxVrbJjhAJ) znUUATe*I#aHAXggeF~(iAu1OvT8na^qn{Bk(ruJ`q(C>^S_<()1fkYc7$WMLi;~5W zSV7e7EE(OZtQn$xKwQo%OPJ^bhupF^*8?@iYUU6%KZ?4rRmq@yhIL5Vq4GY3X_EFd zb!ibbrHxR9H;(rwRoRFY6X|R`@V<$I$q(7^8AMbI+5FSZhbU#-+M{_d$xqeO&_7Mb zQC|J#H4{@HvLXWehp5;#P8ACMv26F%`Jr6Z?@AJKV~{?hH(%qBMNAetKz`8)&bkTT zSvk|j00NitMhPy9i)zmiGvHSW_O+ag3vD11TRcB?b_h|Vl$9k}F(1#*(L!3RacZO8 zc*=yeZA87CVv&H;#+EAst$zWx*Un8`*+te^TCyC{8*EpfGBP@_Cm{4F?Rc&PFH30^ zzAFuldP36c@^BAb>FT~6Nxx>LVy=KPJ3p(NJYx24(-ir9bcItETm{}>f?xuJy@a7G zVeCp&%pQ`NR_2IFE4->z}s#nMA>X4st(2-l?x4)}efq#W*vMdl{R)S&KB#+aCp%vu1<`>*b3MTL5uyjjmS|$)`2hnaiqA6%D|fhV zJ3m=MRLbia=})Nn3tpsVYGvUWp-9OrmMcy~xF#@EpWOkrZ+!19Bp?IQ(;Y$v#ZYa! zGz)8KDD>Wpc+1*5v4W(o*z@=#l|44??e&b@YkP;C+@Oh7o)sx|rfye&8`jl7i}wk4q=l?D(+F z5!|4^YAZQ8=gE%0s+?&BTStCUh)u46Jn7b@cc61KbNj>As(o-=aeH)o3V^S{n^YLF zX)BFy=Cb?7Vg%J_C5K))h(nN7;&4u@Q^{YP3?}fWO0QcD_P;LfzbeVWRJ;KN2!$p& zR(yOv`_qNS^F`80Nv0TJ(DaCo+oa>i(2Y4C(nB@iaE@fL!S1a+s5lVaftXTLBPMuH z&p*)7U30sjTVu#h{JonzIYJ^+P`{OlQ|1aKv@Q18;D@1uiwo6Gx_kvGmrRm5k%NnK zET#p|kxjInWL{MDrw8r4eR+D00nT0Knt@4in&NqKhSbS4=eEyvWGGp73=U^R)iUG} z2^O`$Ifp27^CjF-B3Dasf5Q=dExJmkBo9yMd@ z*(uo4UOc;`r;Y1r0SbuKJnjHfmimFj z?`HtV3T~6bg(AgiT9MW!JiQ8cG5*i9wU!qz$O|5O_~G8e~*Ky2MRxnZg7upT6MA{NpQ*@aSF5;r6ZQ zbUeN%F;Hjk?NK9xrmxqLY=m_9J?9e%^!4H6`AAPmSj2s}M+{i4Uz8y%ou(}EYRU?z z093?jkp$`yr5L4Wk5Uyogg3zpYzS6O3qsN}LHl(i$@7%Y^r05*#xuT5_HXiW^4R)& z^iNZtD$Gy$uK||yO*JL>7rdyDD!jXs=fp$=Tr^id;5a_fn}9`p^jApp*$+sfHgxKh zdXUB+amtIx|Ab^#CWx9+I%* zGF4uOpipuegVJWeLj zVnd%yV5$t16iW$%{)#muakrXBg8kozRjV@r$xZu@wt@qx&z{1|oA$ih z^G=4lRatYC{0;Rrl7k_eR6hI=PA=`oHat!M--x!i5?nO&5i;H@6;}>cEvWFBi0-~( zM=Dk8z|dTSA*uU#$&#;=iL(nBB;P!q=dQWH57I|WGipmsfIkM~0V z6Apl`jm<4#rhrRt^$i`AR(mXyQk+oqFZOj9$6q)sB;T@2=ITz9k2gtXN0$uh(=9pX zw?af2h@X)jM5nhr|d-q@r5>{v(bY&8Am_o+izy5(iMho}5Dd67wVzUqCW z_TlMVQ|TT$&yT~&jeL!L!nKu!I%I8bFXV#hZk}w6BFo*qrSj~0jaZG=0FEfbibL!sb|E4XJLIl$Air0NkpY{^s~ zp+2`8e@Zo-hVT~im`0x@7^OD!zP>BD`4NBJ__19?BTr62o?!Sx!jp9gwTF{8{7D_i( zI%=AKnX&7e^4QULJ$J*m(0vfK_6l5(rU%;~2qR_TWsYsLg}M+#oy6E9R2QIdL9rZB z1T;s)xfD6QV_x+EJsr;80_P$gpD-S_lqh@uq)kE1#rj33>;6Qjyj=^ViKAopR575; zAG?6vU{e1$q{}J4cr?N7jfA1%sz{dpTO18WukJ@a#MtIo-T=fOHV1P8Mz8u;n){RB zB#lgMmeNhIPE!W>sn<46syI4V$aFq!#B+@7wb*8KBqtPJF{#sirRqc-=6stZqouXy zF3s5*ECJ=(#FLpk3=+YOZv8;UbY^|od#je1Z!XY!k86X?c;Rrt?N_l|2us=HUJrC& z_H|WhV8^Y*;D0exZH+Csf8gbGX_nvo%71ugJDyHc;v}>ok0CI7W;8==6v;8Dxqrhpk)GMBsibT z4TyS=Uh4-U$JqPo3QNJ>NigrDxIAwv^;F~9PU;ZWdB8u4*bsW_+j4CQ6=4G>=5rLO zSXS+5zjbohjT@*K=8bJVEV`OB(BI7aFPg|4NJHvgwlSu>@^N*d+g)8p`Wf+MgFz3v z=kYihp?WJQ&Hx4>)O^{Z`s=sq*PRC=XW|ET2rY`V{LB53aw2o zqO~#_4nqd^H4FfHKGPuB9UxvEGd=Sgr%0<)>k~P;i#WW)=TX;1c00sr40qu~aC*p%k4b{fzMq9^&WMLxwZtOh;X>5su;_|Eu2p4d95rmf{Au z`ePxH&w2E&zv3(3)F z04tbxq(D8@akgP~ZL&3f=?LoEioSxPNF(JK0y&BjR(^&=}>TdWCa>;+MTS@7Y_#@a*bh>7TWe|*vAr&K-MYcNQh1d-lDiy&PmPNSml$;8Ci;0M z)ws!4iGDR+mMv27|KYY)?LA^xaUB2WT4j9^5Q3>*xX6sse}+Dqo`Bi@>M%md#rws_IugcTxs^mJNXB&i8>JKak>lsG*v}_w$iIr^-$I{1Wzy;*ETrly zfX1E-0!LbsaEV(Nrnl`jv~2|^(}D%Zej*mP9^$pWraLQSZl{gB|86J>-D$k4(d;3NI+j-&H+GweaNP7ZkP*JO~CM3 zi})g;c`)R6EOxChIeyxAJ+2kSb=z!lTd=;E=2XfER40`8Hr0=mskLor+--E3=)|#dvWOr20Dm@(BU_)M@PVF9TjqRMTKwg1@mouCzqsz(O(>`M zu=2s~)-#tJ>#nhS`G}@dwpr&7d=kC1MM_0=t*SG%8495uO#}#HCPK|dZwFh&-W_hy z@Og5pT=o(8P<^CI&RVdL{N2>Cs_uP72Npj_-y+x=?4wrmXl=cU)V`0 zKR$9;Ckn8(8aipFuB+u!7s^c~t7CI_>BMz+>@&u3x2$#OAnTpU-TOFp8xbR&(b2?idTS3UvW)n3mh1wvQw|B8fC_ z;>BQ?XZYp!1lpX4zEUGw0kJE}+>w#D0_2_?SIoiY7VWhnh5HxFt%iW#>+G+$1{EyL z2P@OV?`^3EsK)M9vvVt^UD~yBo}{} z77i`bt$2ut-rR2$WpS-`Ovkqiatk7-i+G?7oB{u~}=0LLvYAf`K%d_Jt2d#9wGiXbHl|Iv(Td$M`E&%{qmCsx78zxQ|hjr2O;LJ}4T*`_!V*w*nq~ zflap=N3IT1Sa!x+CULQ!+)RNUOHas^>er3cXo~J%2`p736bGt8iN>PSe%~x5;Y`dQ zU9c-pPV4-5TgiXbc-Z5}qle{0A88FH4)mFlUC)CfrgPs(%@Y&P_wo6M(-0P4DT8V$ zht+%s$Ja)wt-kHvyqwMRMVKR36UNbfS>;y9LS;2HaoCz8LnA{K6LHN z=TTK75SWc+4%X>K_o$v-eW9fmKeU+zTliSxB217|`3OetqqrXk(EZhqAq(fl!L6&7 z?X;EXyIBfE(nYiV2Er7co+>VCxQy-n>ys27oWCcq#}l4X{1nra6jY5)!?RrZH2Pz= z)pJ#t&JH*H>OzCLQZk5l`}AbFbma=t>LJjqs9licod)e$Rilv_sy*drZQm?$MoJF` z?Y$bWeN4~09(kSbbz-B=!Pvan4i6ez1N+HCkS*5KN!p=V;JLPdNe0B2_)^dH*SG$4 z!`D{G-_`xon~K5_x)t;__cG@1yl8{^Rn)yl#bPRLpEJ?4@>dU^M*3 zFSNUG_+&Y(odZTdKx*GIxCs5D;UA)`ST}eq=nlop$xE5NdK8jBGOt`ng%wT&N5hSW zeB~o9CQa7$>i3t?QGzs-zrK4=GsrzA8_}&*<<+O4>3oJfagLh_r~B5X^&lT`xkrVx zV!^%o6QI77kgP|?+8_y<+#brjXw7Be!U(~G^Y$AajjpA@ zawy*V=ipm$>F9I%|-Td~%o z@iJ4(uw+}HdHFqdOj*VpWTA)U*j z%(>Q=ScME+lvPhPG(Do~yyR^21?}6YTb-j(&gvyCFz?KxOz- zqkn2C8;gs|S0<#K9h|R=hY$kN?A$H;iH-Jgb<>Q>j}6j-G$&vCb+F>=mMM24`%;r? z9k5*h`9l~W_Z3Ng7y7Fu)=JksacEz6{ax#8=M*{J!H<-`c}m!wjSpu@Kw%;Iw}NB$ z!bk>_IoCzu)uEGTAW?Ecg5UvLi+rkqNadTUmecE>`c<`ZYh&E5Qc& z72v@+*>@1!ny@%A2j0uN21gz}{rzX5YwL-9jFRTuMgptsuF4PlTH5z98;`A4Ai*Xu z2XqXbo#J3Aw@#d|$0=ZmeHZ1SaNID<{&}mKv}nr9-8ll1poj{aTw`}uHk!Y8O8+?0 zYpG~B(Jsp{K|3IPEV3do6P<}{XP90FuO_N`R^C6K!^N}FN$Fj^A7~lY2%4M#R}dA! zJBFu20F5<3X~JfaN>djU75l1)NjMN!MCe+nJut?`A1N6~ri5SEExu_b=okBrvA;@H zF|g?kj*g`rZ%|YW>v(~tVra)76cs~1Qm?2O+V%uP!}PyD>Wfl(U(Y@4xf39-@h`9c zb;Xl)ZL+hD|2zKNAh$xm5_Nl~yK`xtqFHF~Rg5|vpn&4O-|>Fog?>Q9SExQsj^$F9 z_i`O7<3}^M3>9d4u#cg|X+9i%72zV(M)y+D87HyJg0PmlsmJL5YK;r2WM>8ol-cOXGZCIrhrXydGi zremWz-`YRjcbl-x7qzSjcYcg*nlWO&Fn?L_W`LAfwRI?24ToUo0FAeVTVDvV4Hxw` z{T#2_+iwwKcwwpjHjAxU;tlz#70SFI#$|i4+cm~AJbgx3?8}Zhnje0B^TyD;y88A? zJOoH}8&ul(qB|!_2o^%GtA?6S>1~||SIslVv(r*BhIniIxd~NpSfR+fsi{AtIwGiu zOUro+c*C6dlBHcg{x7Uj%lnkXzC{(dTY}U{asP-6Z?`gWK_Rsa%rh^`U_!~qfgr}zVRvXa1^fAbuqWvXJ_g5x$*a(4|h(^(*t*y zgRTf%PXr6MbY3zd@uWSFlNC6fWcE=oMUTsVaa`u{=O!Tsn$Avy$+swnIaHM>NJ^|v zKrtEk?a3HE4C5vClX!P4UiI6)aTt%6m2K0=%zv= zLc4ZhIxa?BLDK!w)|q|LD#$N>!I)i(!=~)*6%3}oA{ip)x}uUSR9II8WVtvOcnMe2 zv*MbyPztX+LmN`H(_rWEwW{23Dyj~l&`SOOxB!B~NCf1Q%lMmiofsbz?+Wkwmpq;mK+$>WI33lE0m^yy{PD z4nCtV5Rnn5iU4$bgMDn50NoqlLtG{iGFu)=MNEpicR|nb#mnC|zlS5G>Bl@q4ukI@ z!tYQICUL-(Jkp_Dh$D%*a7J8E4gkOwREq544KuR%<6SRq`FCRa98a83j)|{RIhhZY|ak9&UZ`8pRHI+RzsE_X41zE@IfZx zhsrZIj=IIVJM8drDAK&rVP>`7ztf8$?|4JK7&Gb=X)Tdw2PxNK|G0HLMM=tq?C%8| z0Z^P;(^kz$XX;VNAWXuh2gEu4mMi*?O#5A})S&Q|2i9>oaw~E7JN{U9)gBWIXj0QW-_+3X`=rlN*aXm$u%tB!_1?!3|>$;F~!M%?bvFhe8*zlw74Pays z1OF@`It64GJBD76&bWmpj>8A61;%kA>}rQyhal!f+}Aq4*9cBsm2@-o+PgfuB{5T7 z+q2_1?TpeP=!8O6JPTHA!WVD+%ILGH`W4XCh|pZ#XJPyF9yi{4p+f6+6?_;ydQPHM z5XLs5|8U^%6NDPrc%GfsiM+yXF_c}&Fr=tXi{J8r_SAi;o|p)u?8(LIL}@7Kz&W zh~;2m6Hsaknu1(s6yARDKFr6HL<9OLdrO}>;g?jUoH9_jY_UcSPnWd+#3;ipEsVsx zM8*)g)gMp9 zUt=7Y!*$pmv<8O2Yih_l8-JfdzE3wHk9Dh)xGQaNzAyPs0k~|T@yL{o^xflwL^=hUA`WI*4Q_dL1YzgQ>n%10ygc_VV(8cE zJ;EE#SZmW57ufGnWJi)_qo<>|R|7^AGiWOe26+qk7H$tNqQ8#qS@J6Hd?&5cO7yaP z0bTAFu1^#Vf-yh$?or%bXSD^s0r#+l`%X)m=2GELG&H%-SFwEq{~Yf8nTI8UUFQsWYWOv|UvZ zbLo_nBbZ7e?K^RReZvGA{+xPK2Z7~g^X!cX(!(SI5t?BP#a{dEN<_dg!jE&qc{10; zbiTMS^PMivkuBlTsYrATk21-52`H~wDX)an>0Pe)C*u_ns;e7Zv<7fKi=~}ptyNhL zMX`PvoxoY79UN84xbN5b4@sn&tMlp2Z`wDV`p%`1A5_)G{*Y|May0__Z0apx4Dg>H z50KFV($ob?0*dHTSgb7ro;+|i=B+8Z1p(5RW&PSPhReahX<$GU+n!-3k@^E8JDO9P z85>)q^;bDA-U(UCz@+cl%I4KckX57D-i1&5XW15D*M@s=Eyf=YP?uTG&1Wx&>y;2{Ti9S|yxR1nw%V zLFwa#Qf;#I;rO9g$1)u2peMc{c-gc_v0=SM^(Whezy0{6c7Z8~#&7P?#U$0cX_Ac) zs%)8~x*x5mCHVrvxC^K>{#Eo$aP>A>0oWGJ55svqENVjZkaUZbN8MLfZ=j}8IOf( z!a9Y2&ztny0ipJ4-1*H1C3vyI@T~qyC=r;RxhX-^w2zRMT5`(N=Z@EUa=PV95;P{v z%FJ8t_i!|^G&>p2A}70o)pJ&V=S?~?CZ!~Dx>I#o!$dT2UDDRm;C{)NpBx)B)Z*H> z=&sp%;$$;@dohX#PN&`Q+&f@rDv#Mz&jWC-=hHO|Y#CuxZ*ln2Em6Gtq50d#jbFFQ zCtM*pdRelxswWqoYv(SF%onuTL%nZIqSK_0|HomSreWJmSx*d_BX^qRBNVV3|6Se< zS7aSs)GV~nCLc;j>;y6aB-dgZnNTg~i>bJy1MWd#qU%w7slL2l2g%!5<|A-^%=o}w z*{cBnoz~5y8Jx{yGMza$=LRL+TDNrPhQJ53kEYlOvEzpMWOz2^oTD(Nx7^@jrb~Mw z?wNVbL4RkE9f2?=c}@I<;wr4o+%zWupY~_Irytv+8-CeSmIyF=m>Qm{iZM_Z_xAqd{K%%b`y@RsmMs+-&)+avpD6oAQ^`(T8AgFAvqQ z)Oo#~ZI|bsX0B-0{yK_9`$yJR)n=}^k=p#SRH;y@?CYtl;S!m2$@p`vL``HppZhp0 zIDugpXvXBD3Y_MHK%~+H1?eXDIY=lA0x#s}W`Lr-F|kpxEEfWrW4cY7Ihyo@w%?Jv zEVAAuP|~lbF8Fb?bZ!R9G#~V&N)Aw*YoB$SOM$B)+r)C_1Twrc?(R3L^*j&W)XYJl zF{ZAx^o@GdvHo8DfTNC-f&9?2YRI%|zt}EKB1hrnmfs;JpU+t`;7uEQ%%jL9viCsu zPyMJk%t@=~4+i%-=oOBwh%1 zy+@i^O8xwmWf&xG`oa~nrF9r18d}X~1k-p9KA^J-6*b7afA%KnnfHyTgRQi8m7SxZ zd}8spt~;ociYb9Y68nHQSD@yZLN_oT(J)aj*RQ?rZ$P}^averz>00zv7f6vT;S zDa+DH^IOcigkNmD?pjbL9N_xXYH%|cQ_@}2;R%B+C0(_S6jBoQj5AFL%(o%&)?f8F zJuO9!WB{nQ1alc^Rd_^xO$cf2%4!;OeA6(<6rJ&0C%CGUWdAA`65?i(h5+wV(r3i9 z6!dSE&h!GJk9b%KJD6|1P(xl>zG;3y=0RtA!}eHeESh&e5}pUjc*x1=spv`-Ug7c( zYGA%K-F4j2*#(qlTIc7D>~e zRDh0xp``qrSaL|BBw)@<0w0~H5HMVufVoe+RUkZlj8ss@HpgloT3`~J zOb5Yx(p7a%@X&-PdO9s(ePxo*@n-i+n7+SUfIjGyv0!!;C=4jHd$>{4)7=Tlm@G@>k01C&$Wbgd|F-79{wyM+Pxwn265# zTx*#uHa1}c`mb3TBu9M7nR`yj?Iyj|EEJ}Dd7=k`&{6j~K?I?0mpA&GV(0{0_o4f| zmn%6f;J>vDEJ~5Q6t?=sVzJp!3aOaF%y{5LX}cXVm{x%YsRHwgf=_k9eBlnEz|CN{ zojUBhAHyVPO*y|1`G*GxFPTq1?k!20P3y93TNA9VVzc?4M+N6SrQc@_6szt!?Vy{} z5}Yy^w2ZdU7c7q00!BFqejk?hoq@n$i?LhG#_7OfLI`evmO}wm!5LB9a4wC)TkbnA z+g@+A9&sgEG)HN!JC|_JxMfkWxxYU0`!vI%=uxa*?Ya23p%j?-ZXexyufm5*&3cRN zW((UEv!*K@#xrO!E{&ooQHGq1EK0;r?{W4@Xi8R}+&OWEN3-bs z;`@I9EkM%0Vw#WqSWf-W2rW`0kn>W&PQgzzro2okixH7_jhpN9PL60D$?`<*^DK|u z?7)MpM`so5!mN4U&k?VPu|=|0KV;(Ah%@4~1K8>`P1KQnneB?K=tf(L?@TI68m~Li zm2SO>(A_U;}Qh9tvKm_FJ67rxWg+~J^=5S)+e{~zcJpz8X{K_iUQ^@U^m$Q58b?qi;G9;xasKZR6+mK= zsB{2(K4&eNdWxePvrar0{?Ah?uS3<*JBaMLj~88!n28cHK+RD=vhjJb=o3-8dgFf2 z$k0`}!E*{8k!CYPfpP;O|8^zxd$!WrAYbR3X$TG5fzXdwGXsAfSmh@abEqDNdNPPv zd#2pqOBjw=vYwa7Z~CMs>S9*RNICqTsVru-Kjpc(G$T*)D@`m+q$qe5PZSx43C-!; zg| z0OW3H5x{s+W2|&yh<%Bc=s92D7S#=DP#g?)$Q2Kfc)v(5?9I@O51;5sx?KED*<=Bq zoHyCLYeLP~pW-_I`UquBezMC}=s)$~#tMJ0Glu&%##|Rj`Si~=P^seVir6$lMJd!< zaezys)kJs7><%7%T0Yfihw%dGnMyXHyKj79#85BPQh$A@MfojI+LaXVcIDGQ}M1{1(ovWrmb0`J`f;Lm21|2BJw*0gZFBI(0;W^4!95k$*@ zN6jM54m5FSX!8wZU;TaTA zd;+p1;eQJrm4V;7H9Ck_!YmhWALAl!1x)V?`JlPD=9o(7!y{5&BX$2Cc{J^{BEAwY zIyNT2xD4$<034_FU)6UZ0fM!wt7SO~=cS-I%0Id4)KdUiztcwV;?1zGHX4@Y_T>`& z`faG>EGB{N+muc0*-SrXee@-18nR_UxON(#a?ZmAzmjs=7rnE$vgmK1J7wc_pTTXl zfh!_HPNm(8(^h&MUXdr<`I5{_#Ew$eVC0QT1lEr1g?63kx?Y2M@bXy|7j=;kN*(m2 zeFA&%iaD*DB}6w(xI}>umzFC2)2}uIxf(SbI!*GE60)3a_-;$T+BUMB_L(>(P#8j( zE2|aK21d~t0z_a>XE!TNS#CRT%ul&WIAwnksVe>4U}YzKkwqb;%QNJ?Ps%1;zC$!A;e zWmdS4`P88EY=OKf3(LyrfwC!4bE5oSDuD`Vx;8P``FAQl00(k|7|BZ}Xs ztWghN=DGb^VxbP3lvcdrs6p_-q~UO8pr6nZ|IL42nuKd_qH2t+(*L>nCngt|)t<8c z#nzl!ZJiKXjVpqtp+KtVev)$37YtSToCB0$I>>s?huE7g10HD`Zgg3Po^xe8mi4h( zq~}W3ybZ3izO@t6lU2mC7KRClrLoQSd*eB^!ueRf$4@BxLZ3Qz`O_R;lZH*>^{8*p z#S~Jz7VsKr+&Gz}1F(Vu0vR$h4R65)t8=PB{*HHhL-$($Bd%Wd0$!f5a;xpqorMps z+9?mt>nOZrZ?x++*L=7tegGR~_+wdWG580)a~qk02qo-LfL*T|x) zd!T-6o&ns1P()MjxRN+cN7We7tsvN(_AQ4?zilh+Tm79TOE;R#`)&W@NGeDC0z>O! z-4l0UeE+hadiXa+U8ag&P2{#Gbo2r6x;)c`-_2|t5GK21PN3icFG*|z8pHCDO!7#?6Rp4Z#euq?E(9GW{ z_a>%#LcYHz0r9At>74~@lam&>SO9L^b=}DL@nrVm+vG^QSJ+M6Q_1#+iLuSM#AOP{ z(Twi2A6#y}NEnu~p53B;vErgif1R<;=Ov0J>#yL*34ZVfb!ZH9B9k3<`j}>e@R(+E ze9b$QosIL2XK?Y)A(>Of7afSkV4M(|O`90t{|usJgOuB`V+ow6ZV@Wqnc9cfilte; z6+sHvU>ZFr)Z;}8*jH)e|H_Ud?w9WEib%=Q$N!vBP@J|qvVKZ>sbUJUeNueeW~3Cv za3hvFP1|ZR{nE!<(7-1Pq~QMlkheTsIV?Bp#Zs)=tNNSpgpytsc(XLQ_jg0r1VItVuAXd{SDw;)J(iXP$2+d26i_n6lB-nPy1*_Md| zCtX=3Fs{*#Q~(3!|GSI|`hr27GZlQyX?c5DrE)94rl_aqH5{`N9+!$MR+ag}^zb)f zbT&x05WnQ_r$V+x5%rt1Z$;5Y+mObdpE;^MO*J0IwBLjn1**cUm_%=z=#f8sCP%IP zAvlpmRq;+?I#cbv*xH+q6@p4&cz!FjtckKZN}sfd?g3M`6log5i}>g4xQek$D}YcXwW8PlKl82>7p-26*2_A+n#Bj%LI3pzm}K{jt*o z2BAiFJTTNw{5MmJC{wF~f3JGx_T8p85EmCs+Qjh=cJW^F^e<>3ZBiOkLL(zH@6vnt z$(}`m)FjCM8Zou~u<$B8kao6VJM_w|?V#L35WFLLzQ8_}+fvpiuW76JS&q8e54ZFX z-U3WAK+iDJRQs&iw+qkc5$G0{w$@HBsduW3{pJ%zzJ-x^}Wv#B;x~Hq5ufH z?ETiVPqryf*9RU)IoMla+h}5tr_=O^TTTF^?KZb%k^mN+bPXV}W8l=Eu>N^}AP2=Q z-RcyOUX<>3EKjYyef5}9x2U|w-g7tTjghTsK#;#d5PsUVB@a3IUY4E@~AzDRCMu_LV2jf zGibRPX*ub{xHS%>js0|BygOsDDDW%f-XVaLweH-SBa3)NOF7WxXcJPdr42D6FhjTe zoy_P_O0?C5-dsUnw8{=}P2)EY2uP!qx+-YD`VmltD?CgB&(1{kX?kVtlQT$dl?Zf2 zb)GRLnK5zdIzR61MtlbrJ_dS_qFOONdg6K5LWqKoD| zv*mmQ^F5e26GTz+6v+lA~SZ zNGg!9sOnX)$vjecyKwf4DT+T)c<*ikC&e`8qcDu~OuywYby{hGum7_)t3uxe`-m1s z5>dC-c?ud$9tM5}neZbnU4K{pg=cVnQ;3o2qJS7Nv8{vN$FMqx8f^BRq_o&(rH6vP zDKby>3_QLBCJ{<=t7gK_)v8$F!fXsHXd0^WeM3Fz065RQ555{hetRP72QqOf@cnl1 z-fYj41M@uLIxj6aQ$j@l)*s9{bWUMhq?#X*JdP0Q25`*fJK!loE1DhV(RC(4btjaq zdYn_1zxg%I$`%0^!izoJ1<-0?4D3u}3t|1_ON?y&1k((9d-9>8mf`Wrj3rf7#vySi z4EuxEv4CB0mePhQ4WSK0`yJ<^&bGTvIL^yNwV4YP*r00}zEUxt6eN8Vhn4a|x13cp zbs1k|?ch{pz&xUfAcQ~sdymun{F(I-oi%7MWhsy8PU0+7P~*5sE$o3>;gB(B-%W_L zuqR#eFV;N?C(_6t6}Q<@X-Ka|fETh)(MCGB=rQbG-V~-6nC73F;{k@HwKgur?EeG~ zr_#{Ws|=aflei`@Dme#QG;O zlSd}_@OPdfPH{&4g-XS<7u!h44We?oS#JM(pZjcMT-9k{1dq?%x1`=$n)~J~f4Iq! z8^J7UNSd1_rFy{A*Lt!*pH6@%1Ty!FM+oz9%ZB1vCaq|xl(3}}_2KryBXCw0kADgx zNCtR&yiH+{Ao~pQuXx-~8|E?LTh%HLO`&n?Q{Y1*%H2!J-rEQ^Q_g{rrXm9D)_tm- z@vOrVH-7fodQyuf=F!+Csj>Rp8iZ=hAdWMSntVt5zG>1OY^>sWU!I6 zIbh~L=V%X3`ZgJ_F~=~4=ork)*4!CL^RjJPbA{S4ETQW-|I}krC~iTR#W%5se5{ z)46q$;3xQXH}Z048_}US!D3;~w|01tP>VQ!kJl<4Vg8YmagbJw{DIet@s$@p?zRuI zf(!8iZWqX_zxKDYhkowDYZ&kURgS1s^5!$&Y@3pCt-A@69d7SM^*3R2hz zt!7<3jmnUc^L=YqC~VSHOl|1Va(eK1kN3UOjD{oV_|@s3oCLca+khp?iZB z@2IjG4NbJ{#NN!;HGJo(H54pAXHfw(5~WCFJ-_}OaIE%Wm-uqL)&MnZO;YeaP`pxWcR&5dGZ*k;M+Y;N z9`p30YVi*t`u<>Y6Suot*_RQ-ldcY9*Gc)kc!jZmSWYlC1K8ZKVkIp*mMqttugVMz zi7hrc;NTA`=oTC~>M*&O<(na5b-{4%xri9GsH`$!SZ9P`n;i5=_?Xa!5apF}j{?#t zPPI$;L(2E!3b0VPL8QIYSRoH-h7Z{RW8l^`z@@%9Y$eKnl@TZq?oIJdW5poehm$%P zi4*?qtk)tE4#=YLRdR*#NC}u>qM8U+k+cm*fmxn_ZQZYT0s|z-X*OGQ&)`sHqJon2 z`;mYogFL^Il-+}`Cn+Z=5 zP%wX1l}mN`rt=~=@1Q^K00fxdH@%GvCpEa`b(5_ zO`{AZ+8geNWn( z;((28M+N7M+m*6%;f1h+7PeJW4cj?TK)RM^N-Cyc*zt=!({nNjkU*H-qQ>Rg?*d)c zTdxTNj;STvDjh!{N~+c&rL^IOvr4Mb7wWl+V230mEGVwy_hp>f`hxxcJAHRsl7akcOb2m9QsA)eC1T6oz97$1QkPW>2nEXCeF zZG=IV(q0w(2J?^=@ob4j1MB!k$#Ug;;*z=;IpMw*AS1V<$|*r=X)0#V`&wJg`iepQ}F*_IFL(-SqkIwMXD`B zo*Mf0AC6zq+8S|fihVh8rDbL(or2@JD!(S<>i(R<~ZsCe%I90l(>8JLY$ZBs9{U&L8s zHiOq~q&f_H2Xp*Nst}7v0zdgpeHj`X<}8@crW}pbuZ`bSNNFLCtzw7K z2w9_buqrpY>SBxKQTh6%m@4>O#E{;B_l;W8hEtOqJ0D~(82)HqtP2k%YSR~vVP}Tz zZCfMr+Hxr$#)G|}&veMjlz`L~8{}|nXkDXnFn=2IbDHJvZy%D0+|Ol0lOyXd-jI`d z{S!<$ECkYMx1LwX?kcZbd&QX(e}onh4{Cc2ztLjj%i4zF=UBN5{sif3sK{()EPBQW z%YSOx%j9HgVf8gGxKbTd!&&PDz?kVI%G3&>d8o4r_9$j;WI5*?vC1&<7q&sZ?JsX3 zfKhkAAuM*YwkX+7+_R7i6g-OLz*D= zVC0!+lb9flT!6|p>;E%3!rVML!_s4%_3oEh2=SLj3ltz&l8SLUoJqh2@o>SQhTgFu zM0A5_HHrAJs?h6<%c}wyD+9BDs5S#yIsDmvC96u3qzzD*~!eFW4Pw%1G-E`>%h=TU2=n~`dz_bEi?>~uZcnG+QlQY)i2A$#2hRi@G% zMOz;-N^BLg4R9=^OpU_#nC)&>u>s^p3)916zQcdG|F;GV5muWQarL0E=H>lxCkCld zHn+mx6?M7~DA=@Ht8teX>&|NsA2AEaWWlY-qYSj*XZK6p$HA_4($T3<&A+Y=B$~V9;F118 zTDWO#>U5kb+&UUQ0dTm|u~1BUx>ks%hcVxOS3JTQxcl##Xxi${k!FS7#MDuC4rJ<+ z;6Xz6(u4YEA?Y9%`XvRhkxzqvDmsF*pqlJSUc~;?{a!I9g8+*kck8!RoM44+NF9W9 zBA!qV>`mIiy>rJ!Hwnx<{|)~zxz;G1WbYq|j3v;zz33i`$+I>1;LpYoD)CW#P*;<( zS;9Ufg>uExopTc<6l1Lo^x78i{$lfx`fzbp0qY?INHPBm(`h`!c*{Gu#)|JD&R&hm zP=rgN8)Gj45r--Ii9B7I*_8mT1gw5Zkv7O4J%0?d23H4K^7Kv$+78Nt^S{9-pZj32iR)Ww(3_*q?6@fLr&Dh>#Tr*mXgO zp)t-hsn`@!yb7dbAZL`Kd7hwB^qv5Iic7Bw+CCogO5mr4SRX&lG_}h&gA)f~)Q<(; z{Nh!VbcP($Db&P!SJ?{fpA~1gFobgYyshlt6{L$MFs^R|x z2zrZUyOoFnyL8nDx?{4?VCblJ5%m%yBmUuIt?=u(^05GdZSA=5awLc&P1@;SG)LDG zhsT%7rYcfKmTuk^<1nVMp}UN3Xg2U)TnF|VVQye!lbXZPW$+#V-ZXuQCTgwQqRCCR zYiefuf-GHPX+@C*Y8G%5HV5f^ET|?c3k@cdVbUD8j#uCz#5t);3ZeQ z6*ww)gE_(XqNmBRF$wN}mC?h%o$qRTy$uqRcC1!1c??l^y8iszitL{F$H1{C!-tlv zUEr77KO38zDD$W4#B^$r%W1>HcJ35V6MjbAsvELed_kvDo!@PE2Fc;j0dh%cE@naVm8iNc2)GuM zqFen{cD2!b_B8f#I?8rmH7J-HgV|ZZ7yMmQadrdE%=8o^-Gc`iBib^m>>nD)Ob4sX z5YRU%I6n4TFKnLs{%`1lG)~1|7}_k<1KVHhN$u4e2<*>u*EEoyr^qkNZ{`&mfaz?m zkCRZDb3)33y&VPCs`M35*+0FHg26Cu+_Czmd4t5{S_(=wtMs-1ZL|~Ao4EyxDiyF@ zwlT`l72e}x6~!pF^zcZYF z>(c7nu3`iaCbuE_e)(wO~}fRD$VZ z4?rN27^H3sf^Gl~apT;oWeDvX?JHcBnXxP}jYSR08+%5&H73p*2O4Ta0wjgWpGKXO zHwnKY*+oj|=}>5Prm{uGJylJC2BTc-|JcGMfN3EOD!{sqUw^*TM_gvCx9c_eDglJb z*IQ_S9^oaFQQ^NiGx-P)Lgx$rs=T35RYvEvaZYM2^i>r${p#WF57Dxh->>qyoTp zv!AHh;tNCKEi>I0IffLgNwWY!5QvK&oN!SD>#I40Sb)CIof6$A2KGP%+HZYb)j;rX zHK&);^VF+pn9vTEz#0|fPwOx2huH?agR!~*bm&C;wk@C(c~)954YeX4cJkBQ8P z$cShV;r&k@8;baI-cso#5DsPX*Ut*~WQB0dpgeh8a^WniT92KH@0SQvRJK8QDBoF0 z-|=-L8va_w_3Si9v`cJ6T>=MVpm(nkf-JDe)l6t1LQ1IIgO0?b1Lo@Bp?B9ONBHu_ zf4kp?ow(9)yba_Bw!p1}Mfj(D(NfdJ%WDm_4R7(ZQ3D>A_2K8)Gk&jI3HwJ`)o1zx z3RMuddJx%P&5Qs1_z0M2gun6SWFvPGRp@@k;JFz6Q3@QIz0Qv^44fG1;8ITi2Y_Ia z?95tke?w?^QriVyyJdbx7JttoGY!_~w|j_Biwz8Euw6!?JbmsUnGpKL*<6Hzd90?f zEzcOmz6>fQQ=BB`_Z<;eBTZcWB3bUYeOVL7Knyzc=Nul-P&Hv)kYPcy1eeN(RW02P z%S$c(5@0h(Y{0g^u#H8LsR~Ftwi?}@_;j>4GtDjCc>@2K)h`3z5tA34@FTgaMtSQp z$3R4o6)fOxEJy3|ZFxt1RZ0bL6>l&tc4jG+>?8T`hy~JN`cF`LeE@;-3K&96aIBJt z0DzO0OHUFPf>^BycrMWD+n7Q>$4&PzOQs=O)7wN*cDlW^F8Sy|Y-XUb8S0)TCrxaf z;2~m6SfgAWoU+#Z+hy2!)y$J|v^Bg<#`e_)Vl5`H?LwYAAqC*~i+DQk+BDaf>nD5> za#e};A&Ga#`Sd8rd*}iXht^PgL;NwCL!EJqE=c`Wd?vljcc)&gL$tkV6l**hj@#A% zToH-8U#!A`y7oE97V4ZbZ^{&fuo6&toGzbX|21g`;ppUi!(jd6HH#719y<_o7hRDU zljT=}^$0xSEpSR#1cw`VNXX}t7bKl2e39P806iH*y?{=eVsV!w~sH8|S_;T!9r z1>o1VI%;k2Ud0i59Yl3e1j^+WAR7)wM?_VrG$BEljK2^G#Y4p%2Re15BCyiJmJUPb zvVq=2{OFwFNRZs@O%e)_)uZFLA%&d>X3mR0i2uA4Yy2GPn}p19>8iBpC3nLY)XV@N zEJev;J|7It*fNLD5%eYsi9T|;c*QBcW_oBd&Ah&gHWi-q%&;nB1pU7zQ)N2Tr%Xpi zXc96|=%7u@Ccx^eiv(uUdYG#@q_Bl|=Oc>zEZk-J|4Sn_^a1PU=!OhzLJcpaZPXTc z<2;0sd7(o--}iRynN1f2rK9$zi11oy1qnx0YVLiCx>%E=8zm%j&~_D_krp1bs<~G< zO$@wo6;1;W#F358Cz1J{vPE_7`r@rLYGhKdJnYrMw!n;JR`cfoIXA53OV0B*G{!3& zZzncSmx8u2&s5SD>PCp&wKZkC7g>|h&s)^M{+)AvB@^C5o#iG2v z`^=9&lyg&kzOpUnVxF4&n~tR$d7(WNc1@g#kJMB_y5Ni?a~Y<7*`%^(fLUTUw1I5E zp)x%W5>D>oOC}tsxNodove?rs2-PlqB;_XexXcZa8XJD}_N;7*0_0#0%A#B}@EEJc zI@kXjwTm6pjIb<80)0~BUhYH4;U|v#tA{%WTW#3IWg~7aO^MDZX!F+BG$3pAhka5e z@jpa$rBIv`BkdefGXUwpl%Sm0w)O^&UKS({9nmzzop(+r+lL>N|8s(?hL}Ls;gOy5 zN(Z@?3Y8NGttN!x|KUVROxr^7u0aLL8QcP9Cu_4ZH^M(&7{@&pUe0kegA~07pZ{#Ld%&js*2j4wj{h4 zL#LgJB6oPu?eDiVFhX@C-s*}&O1CJ9Qp=2LQ1DUJ&BO47FX+iz-7h-i$4?)9M)=j= zS2l8ytA6qw_aq3TAw}@vvrFZ;^JA)$I9FEEx0 z)wu=fmfj1LWbK1yq(HtI?6Q^TTSV6h%zL zOwfKI%bIfJ^$7LzL>qmJFUVFG=LU1wjU|nk3V6jqkD<{?c7+gblu8{|BA#!UHTB3K z-o?lco;$sPkX+>&2o&tk?fGmTAuxfj^}FB)>#zm1GJ8 zb$s}OLUwOn1@A;Z{P@1n;Q!8u;a!KLzL#`UQB5;|8KNlZZehe!&mWa)U58i-)Zqeh zdJBa5btO(~|M=4MpHeL5bZl2Ux!8)U1#(8+cw@7P)|hy{TY?5XTgu(M3@yHk>XlT~dwD%x2&zkLI}~r! zJ6RX?=dj*<$CA^qij|JXz?m{W)W_V2ZcNFJrvHV8v=a)8^&^oYI}A zXF|ZWk)sYqTB0wXH>4ocywJ}c;|edxq)D^`;aTX(lpg;yq1j{T-k z`I!R*h_hyHab&EVY2O5BtL0%z>P{Xto&Sfu)~qym48MYvW}omn9@y%e^-TN9uS{(R z_0zPI>Y7jhU1{$MD^Z_sW8auRiZL&v!}UWAf*hF!vG}fLAAnVW=rD85ge$v;HBp>$ z%MLgeQaBTqZuT$Z)k;vC;v-G%*1w#Ee`UFwY6uWSSu(QQHgv#}X7@}SpL3SMG2ob5 z=RO%PO#(xprY5P-77~(qoM0Ky?Fj$KZz6of>MC(*5CQU+h!cDy_LQ4MF^Hw9d{aQv z!~ufofHe}FMlF>lB(|ghjM_2W7&9ZmQPNQC-A%#JJh2Xg|muLMExEvTL zbR}yA132WX-xmVysI)*(Q9E7A+olpFkI`JjxYijABRn_ySOaw(Iq2}q25E@6SxB-x z6Hr`FlL}br1evK7$J}%|@-4YWTywu=Jf2cCc5WQ~Eh7IG4=LhD+@2snUdz;v$^>PD zUj)_1y!3PgK8?ZJXmv_j5;q5wbb~hxCyY{%W~3tD@@X3CcDu5ArE^_(Q!pZm&Cx@v z;;v54KL@vX7ocFy*ptZ!qor>cp$e{ZjJC^eSHEWiX*+Cl|5WPy?z-bi zBAjNOuCfL9aNW_zfRTap;aFjW`(^`NjsS|HS}0#UQbR02NQ3U+NURoX=jA<+RH%SO zV5PJyho?62)@W3y4xD zwjUPU$!Qj?9%99SAge zUVujzte4Y!c`i?Q@c%Z00km@=TV1NhfF)yn+;3l11mXn~eY!vapCW>GvRLc36b$R6 z;NNQlnEd8JXE-; zbeqF(w)E9Q688dy8pkuUUq_*UAL2c)ipcK$z6G!&0ikAitTF085AvzOgy1eMBfqLL z2$cmrH_1V3MG^h~kNbnsN5q*fhCdxpGH4m@1eGn2#}!K`l7gPr?v=P-FW>c&;?3_IoCB#duE(yXo^hjVL{R-I zC&i_*^I0x>Z#zw14&*TAo#UcAv?FZ)%iF#|ZHl&yO@!9##bcBEP+vBO{Z~t=3Ok%i z^ImY^e|-k+q+QLSf9oHlFJ^jZ@TVZ)7jas-u1CGHJ>`q<-B;~?xAsjA@CyrOiD`L@Nqg{obw%w znd+%^s|G4!!UNJ-3eW&mvmi85Y)DtbBsgn85g%H7KNHL%DBa_|OP9#%J9gCnm(?pJ z;u;{u#8T-lA8xrQ_8f$hP9dQwR@=LFg^S;w1mB+7Duh0S`6eaCqu1$fuhGxU8QD$@m9LCw+mLkOrO_*V!p-%CRoYXg8Ps4 z#H@7zG~h$W{PVvc&vdc#Q6p{_avV_>L~k?0BR*|Ne#+^}*{O;5L`+5lxT>MHvJzxN zAHw2lZ{01}%^5f~C@{MB1QEOlu(TIKC0F)nK8!fE4hKH!3>mhB|IQ@I06H4Iw}Chz z*?Bl1eKNnTB}qr(Ip~&pst*HdmRwN2m$+t6`?}bM37=+q>S5OSXm(5&PE@{a66fzN z0VneiEC(7jtwiwE^uARFV-? z@?)FWx+6!?2oBrjhp`zKUwqWkIB3(h8Gg3>rqx$7u~u6irhZ$ml(;PH%U$S3Y{DuS zQdrq&7LcZO2R@N<5yRU&JKo)ShtMma4?36odezwP)v|*kwjq3p?SvE*>8@r)(cTZb_6uy0ZYrKR@(uVVBQ8=s8*Onr-F!xv+Wu!tjGEXcECdXvO?3&kb#j5q zvKkDC9IFQPNgMuGkWoR=5U}XZi`*8VV6h`?H)6%%I$?o+;^F{+(woTeY04kDQCfSaf4<;Xv3c#(q|+B3UNYFKP9r)hBHMz{tvI^I6tw;U;- z?ML1Zh*V$fBg>7j0xjqL_k*F_H8J(1fuOu2nrH$0`J_k=+La16I@|oue4Vd%E2+by zU$VG<#cnZ&O49bPc%@Wrudf}Nwy>bW}Bg1ujw#xcFBL-}8 zL{`+SQe&EYO^zYX#PV}TujQFsQw=*>4-=JWrbgY%Cp~V^c%j|wb6XQS0*4jJjntBt zoNfH39Dk;uQAnxM#VR6i8XRp=*VwOX(B#n9jJTpuq+LGlbS%Xs`XCtgB%#|L1 zJTk|&r2WOzgIVMHLx)Qa1sWW@CU^6?VLQ4>2!0)9_TLurgAbK&d_09$Up||vbEv*@ zhnlNsT-3X-cbQvIVV$k@Vp}LVkr;%I#A1bj#=xv=<)FC@WOJ4;TTfWgFtLn>8leSG zk!zUHBz4hoYC8k8euM!?J>kyC<4!&q4m@S5?qAfC<1YoVNR)s;;8pfD(j7I-JCFes zCat*bsp}}|t_VFpt3|~|zZHaF#b^A+XpkD5)0LVex+MKJIwT46<}Ijqai}n${~=AkX$*)h{VMGSsu&gjs-l z04`lZt6s>sYsVTU*Qgosq#-ge)_>v{MD5;c^L_<48;b?uviy=$(e28Rt-BF4K>x=* zk*)%Y6+}u8aaJ&f!X|%avQ;`)vMGLVKXzeWHcMWmo#oM@gA5J@&*Pf;RtzI2)d{+L znNlJIyC!fsCHq(4>a&Z#ChN_LKy_8|FqhYGH*7heBy>6V6w(AwF4K$y#QW_;aSs`+DbOytO%awm!OGJ;Ox>?4G0Q?N||kB(`yhV!eO<4 zr!@%u!V@cZg^jJ=^O^rM_Lbs9(Mtn4&mK*(77MG=Zdh)!`_jQ^E@j5}0N!o=y{AI^ z3&GJfRX*V5M)5T#W7OhhM(tir(dd7U4uJnp9I}~d#elqd=hfGY8-*!iN`;MhshdkgLYbBsIOp=E$lTK??l@#5B|$yqjzXL4kxFwi9QJ z*0w@HcH|TO_KO~Kz9?PzYSz#wC?vCqpeX-#LTf2liPhx~$;iK%GKpLMwKIY8c#ZgQ ze*f+pZ_E$~qaE=tnXzX?3hgKNcdwZ<1DXRmAduPAem#U9H23yqeU~k7Uq`KJfu`9K zmv*6b7z?+2jVdkCk@JYpjUvvNyoOY|En+O4w;|oDCd<%vpS#DCp_wZ;LqH?*D3nP= z5CoAv(uUJtmPuhSHW7}?r+_2Lp{}k6!<@-BYGehCcU7{?om!d3a}Lpgv4cEJ6Di8g#WC_N@fmNZTl|yEnQyuKEn4df~Ul zh%*gY4imKELniJSpmzZr=3Oap+DtdraRBZ6GfY0AxnhVXwC7Od7(rx=jDf}hl)D{C z13HdFA+o2juoKE4DCVoUbqt9iRo)Ayz=~oW3Bo@RR6Dtw#fuQF%XTIi0_?ji$=1wV zP804`7T8SWJg%!XuCuX=MzatV$(d{^&ZWw?8VW{wM7TaahB2jD6PEnGu;VCxW zv3YIGPeit1Eo5AKB@lXiSd&IHA_;_DuS4w&zF@hpa=UuMh^I+z`0qnD6@)pPYmvN` z66K?)oBGrXztj-#&UC6tGH8tG*(X1ILY^KNV{|9MAoA)@c25$hmB*ne`PVeQF`T7o zl#l+^bbY0~jdgYDbnS;wYX%{ycgeb``gSSW- zT$d*|eJr*OI!rWmP^=7rlb4R!i`@V8u2X&yrPW*G$?mKu*n&% zu^ePsU5^%4{hE|7_Ikou=3_Mf~sK2?-49)I$ecGdV^zm@gwbMn}A73`1+N- zcph&wMpFHIT)4qDdxjUdj&iaz_y!90Rr~zft-`cmoHk<2z9{!B&#D*{DO0c#v73SY z@uFoa*;DM$pL2T9xW6RN5IARFy`EW(h7eYOBL`qxd-v(2L_g$uNpEc3OP+*+_yylF zrwr%E{bDW*@lCM|a;nKRWT{#NQTTAd)p2)_r}`@Vrb9C4g9Rfz{#Lx$W#VZu+ztK@ z_XxirwVtC!`S}Z^h-E2cEgW~qFgeT%Dec+cz0bkUjS*6=Dpll6&jev5z}Zy<6T;uy ze+{GCsGOe5gF+Xfe5Z#^Ot->$OeEtz=EZZ}Z-w@@@!zkr8k0cUj|4~g3nkBwdE_T+ zI7iyvwD#wH!0khkU7MvF$rFr^K(c_k4-Nzm;QP6rikmEc7y?yfjR(lF<(MMW{xw*$ z7Zx?ov?KH3^fD`*CdI#KV&GJ)cz1<6brh z{Gf_PsUD+5^&YF^WtUFpCdE;t1W|wdI~%6&MUDv~=YUct==={`T`Iw@ytL43eL;`s zV`O2E{aGN)7<ZSr`Yh|zgwqYvt&E+Rz|#o5Ne8&_tBQ@o9R*> z$*JBpmlmou-{o;wq0D^iyBLJL+ync`9+~JF$<1|I4%8(-a z9meGN>d<|vF5p3mp5e}C`ErJ7)tEi)e6;_466wPRGo$SC5TTZFjuK2w!Ey@aMJx

tDrH*!IaA}!q=YcDboaTBXQC9=2OhNQz9JX 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 D)Jy3T literal 0 HcmV?d00001 diff --git a/src/assets/anwender/orientierung-start.webp b/src/assets/anwender/orientierung-start.webp new file mode 100644 index 0000000000000000000000000000000000000000..77ed4b14a1b3e395b6868c4e601456a003e3e023 GIT binary patch literal 38934 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/seiten-bloecke.webp b/src/assets/anwender/seiten-bloecke.webp new file mode 100644 index 0000000000000000000000000000000000000000..cada600b60a4d6562730b7ead8394038711a10bb GIT binary patch literal 65754 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 J&PwzU001P*pk4p~ literal 0 HcmV?d00001 diff --git a/src/assets/anwender/seiten-overlay.webp b/src/assets/anwender/seiten-overlay.webp new file mode 100644 index 0000000000000000000000000000000000000000..f39a0d11a65e3401e2590e113dcd51eadfe4f414 GIT binary patch literal 41318 zcmZs>V|e7-(*NDDZQHhOW8zF~JDJ$FZ95a&nOGCsww?TE@B2RI-se0|zv;eySNB@A zYJIC#)n~P`l(@KVJ^-LDCakEY$VsUD=d*nbNH!349#{|vzYTke6e)2deZC`=r5{|l zh3(TLysp@_E|#8#70JzatwgneTatq}f(J^;6FPnYk{`<8{U`>p5Lu~^?PoR6<}il^L_*vsys zPlo%eE#EGmRo|c|>d*11r|-VI_Y5x#>sMpGHXoZ`NLRkEdK0lX-OZmi?+R}SQwong zM7}Y;G+!_u9Z#9>W|aa^(SaYnuV43it$IM4t?yUwS5E?0dJkWnZ`q!)&$V~HZCjhZ zUtc?~!*^d71n0g}zCS*E-+(`bK2YA5o*6a>t_8lnZoQ{JJ3eb)a+!Qvzf!-NJ_GMi z&JkYp?ynwlH++A8ZGDk^eSIzM_T1*)_x$=Q|EPW3cyW6nc%>06Q zXLwau-TL#*&nMs4x1f*dueVE=H-@hji|;7`K(yfA7=v@6+DKxk6-G8<)M;x<(k1Nk z%H`2b|M#H7{)|oeHNwr#$JV|5WQ!oBdD42!WSOk)>(LI#pzXfe1>VEl&lzgnrT80; zcR8XD&=gNqHTg0|_-CIraflD$aQ(>SKgKILpKhQg+BRQWObbHbNh%SfyGvWru9-y^ zZj>yZX_eaQiOZW5l%gMm&9s!l=K@IY!Nmd~9Sols_iNK}Mv+y@)w7$6@dX)AkoA~l z4mk^AFA%WVS^At#oTuxf7MxfYGEYxxEG>0&OS?i-ZQpFRY&tGlyqm9@Hy#((V?a|b z%O`=sKl3D`g45q8jy0B_ohRr-Ie2J~`jR}Eib-`w@{!^(3DUhS@}4ZI)K$~>?z@ds zClX!~{+bRsu{_kJTa4!Slpm$`Y=$|@aa4KE73hnql7BlRhdB6g?*=ALA&9fS{@z27 zNqL2E>VeH9asj0jVebosIA%ugNG@%x_3q7o+O^ib<|G|5>?T4=&LphyBX5By0Jx#( zFdSw&3A>0EB?ODUdmo@)~7GC%Ys4m;0G8`A6Yn%hQQc|EbTv z1?$HpO!qKWcLtr2Dgu&!?N<9`yMM|3`=3H4?h7Acbaf5a1GsD7Mn6nFra?sG4=+5g&2+u#xLXoEw|_duscN;gbDB+?|>u*K>0Ly%CY z1ZD&WGjcgZGrMAZ6Q$oo{4P&>{~b(LQd*)W==^z$nG0J8c^2tT6%*039hdwV>LSG9 zlh&_*wx$`No)GF}z30-sqWe|Mnz(NA?8iU4a9jJQR1^s#kUJ+seldnMhhkS0XtQhDUQh@vXgLhUZ4uc~x`ro>=jr!-}pddja zez>X54Yk?YeZw2|E5~~uguy2%Uv{J@o+xtJc{iK*>4<~6rPnLhANQ9-gdZ zqXzgZUzGu)j;2O6nmW0y+gMBdht&Q=`k(oMVMv%I94*jA*34oSum~)V_*uWiB~3Zd zTB`@wCjeX*~w->b_50inNrb#cMm zRr39Rlp*$k$67IwTaCj(c6X3>qNOtYM#>BdJ-tT zN#{oUX?B0&`@fD4Aw*#~lr~(LtZ_PBak8zM!;JnrV^A}j(tXy~z@h0=z>n=qt}dt~)MFHF6*w1t#HNE;plxDeSA&pLaCzQb`p&U?l(Zt(8qUn4KH zjC7KWCx&C$B`2G?_s~D|q%T~&tc09dMFQ=iL1s&63?6o>9e$XlN!$A?VrB6G`1X4R z2W7oX2%j~8%*(E!g%*MEii@A5B7Ra_@WYW-5t3j69!6ZCiwtsLn16%mGl2M0fMr(^ z;@W(dxXln6QtIrq#xZ*r_%=?d=b?Ga;S1GgD-47|ed8xhh)2fb^&$vT2KV6Sf0n~9 zNIr9{-vibiDh0SiwzPIvMO}fwqda_Uv!+dj_#8mhgWV0D7@gG~nQ2+kP7aB=e7k=GG6SW)D(q1>;w{SpJ(FV9)F!UE-*$t#48w&? zy7QA}cOjBbFgMQibxNp5Uy>ouni)cmHjqdT)zl8l|u7r)%dDH zo|+_;MZRZrA7h)|L%twH%*k@sU))_`9$~_>A0l^S%n1Pv%eWhNk9ydm0A5D(jwM6M zxK^3^GdRM5NftUn+CWJVhl8ibEwIO;y9Dip(j_27cj5* zU5bQZd|_D$bD9`V(9Oe=I6#?)lvEZ|@UqC$O@7sLQU)DVmkp9e1T1(vMiZb^UMZMy zf(T?twtbFEI1wCn2kqN;Dz#!!po@KaB}D(pL5QB75w}J~K;*$jXHv@**bgFb&V6c8 zqM8`70G`Rfg&nphL1VHwVQ5xcJF$l(2($ICeLcVPEKw0>ln2LN=jlWI|GyJvx1g(kD_84Q=e8Uc6`l=fN*+DH^9HmF& z#t{9E2!27b?0*#xxjgE22+6SZiw9r^Yy-X?lvOQ7+qpt5{YATNy2$t0Q%vgMiq9Q~ z&W35Hf=@*L=6aFM;dTgf&P{AfTfY5GKI|TNxKp%R6JeEYpamB#Rd~GH0h7A4*IL0B zD4z0U+Y+2D5oYO?ANeq~dmU&RQY$3;WiF%N{;BZ#)8}8JGmL6X8NvcX4?!I68So~|e#wIaBq5(I45evW)m?b}Z+GJK6 zrktLQPm{SL7~~Nrayy~?4qfM%#ZJXG_p2U_r)W0*pa>HkNR_ED>GFr@?PSFu$3VwD=!Fljm?u|Ss9y5q zgY!IsdTqRno-LJ&ge*tO4A;1Z82G|z+%q1MG}Hj~l1TCRo^-J?gXa|)RZ6bbVyH8(G_(i%vbq9DPM0^3J0v^6?P4HGzsJwCdV0^XB?gJX!>BxUslF za6TmQ*-;GL|J9@YtL9xxkad&zB?z;?=;mh!KXNyF1U95XWN44S{);lCNuA&qilvXP z|4Fwu*hXrK9QviX#_^c>?iY3Wo@shcV)b$K9HHqjzM4KIjC&*m7SFG>*Y?qwFSPYZ zOaG2^ZozCiqVCBIN-BbTOVEQfNjitk=URo$Is`Q#n8>pO)7CxJUy#tJiT#;ll)LY7 z4fQf~{Y=fdn-R?>}Cify(1xeipVk1h-r^$v&bwwyfu1l@|Org;)4h?|{aw|m9nZSq?PQ5`#KpwrYf zgIfh%yJGErYf3wRZ)u6?;-zM<4wX8i8UOOXxD~OZrh0ZnaMg%(;LsfP)ymk2<%+ko z@!rV0GPEqYq8!JK)B_7l2h+BG?I)`L>ilq=i$%O8l-DC7M^RC?!W}Z?BOIcQfS%aw zwBjO{H2IG%r)I0zRgJnAhp$$hl*sdJD&s_DMrYEkcN~Q^nSGQR!~SQ>_wl9g%eKuS zFGUIr{Ev-7cX?GpT3)TG8Mnn3m@N(}(UTNO?8Viz=_#-<=?| z*+IXKky!f^_S<%)aoQkJBKXMB=Qi&USrIKD#SrLKzr(5eM_*D95?XFB z9QpuvO!Ia!sbsU**oWg&g#}$sBUo74nb$HLdNJz^uR0GZFg4m>L_@L zwi1FbwI+lkckdXBzv(BCOE#t`-q14rM9Lar(!vId)G!OBlyL1C+IGa{c&Y zUu$K)0k^r*^(r0kym`vOQT(te`(N(zzuh3@(D+a)ywc4>N$hp+EYTw=yC5u4+zx}) z9iML98Z&^BS^4J>{D$&ZV~u7#49|Dx;Cx^Fr!p$X{Gf{4v4F#~n|OeP9aDjfX`2|N z_?c85w&1j~hkO6M!#p(RjJArqy*3CuC8?09>pm@aO@7Cn@;Hw0e_}CPOhf@FIsG;# z;3UtDUc?`GGZ1okSbz~yyPr~(?=Bn2jxBicui%)9TlWa2ciNMD91e0UWi90T^N0m& zNct$C%|<f1V)FW|HR2LVdkN$M; znZZMI48`4{4T|LtA$I)4tkrqTfJ)W!=`Vkti+$dl>$@k|b-`Oc;aRj2L!pTdD`X|x z4t~}{k^c{Jw)*N|G$ErI`Y9n(M~uMb>rd923~$DjqtDTebMqoTmY0nJ8ND)wZ4i8bzm)z3h?(>K+GX}C$xMOPf1T$&;!`cKKNvMC9`-46MyJ2@Y?#KF@jZKN!Mh5|2 zYsyH-iu3x%3vMLC*p(jB=Est-%|Xyn|0V?g;#^S)>X!z;fpdGAK<$35eZpV{X2_K`0FwCEm#iU7!=57g#;v3V)jq`YpT+=q0%@h`nZ4|HDH6ba1qZL`EUM3;Tq>PKq>h}i0S5l6UH^yY^CC_fW>u(x* zP^+jnQ%Hpr7}Ntt z6X6mcoDBm*#O}l%N?38QM#%PhM2lf`(+Jt>Rc@)_TTP^P6|l5BM7<3dsWOGc_z+L^ zRQ@%1uqnSo%BLOTs2{g^?=7S5@433`{?CaHVF7r{66(V&u#<5f{udk2wbY4>`Id@syrzkV@VoZXvtmHHGM`J zx$9LY9TMz@Y^F2xlA>-%)r9Tm#JX4^x6n1NM~PTC9!`xj9@GW8ZSr zb2bkA3>sTxU!i0)G-0oZPiv7Y3ro^4`mjm*ah##Ujt6EFKiQVwyp1jVr?a6N>sow` z9QG+zkZ^&udH%xpD<`DRxUNS-y%2&^fbT&1*M}YOG*-$N@H}_l@l@u1Eubd*`Tf=< zaZfTDI5FVlY~qj`{DwmHfw^`Mm1+&|zS<7)ShUO(g)L70@~X!CAU6r#DW3i;8=LZs z7D^8cigV^ScN(>}j%W@a5)expvXlDsjTf@fph}GauO?A3-mYu)!VD&g^Nfs%o7EyFju%ec+EV;+6)ih zN5IdPa^>xLh~S@BaieWYoTwR*x#mo!8Uk=jLWx5}W!wTV{e9g)>0;q0m@-7j?}iv? zNXm~Xc;%+6ODtek$EG8OH1C>f5=%a<(Js3AY)3+$0$f z=x1Bm#Bocazz{#6llL=i2?S7>g=ECZDB#Jf7z}6%xeW&aoeLy6hgXZhMN(?;ed~zu zQwWChUcxfCx2l>4>(F$C6b+mB0!b}rmykt)nt1@g4DZ)%x+tWT<5vx z(Bdf*#Byn$VOZ}fk&w2Uw5J|2Lt-=GuWpdrkSjRl3Ww-pMBSUO>(n3f6Z!Tt1vR^6 zPID}}*X3=2H!jAPk9zErFY!&`!=$h^8xhS?B$dtZAPPBa@L%k?g@*Sld^O~S0ih_| z9txU8b*3$u@4ZYxqnB!=_}#*>1W($phE(}5FpH#}#^z&juZ1A;snHtia|dgQ`yClaU}5_%}@yLJy?# zxij%1CW;08vuT{=AE{{XzejmbGi_bJE7#}@6$f7^+9!iEN8rK+bV?a|FDk<()DH9{878TcJ3!f0+e8c+2S;P5~L3gq(@Lm<65 z7<$(cZ&-3T8NfQE+{GcFd*aAQPbQJLMhbInn|^*)T5>u!oA#$qr_@p$P;83>$T1y^kA2X9o&|p=^rko zZN4fVV3?z3=5{I_NU2EDJisfaAB5Nd@5X+L@w5(qz`b#9SFUZVg4w2;1bDoZ*HRajaH4|mpke>YMGc%K#p(C+WX%CY4> z{=!5*c&00HUVVcenTBq@K{eGDKOdGghMU`wNsWTK$?RB{*++(C^4yskytb8(+MTye ze9t4DAl7InWqh_r)%EyI9>)Rjw>Ml(FVZ?bJ}SV-r}P5=9*k`)mvZwMDPV+}ksp1~ z-Z{N3N=VEUnceu*qUG??1q~&~f$*{GS(;OLZ|7JA7)%P%e{_lQ)*kI)A&Vx!5`QVP z`i2-!#Y-Ekv%OKxK801HeR7>rc0mg@EmH!3Bxfi@OJKP;D9!KJuV_O-f?)H{5CMO` zh~B!A1|u+>jT?Z|_Rd?C&xK0-*|)@hj6<~@s|VaKlk?qaPQpQBQ`;>$&UUK<(g*_^A(>G@yjY&R|1-cznEK&rd zJRUfc z0#1h_U#&lk?>yxw;;*+Zkm0B+TdS%`q+o)UCk{toA@QH42pjugsM#EAv*&=j1S~Hj zMY6^TQYLE+A}eFd!P0Bs$P%iRGe#VEel-Eo<3dBOO_*P0PIM$UFdB?n$<;Nzt-%rw z#BHuHIHYq69^%!Q83!mQyJ%`&x~;=FjM<^`hxZU zDntGJeXL)~JdW2#^DU7_TDvp&kh(U#o|ghU+^AO?Kk10J+@}me=ib>kz-R=F1+b%Rtz8DFOR=cY;Hv ztoALH(!N;0Tj_`!y{PJ(l5ms_9|&SdrnHc$<$PK1)BHxi8~2!iURD%jV=M&Gc**V# zptZmaI}jA@Q*9lc+p$tGxZVR=cZG%Es9ZZV3nqmfkkl?#nQE#$9AZ3_|18g!+2rjy zo&E%Nv=IF({o*|CR;~+leR&P`#9YnBzFilbW)^t|0B~%XGfXK; zm4I4Wb5P=D)dHi!EJ|39&N6*SXHh^S?iHHh5ZKue4838!ey#Q=6ou)rt27q9d`sQZw z$~<*CBVnz{8fEAd7hsFL3Bi;HPh2DDrYN?|Jf(itV(q`^eeV_|1FOsS#CX_PzfUwUa2>D=yt;d=pDv8|0Fp#5t4XvqIa;yus zKe(~eohi~;WZ_~4n{zPGlkL2q$H1SP{#v-oL%semxYQnP*&>JGbiNZktt)-Zmajg+A=)ylqpJhP^0ItyWc8hm) z0JBDjV}w(k4gg@v%!4u?0weGg5ifN-OyG+M4nsst5Hv(CKiz zW`y7DH!_ZNkhflVs`+oVNrtTi$O0pMVT^0f#M3b8SAFk5yxu(~mLc5C9+_eW@ZN}M zY|pvMKp7@~e*4U%^DJtS5~Qr&FzrFqky_0_xydZj$1ZuJ{qYMbK~hk6^PK_3y&7Lq zu2*0<($nYtIpJJ7!3q1%f)tU5izH@Kz6@7V40xwf z$nRyS{SnVkw9}`PWB9<_MEb_s=Pi%?42 z-vcg`F?1vg<~mGqm&t2vE;Dsb3oStAXW-;^weLv?2$%Z~&@_pZTL1W)tQGr*3lUK}QviI{(J(Yu?vHBz9@nXOK( zfJuavAwwtKVbuY*;0;mk0r2bpEC;k}LA6?ymllzHWFz(DJN_->l&FyS2smMGOVpCo(%63DptjRYJtafotVE~r5zySP65KO&M%g

)=3zku#r18yo% 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 z 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/seiten-viewport-mobil.webp b/src/assets/anwender/seiten-viewport-mobil.webp new file mode 100644 index 0000000000000000000000000000000000000000..6a62692eae46ed60737060b83b1d5c74290981e0 GIT binary patch literal 46438 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 T0691y0E-G7DN3NdSbzWkW1A&_ literal 0 HcmV?d00001 diff --git a/src/assets/anwender/seiten-viewport-tablet.webp b/src/assets/anwender/seiten-viewport-tablet.webp new file mode 100644 index 0000000000000000000000000000000000000000..9a5233fa22d1acf44e5a0b9e5c58b6542ae757ac GIT binary patch literal 47364 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�nK-AGhDW+>->SV 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/sichern-details.webp b/src/assets/anwender/sichern-details.webp new file mode 100644 index 0000000000000000000000000000000000000000..14be53e32d03f97f60aa00003d7035d4b6fa151f GIT binary patch literal 36052 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 literal 0 HcmV?d00001 diff --git a/src/assets/anwender/sichern-uebersicht.webp b/src/assets/anwender/sichern-uebersicht.webp new file mode 100644 index 0000000000000000000000000000000000000000..40611f2b703646f311a209cd95d6ac6da0cecaef GIT binary patch literal 35544 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 literal 0 HcmV?d00001 diff --git a/src/content/docs/admin/aktionen.md b/src/content/docs/admin/aktionen.md new file mode 100644 index 0000000..eee65bf --- /dev/null +++ b/src/content/docs/admin/aktionen.md @@ -0,0 +1,91 @@ +--- +title: 'Aktionen' +description: 'Actions im Admin starten: Parameter ausfüllen, ausführen, Ausgabe und Fortschritt lesen.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du stößt im **tibi-admin** (Verwaltungs-Backend, Release Nova) eine **Action** an — z. B. Versand, Import oder Aufräum-Job. Du füllst Parameter aus, klickst Ausführen und liest das Ergebnis. Diese Seite beschreibt die Bedienung — das Schreiben von Actions steht unter [Jobs und Actions](/projekt/jobs-actions/). + +## Starten + + + +1. Projekt öffnen, Sammlung **Actions** (Seitenleiste) wählen. +2. Action anklicken — Route `/projects/:projekt/actions/:name`. +3. Methode per Reiter wählen (`GET` oder `POST`; die Wahl steht auch als `?method=` in der URL). +4. Formular ausfüllen, **Ausführen** klicken. +5. Ergebnis unterhalb lesen (Karte „Letztes Ergebnis“). + + + +| Element | Verhalten | +|---|---| +| Methoden-Reiter | Nur `GET`/`POST` sind ausführbar (`runnableMethods` in `ActionView.svelte`); `PUT`/`DELETE` erscheinen höchstens als Ansicht, nicht als Startknopf | +| Ausführen-Knopf | Aktiv nur bei Startrecht **und** gültigem Formular; während der Ausführung dreht sich das Icon und der Knopf ist gesperrt | +| Upload-Toast | Enthält die Eingabe Datei-Bytes, zeigt der Admin einen Byte-Fortschritt (`upload-progress`) | +| Verlauf | Werkzeug-Menü (Schild-Icon) → Audit mit Filter `collection=_actions/` | + + + +## Parameter + +Das Formular (`ActionMethodScaffold.svelte`) trennt zwei Blöcke: + + + +| Block | Wohin gesendet | +|---|---| +| Abfrage-Felder (`query`) | Query-String der Action-URL (`?feld=wert`; Arrays wiederholt) | +| Daten-Felder (`data`) | JSON-Body (`POST`/`PUT`); bei `GET` kein Body | + +- Felder kommen aus `action.meta.methods..query.fields` bzw. `data.fields` und nutzen dieselben [Widgets](/admin/eintrags-editor/) wie der Editor (inklusive `dependsOn`-Sichtbarkeit). +- Validierung läuft live: Fehler erscheinen nach Verlassen des Felds (`blur`), der Knopf bleibt bis zur Korrektur gesperrt und nennt die Fehlerzahl. +- **Technische Vorschau** (aufklappbar unter dem Formular) zeigt das exakte Payload-JSON `{ query, data }`. +- Server-Aufruf: `POST /api/v1//_actions/?…` mit Sitzungs-Kopf `X-Auth-Token` (siehe [Token-Köpfe](/reference/token-koepfe/)). + +## Ausgabe und Fortschritt + + + + +`ActionOutputMapping.svelte` zeigt gemappte Felder statt Roh-JSON: + +- **Kurzfassung** (`output.mapping.summary.fields`) — immer sichtbar, Werte per `source`-Pfad aus dem Ergebnis gelesen (`deepGet`, z. B. `totals.grandTotal`). +- **Details** (`output.mapping.details.fields`) — aufklappbar, als Widgets gerendert. +- Ohne Mapping zeigt der Admin das Ergebnis als formatiertes JSON; kennt die Methode nur einen Titel ohne Felder, steht dort „keine Ausgabefelder“. + + + + +Liefert die Action Live-Events (`Content-Type: text/event-stream`), zeigt `ActionProgressMapping.svelte`: + +- Balken aus `index` / `count` (`index/count × 100`, sonst Prozent oder Zählertext). +- Status- und Meldungstext aus `progress.statusField` / `progress.messageField`. +- Optionale Zusatzfelder (`progress.fields`) aus jedem Event. + +

+ + + + +```text title="Action-Ablauf im Überblick" +Formular (query + data) → Ausführen → [SSE-Events → Balken] → Ergebnis (Mapping oder JSON) + └─ Verlauf: Audit mit _actions/ +``` + +## Rechte und Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Kein Startknopf / „gesperrt“ | Methode nicht in deinen Rechten (`project.yourPermissions._actions.`: `get`/`post`-Flag fehlt) | Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) klären | +| Formularfehler genannt | Pflicht-/Formatfehler im Eingabeblock | Felder korrigieren — die Vorschau zeigt, was gesendet würde | +| Servertext im roten Kasten | Hook oder Server meldet fachlichen Fehler | Meldung wörtlich nehmen (der Admin reicht sie durch) | +| `permission` / `not found` | Falscher Kopf oder Action gelöscht | [Token-Köpfe](/reference/token-koepfe/) und Action-Namen prüfen | +| Netzwerkfehler | Server nicht erreichbar | [Admin einrichten](/admin/setup/) prüfen, erneut versuchen | + + + +Klick-Abläufe dazu stehen im Test-Plan `docs/test-plans/40-actions.md` (Methoden-Tabs, ausführbar vs. gesperrt, Ergebnis und Fortschritt). + +Verifiziert am 2b091d899590b392491c59a54f50de43f1057280 2026-10-16 (tibi-admin-nova) diff --git a/src/content/docs/admin/ansichten-listen.md b/src/content/docs/admin/ansichten-listen.md new file mode 100644 index 0000000..c70650a --- /dev/null +++ b/src/content/docs/admin/ansichten-listen.md @@ -0,0 +1,105 @@ +--- +title: 'Ansichten und Listen' +description: 'Tabellen-, Karten-, Medien- und Navigations-Ansichten, Suche, Sortierung, Filter, Blättern.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge } from '@astrojs/starlight/components'; + +Du öffnest eine Sammlung im **tibi-admin** (Verwaltungs-Backend, Release Nova) und siehst eine Liste aller Einträge. Suche, Sortierung, Filter und Blättern funktionieren in allen Ansichten gleich. Diese Seite beschreibt die Bedienung aus Redakteurs- und Projekt-Sicht — Konzept und Einordnung stehen unter [Admin-Konzept](/admin/konzept/). + +## Ansichtsarten + +Die Sammlung schlägt ihre Startansicht über `meta.viewHint` vor (Details: [Sammlungen anlegen](/projekt/sammlungen-anlegen/)). Du wechselst die Ansicht jederzeit per Ansichtswähler — deine Wahl landet im URL-Parameter `view`. + + + +| Ansicht | `viewHint` | Wofür | +|---|---|---| +| Tabelle | — (Standard) | Viele Einträge vergleichen, Spalten sortieren, Mehrfachauswahl | +| Karten | `cards` | Vorschau mit Bild, Titel und Zusatzzeilen (`meta.preview`: `label`, `secondary`, `tertiary`, `image`) | +| Medien | `viewHint.media` | Raster mit Drag-and-drop-Upload direkt über dem Raster (siehe [Medien](/admin/medien/)) | +| Navigation | `viewHint.navigation` | Baumvorschau je Navigationsbaum (`nodesField`, `declaredTrees`) | + + + +Die Tabelle zeigt die Spalten aus `preview.table` oder erkennt sie automatisch aus den Feldern. Ein Klick auf einen Spaltenkopf sortiert auf- oder absteigend. Systemfelder der Eintrags-Übersetzung (`translationKey`, `lang`) blendet die Tabelle in der Kopfzeile aus — sie bleiben über die [Übersetzungsleiste](/admin/eintrags-editor/) erreichbar. + +### Unter-Navigation + +Manche Sammlungen haben Reiter über der Liste (`meta.subNavigation`, z. B. `?sub=published`). Jeder Reiter hat eigenen Filter, eigene Standardsortierung und eigene Trefferzahl (parallele `/_count`-Aufrufe). Die aktive Auswahl steht im URL-Parameter `sub`. + +## Suchen, Sortieren, Filtern + + + + +- Suchfeld oben über der Liste, entprellt während der Eingabe. +- Bei laufender Suche gilt **Relevanz-Sortierung**: eine manuell gewählte Sortierung wird verworfen, der Server rankt nach Trefferqualität. Du kannst danach erneut sortieren. +- Hat die Sammlung mehrere Suchmodi (`collection.search[].meta`), wählst du den Modus am Suchfeld. Wechsel-Tastenkürzel: `Strg + Umschalt + F`. +- Die Trefferzahl für Filter-Warnungen (z. B. vor [Exporten](/admin/exporte/)) kommt aus der `/_count`-Route, nicht aus der geladenen Seite. + + + + +- Spaltenkopf anklicken oder Sortier-Popover öffnen (`o`-Taste). +- Standard ohne Auswahl: Feld `updateTime`, absteigend — oder `meta.defaultSort` der Sammlung bzw. des aktiven Reiters. +- Bei Suche ohne manuelle Sortierung entfällt `sort` in Anfrage und URL (Relevanz). + + + + +- Filter-Popover öffnen (`f`-Taste). Zurücksetzen: `x`-Taste. +- Filterbare Felder meldet das Schema per `meta.filter` an — inklusive Unterfelder von Objekten, die sich per `meta.filter` anmelden. +- Ausgeschlossen sind standardmäßig: Fremd-Medien-Widgets (`foreignMedia`, `foreignFile` u. ä.), native Datei-Felder und reine Objekt-Kästen ohne angemeldete Unterfelder. +- Fremdschlüssel-Felder bieten eine Auswahl mit Suche statt Freitext. +- Die Vorschläge für Auswahlwerte (`_facet`-Route) liefern je Wert die Trefferzahl mit. + + + + +- Fußzeile mit Seitenzahlen, Ellipsen bei vielen Seiten und Anzeige „Eintrag X–Y von Z“. +- Seitengröße umschaltbar (Standard 25). Tastatur: `[` / `]` für vor/zurück, `p` + Ziffer für direkte Seite, `p` + `0` wechselt die Seitengröße. +- Die Gesamtzahl lädt der Admin über `GET …//_count` — Details zu den Routen stehen unter [Lesen und suchen](/projekt/abfragen-lesen/). + + + + +## Mehrfachauswahl und Tastatur + +- Auswahl per Checkbox, `Leertaste` oder `a` (alle umschalten). Pfeiltasten bewegen den Fokus, `Enter` öffnet den Eintrag. +- Mit Auswahl öffnest du die Massenbearbeitung (`e`-Taste: Werte setzen, Bedingungen prüfen, Vorschau) oder das Löschen mit Referenzen-Prüfung. +- Neue Einträge: `n`-Taste. Befehlspalette und Feldsuche im Editor stehen unter [Eintrags-Editor](/admin/eintrags-editor/). + +```text title="URL-State einer Liste" +# URL-State einer Liste — kopierbar und teilbar +/content?view=cards&q=hero&qm=combined&sort=name&order=asc&page=2&size=25&sub=published&f_lang=de +``` + +| Parameter | Bedeutung | Standard | +|---|---|---| +| `q` | Suchtext | leer (keine Suche) | +| `qm` | Suchmodus (`qName` aus dem `search`-Block der Sammlung) | Standard-Modus | +| `sort` / `order` | Sortierfeld und -richtung | `updateTime` / `desc` (oder `meta.defaultSort`) | +| `page` / `size` | Seite und Seitengröße | `1` / `25` | +| `view` | `table`, `cards`, `media`, `navigation` | `table` | +| `sub` | Aktiver Unter-Reiter | keiner | +| `f_*` | Feld-Filter, z. B. `f_lang=de` (Objekte als JSON) | keine | + + + +## Häufige Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Liste leer trotz Einträgen | Reiter-Filter (`sub`) oder Feld-Filter aktiv | `x` drücken oder Filter-Popover leeren | +| Sortierung „springt zurück“ | Suche aktiv → Relevanz schlägt manuelle Sortierung | Suchtext leeren oder Sortierung nach der Suche erneut wählen | +| Gesamtzahl fehlt oder lädt lange | `/_count` auf altem Server nicht verfügbar | Direkt laden lassen (Fallback) oder Server aktualisieren | +| Ansicht startet „falsch“ | `viewHint` der Sammlung schlägt die Startansicht vor | Ansicht einmal wechseln — `view=…` in der URL gewinnt | + + + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova) diff --git a/src/content/docs/admin/benutzer-rechte.md b/src/content/docs/admin/benutzer-rechte.md new file mode 100644 index 0000000..0f8bcd8 --- /dev/null +++ b/src/content/docs/admin/benutzer-rechte.md @@ -0,0 +1,107 @@ +--- +title: 'Benutzer, Teams, Tokens' +description: 'Anmelden, Personen, Teams und Orgs verwalten, Rollen und Berechtigungen, PATs, Stellvertretung.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du verwaltest im **tibi-admin** (Verwaltungs-Backend, Release Nova), wer sich anmelden und was jede Person darf: Benutzerkonten, Teams, Organisationen, Rollen, persönliche Token (PATs) und die Stellvertretung. Server-Regeln dazu stehen unter [Rechte und Tokens](/projekt/rechte-tokens/), die vier HTTP-Köpfe unter [Token-Köpfe](/reference/token-koepfe/). + +## Anmelden und Sitzung + + + +1. Login-Seite öffnen (`LoginPage.svelte`): Benutzername und Passwort eingeben. +2. Bei Erfolg legt der Admin ein JWT in den Store und plant die Auffrischung (`scheduleTokenRefresh`); danach landet du auf `/projects`. +3. Bei Sitzungsende warnt `SessionTimeoutWarning.svelte`: **60-Sekunden-Countdown** mit Verlängern- oder Abmelden-Knopf — ohne Reaktion folgt die Abmeldung. +4. Sprache (DE/EN) und Theme stellst du auf der Login-Karte um. + + + +| Verhalten | Quelle | +|---|---| +| Fehlgeschlagener Login | Rote Fehlerbox, keine Weiterleitung | +| Inaktivitäts-Timer | `utils/inactivityTracker` + Countdown-Dialog (`resetInactivityTimer`) | +| Eigene Daten ändern | Profilseite („Mein Profil"): Name, E-Mail, Firma, Abteilung, Avatar, Passwort (min. 6 Zeichen, doppelt bestätigt) | + +## Personen, Teams, Orgs + +Die Kette lautet **Org → Team → Benutzer → Projekt**. Du pflegst sie im Admin-Hub (`components/admin/`): + +| Ebene | Komponenten | Inhalt | +|---|---|---| +| Benutzer | `UserTab` (Liste mit Suche, Filter, Sortierung, Paginierung), `UserCreateDrawer`, `UserDetailDrawer` | Name, Login, Rolle, Org-/Team-Mitgliedschaften | +| Teams | `TeamTab`, `TeamCreateDrawer`, `TeamDetailDrawer` | Name, Farbe, Org-Zugehörigkeit, Mitglieder, Berechtigungen | +| Orgs | `OrgTab`, `OrgCreateDrawer`, `OrgDetailDrawer` | Name, Mitglieder (`OrgAssignmentSection`), Projekte | +| Projekte | `ProjectAdminView`, `ProjectDetailDrawer`, `ProjectCreateDrawer` | Name, Status (online/offline), Org-Zuordnung, Rechte-Matrix | + + + +1. Org anlegen (`OrgCreateDrawer`). +2. Team in dieser Org anlegen (`TeamCreateDrawer`). +3. Benutzer anlegen und Team zuordnen (`UserCreateDrawer`, Reiter Mitgliedschaften). +4. Projekt der Org zuordnen und Team-Rechte setzen (`ProjectDetailDrawer`). + + + +## Rollen und Chips + + + +| Rolle | Wert | Bedeutung | +|---|---|---| +| Admin | `role: 0` | Vollzugriff, violettes Badge (`RoleSection.svelte`) | +| Benutzer | `role: 1` | Zugriff nur über Org-/Team-Mitgliedschaft, neutrales Badge | + +- Die Rolle stellst du per Auswahl um (mit Admin-Warnung); im Nur-Lesen-Modus zeigt der Admin nur das Badge. +- Feinrechte vergibst du als **Chips** (`PermissionChipsInput.svelte`): Eintippen, Vorschlag anklicken oder Entfernen per ×. Vorschläge kommen aus der Projekt-Meta (`project-meta`) oder als Team-Rückfall (`team-fallback`); Platzhalter-Beispiel: `pages, media`. + +## Tokens + +Persönliche Token (PATs) pflegst du auf zwei Wegen: im eigenen **Profil** (`TokenSettings.svelte`) oder als Admin im **Token-Reiter** (`TokenAdminTab.svelte`). + + + + +1. **Neu** klicken → `TokenFormDrawer`: Name plus Scopes per `TokenScopePicker` wählen. +2. Speichern → `TokenCreatedDialog` zeigt den Wert **genau einmal** — kopiere ihn sofort, danach ist er weg. +3. Bearbeiten ändert nur wirklich geänderte Felder (Name/Scopes als Patch). + + + + +- Widerrufen per Löschen (`deleteToken` → Liste neu laden). +- Antwortet der Server mit `404` auf die Token-Liste, blendet der Admin den Bereich still aus (Feature-Erkennung `isTokenFeatureDisabled`). +- Aufrufe laufen mit deiner Login-Sitzung (`X-Auth-Token`-JWT via `fetchWithAuth`); Token-Verwaltung selbst braucht kein separates PAT. +- **Während einer Stellvertretung ist die Token-Verwaltung gesperrt** (`disabled`, solange `impersonatedBy` gesetzt ist). + + + + +## Stellvertretung (Impersonation) + +Admins können sich als ein Benutzerkonto anmelden, um dessen Sicht zu prüfen: + +| Schritt | Technik (`api/auth.ts`) | +|---|---| +| Starten | `POST /login/impersonate { userId }` → neues Token + `impersonatedBy`-Vermerk | +| Erkennen | Banner/Status zeigt die Stellvertretung (`AdminLayout`, `AdminHub`, `UserDetailDrawer`) | +| Beenden | `POST /login/impersonate?logout=1` → Server löscht den Stellvertretungs-Cookie und stellt die Admin-Sitzung wieder her | + + + +## Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Login schlägt fehl | Falsche Zugangsdaten | Eingaben prüfen; Konto beim Admin erfragen | +| Countdown erscheint | Inaktivität | Sitzung verlängern oder neu anmelden | +| Benutzer/Team/Org fehlt | Keine Leserechte auf diese Ebene | Admin um Freigabe bitten | +| Token-Bereich leer | Server ohne Token-Feature (`404`) | Normal — kein Fehler, Bereich bleibt verborgen | +| `permission denied` | Kopf oder Recht falsch | [Token-Köpfe](/reference/token-koepfe/) und Chips prüfen | + + + +Klick-Abläufe zur Stellvertretung stehen im Test-Plan `docs/test-plans/42-impersonation.md` (Auslöser, Bestätigungsdialog, Banner, Rückkehr zur Admin-Sitzung — nur im Mock-Modus testen). + +Verifiziert am 2b091d899590b392491c59a54f50de43f1057280 2026-10-16 (tibi-admin-nova) diff --git a/src/content/docs/admin/customizing.md b/src/content/docs/admin/customizing.md new file mode 100644 index 0000000..cebf308 --- /dev/null +++ b/src/content/docs/admin/customizing.md @@ -0,0 +1,89 @@ +--- +title: 'Admin anpassen' +description: 'Sammlungen, Ansichten, Widgets, Fremdschlüssel, Vorschau, Aktionen, Suche und eigene Exporte im Admin.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du passt das **tibi-admin** (Verwaltungs-Backend, Release Nova) an dein Projekt an: Was Listen zeigen, welche Eingabeelemente Formulare nutzen, wie Datensätze verknüpft und gesucht werden. Das meiste steuerst du über die Sammlungs-Config — Schema-Details stehen unter [Sammlungen anlegen](/projekt/sammlungen-anlegen/) und [Felder und Widgets](/projekt/felder-widgets/). + +## Ansichten und Spalten + +| Mittel | Wirkung | +|---|---| +| `meta.views` (Tabelle, Karten, Kalender …) | Welche [Ansichten](/admin/ansichten-listen/) die Sammlung anbietet | +| Sichtbare Spalten | Per Checkbox im Listen-Kopf; [Exporte](/admin/exporte/) übernehmen sie als Vorauswahl | +| URL-Parameter | Ansicht ist teilbar: `?view=cards&q=hero&qm=combined&sort=name&order=asc&page=2&size=25` — `qm` ist der Suchmodus aus dem `search`-Block | +| Sortierung | Klick auf Spaltenkopf; manuelle Reihenfolge per Drag, wo freigegeben | + +## Widgets und Felder + +Der `WidgetDispatcher` wählt das Eingabeelement: zuerst `meta.widget`, sonst der Feldtyp. Alle **25 Schema-Enum-Werte** kommen vor (`pagebuilder` und `pageBuilder` meinen dasselbe): + +| Gruppe | Widgets | +|---|---| +| Text | `text`, `textarea`, `richtext`, `html`, `json` | +| Zahl/Auswahl | `number`, `checkbox`, `switch`, `select`, `selectArray`, `chipArray`, `color` | +| Datum | `date`, `datetime` | +| Dateien | `file`, `image`, `foreignFile`, `foreignMedia` | +| Verknüpfung | `foreignKey`, `foreignKeyChipArray` | +| Struktur | `pagebuilder`/`pageBuilder`, `templateProps`, `containerLessObject`, `containerLessObjectArray` | + +- Pflicht, Formate und `dependsOn`-Sichtbarkeit kommen aus dem Feld-Schema — Bedienung siehe [Eintrags-Editor](/admin/eintrags-editor/). +- Mehrsprachige Felder bekommen automatisch Sprachtabs (`I18nLanguageTabs`). + +## Fremdschlüssel und Vorschau + +| Baustein | Datei | Nutzen | +|---|---|---| +| Auswahl-Dialog | `entry/ForeignKeyDrawer.svelte` | Einträge anderer Sammlung suchen und verknüpfen | +| Inline anlegen | `entry/InlineEntryForm.svelte` | Verknüpften Eintrag erzeugen, ohne die Ansicht zu verlassen | +| Rückverweise | `entry/ReferencedBy.svelte` | Zeigt, wo der Eintrag verwendet wird | +| Feldsuche | `entry/FieldSearch.svelte` | Springt zu Feldern in langen Formularen | +| Vorschau | `entry/PreviewElement.svelte` + `preview-resolver` | Löst Pfade (`deepGet`, `_lookup`) für [Medien](/admin/medien/) und gemappte [Actions](/admin/aktionen/) auf | + +## Aktionen und Suche + +- **Actions** pro Sammlung/projektweit hängst du als Methoden-Meta an (`query`-/`data`-Felder, Ausgabe-Mapping, Fortschritt) — ausführen wie unter [Aktionen](/admin/aktionen/) beschrieben. +- **Suche:** `search`-Block der Sammlung definiert Modi (`qm`-Parameter in der URL, z. B. `qm=combined`); Feld-Filter, Reiter-Filter (`sub`) und Freitext kombinieren sich — [Exporte](/admin/exporte/) übernehmen den Filter eins zu eins. +- **Stapel:** `BulkEditPanel` für Mehrfach-Änderungen direkt aus der Liste. + +## Eigene Bausteine und Exporte + + + + +Projekt-Entwickler hinterlegen Berichte in `collection.meta.exports` (`name` + `file` Pflicht, z. B. `_/assets/exports/reports.mjs`). Das Modul exportiert **eine** Standard-Funktion: + +```js title="Custom-Export-Skript (Beispiel)" +export default async function (ctx) { + const rows = await ctx.db.loadAll("orders", { select: ["orderNo"] }); + const wb = ctx.xlsx.utils.aoa_to_sheet([["Order"], ...rows.map((r) => [r.orderNo])]); + return { workbook: { SheetNames: ["R"], Sheets: { R: wb } }, filename: "report-{date}.xlsx", contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; +} +``` + +| Pflicht | Details | +|---|---| +| `ctx.db.loadAll` | Lädt in 500er-Paketen mit Fortschritt (`ctx.progress`) und Abbruch (`ctx.signal`) | +| `ctx.xlsx` | Gebündelte `xlsx-js-style`-Lib — kein Eigen-Import nötig | +| `filename` + `contentType` | Pflicht — ohne `contentType` wirft der Admin einen Fehler | +| Genau ein Payload | `workbook`, `blob`, `text` **oder** `bytes` | + +Volle Kontext-Tabelle in der Repo-Doku `custom-export-script.md`; Bedienung unter [Exporte](/admin/exporte/). + + + + +- Eigene Eingabeelemente registrierst du am `WidgetDispatcher` (Feldtyp + `meta.widget`-Name) — erst Schema in [Felder und Widgets](/projekt/felder-widgets/) prüfen. +- Neue Admin-Bereiche folgen dem Muster `components/admin/*Tab + *CreateDrawer + *DetailDrawer` mit Suche, Filter, Sortierung und Paginierung. +- KI-Kontext (`aiController`) bleibt automatisch konsistent, solange du `data-ai-id`-Attribute setzt. + + + + + + + + +Verifiziert am 2b091d899590b392491c59a54f50de43f1057280 2026-10-16 (tibi-admin-nova) diff --git a/src/content/docs/admin/eintrags-editor.md b/src/content/docs/admin/eintrags-editor.md new file mode 100644 index 0000000..29f70fc --- /dev/null +++ b/src/content/docs/admin/eintrags-editor.md @@ -0,0 +1,105 @@ +--- +title: 'Eintrags-Editor' +description: 'Felder ausfüllen, Widgets, Fremdschlüssel, i18n-Tabs, Verlauf, Tastaturkürzel.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge } from '@astrojs/starlight/components'; + +Du öffnest einen Eintrag aus einer [Liste](/admin/ansichten-listen/) und bearbeitest seine Felder im Editor des **tibi-admin** (Verwaltungs-Backend, Release Nova). Links liegt das Formular, rechts die Seitenleiste mit Aktionen und Gruppen (`meta.position`: `main`, `sidebar:`, `sidebar:settings`). Diese Seite beschreibt die Bedienung — Feldtypen und Schema-Details stehen unter [Felder und Widgets](/projekt/felder-widgets/). + +## Aufbau + + + +1. Eintrag in der Liste anklicken oder mit `n` neu anlegen. +2. Felder im Hauptbereich ausfüllen, Gruppen in der Seitenleiste prüfen. +3. Pflichtfehler beheben — der Speichern-Knopf zeigt die ersten Fehler als Tooltip. +4. Speichern mit `Strg + S` oder Knopf. Bei Erfolg toastet der Admin die Meldung. + + + +- **Ungespeicherte Änderungen:** Der Editor erkennt Abweichungen zum geladenen Stand (Sortierung der Schlüssel ignoriert er) und warnt dich. +- **Rückgängig/Wiederholen:** `Strg + Z` und `Strg + Umschalt + Z` (oder `Strg + Y`) wirken auf Feldänderungen, inklusive Array-Operationen. +- **Validierung:** Beim Verlassen eines Felds sofort, vor dem Speichern für alle sichtbaren Felder. Server-Fehler landen zusätzlich im Formular; der erste Fehler wird angescrollt. +- **Verlauf:** Über das Verlaufs-Symbol öffnest du die Audit-Historie des Eintrags und stellst eine ältere Version per Diff-Auswahl wieder her. +- **JSON-Overlay:** Für Technikfälle bearbeitest du den Roh-Datensatz direkt (Systemfelder-Einfügung inklusive). + +## Widgets + +Der `WidgetDispatcher` wählt das Eingabeelement aus `meta.widget` — sonst aus dem Feldtyp. Alle 25 Schema-Widgets aus [Felder und Widgets](/projekt/felder-widgets/) werden unterstützt (`text`, `textarea`, `number`, `checkbox`, `switch`, `select`, `selectArray`, `chipArray`, `date`, `datetime`, `file`, `image`, `json`, `richtext`, `html`, `foreignKey`, `foreignKeyChipArray`, `foreignFile`, `foreignMedia`, `pagebuilder`/`pageBuilder`, `templateProps`, `containerLessObject`, `containerLessObjectArray`, `color`). + +| Eingabe | Widgets | Hinweis | +|---|---|---| +| Kurztext | `text` | Eine Zeile, Standard für `string` | +| Langtext | `textarea`, `richtext`, `html` | Editor mit Werkzeugleiste bei `richtext` | +| Zahl | `number` | Auch für `number[]` | +| Ja/Nein | `checkbox`, `switch` | Reine Flags brauchen kein Widget | +| Auswahl | `select`, `selectArray`, `chipArray` | Optionen aus `meta.choices` | +| Datum | `date`, `datetime` | Zeitanteil nur bei `datetime` | +| Datei/Bild | `file`, `image` | Vorschau plus [Bildeditor](/admin/medien/) | +| Struktur | `json`, `templateProps`, `containerLessObject(-Array)` | Freies JSON ohne `subFields` | +| Seite | `pagebuilder` | Blöcke mit Typ-Umschalter und `dependsOn`-Feldern | +| Farbe | `color` | Farbwähler | +| Verweis | `foreignKey`, `foreignKeyChipArray`, `foreignFile`, `foreignMedia` | Siehe unten | + + + +## Fremdschlüssel und Drill-Down + +Verweisfelder (`foreignKey` und Verwandte) öffnen einen **Auswahl-Dialog**: Suche, Sortierung und Blättern wie in der [Liste](/admin/ansichten-listen/), aber gegen die Zielsammlung. Du übernimmst einen Eintrag oder legst ihn inline neu an — Vorbelegung aus dem Filter inklusive. + +- **Mehrfach-Verweise** (`foreignKeyChipArray`) sammeln mehrere Ziele als Chips. +- **Datei-Verweise** (`foreignFile`, `foreignMedia`) zeigen auf die [Mediathek](/admin/medien/); die Auflösung beim Lesen per `lookup` steht unter [Lesen und suchen](/projekt/abfragen-lesen/). +- **Verlinkter Editor:** Aus dem Dialog öffnest du den Zieleintrag in einem gestapelten Drawer und bearbeitest ihn, ohne deinen Eintrag zu verlassen. +- **Drill-Down:** Tiefe Objekt-Arrays öffnet der Editor als Ebene mit **Brotkrumen-Navigation** — ein Klick auf eine Ebene springt zurück, `Esc` geht eine Stufe hoch. + +## Mehrsprachigkeit + +Zwei Muster — beide aus Projekt-Sicht konfiguriert ([Felder und Widgets](/projekt/felder-widgets/), [Navigation und Sprachen](/projekt/navigation-i18n/)): + + + + +Felder wie `alt.de` / `alt.en` liegen als Unterfelder nebeneinander. Der Editor gruppiert sie mit Sprach-Reitern (`I18nFieldWrapper`, `I18nLanguageTabs`) — du wechselst die Sprache pro Feldgruppe. + + + + +Jede Sprache ist ein eigener Eintrag mit gleichem Gruppenschlüssel (`meta.i18n.entry`: `languageField`, `groupField`). Die **Übersetzungsleiste** über dem Formular zeigt Geschwister (anklickbar), fehlende Sprachen (per `+` anlegbar, optional mit KI-Übersetzung) und das Entkoppeln aus der Gruppe. + + + + +Sprachwechsel-Tastenkürzel: `Strg + L` (zyklisch durch die Inhaltssprachen). + +## Tastatur + +| Kürzel | Wirkung | +|---|---| +| `Strg + S` | Speichern | +| `Strg + Z` / `Strg + Umschalt + Z` | Rückgängig / Wiederholen | +| `Strg + F` | Feldsuche im Formular | +| `Strg + L` | Inhaltssprache wechseln | +| `Strg + Umschalt + F` | Suchmodus der Verweis-Dialoge wechseln | +| `Umschalt + N` | Eintrag duplizieren | +| `Esc` | Drill-Down-Ebene zurück / Dialog schließen | +| `?` | Tastaturhilfe öffnen | + + + +## Häufige Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Speichern blockiert, rote Felder | Pflichtfeld leer oder `pattern`/`in`-Regel verletzt | Tooltip am Speichern-Knopf lesen, erstes rot markiertes Feld füllen | +| Verweis lässt sich nicht wählen | Zieleintrag ohne Leserecht oder Filter zu eng | Filter im Dialog leeren, Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) prüfen | +| Übersetzung fehlt in der Leiste | Kein Gruppenschlüssel oder Sprache nicht konfiguriert | `translationKey`/`lang` prüfen, fehlende Sprache per `+` anlegen | +| Änderung „verschwunden“ | Drawer geschlossen ohne Speichern | Auf Änderungs-Warnung achten, erst Drawer-, dann Haupt-Speichern | + + + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova) diff --git a/src/content/docs/admin/exporte.md b/src/content/docs/admin/exporte.md new file mode 100644 index 0000000..ed04295 --- /dev/null +++ b/src/content/docs/admin/exporte.md @@ -0,0 +1,85 @@ +--- +title: 'Exporte' +description: 'CSV, XLSX, JSON aus Listen, vordefinierte und eigene Skript-Exporte.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge } from '@astrojs/starlight/components'; + +Du exportierst Einträge einer Sammlung im **tibi-admin** (Verwaltungs-Backend, Release Nova) direkt aus der [Liste](/admin/ansichten-listen/): als Datei für Tabellen­kalkulation, Datenaustausch oder eigene Berichte. Exportiert wird, was du siehst — Filter und Suche der Liste gelten auch für den Export. + +## Listen-Export + + + +1. Liste filtern und sortieren, bis sie zeigt, was du brauchst. +2. Export-Knopf über der Liste klicken. +3. Format wählen: `JSON`, `CSV` oder `XLSX`. +4. Spalten per Checkbox anhaken (Vorauswahl: sichtbare Tabellenspalten; `object[]`-Felder erscheinen einmal und werden beim Schreiben aufgefächert). +5. Herunterladen — der Dateiname enthält Sammlung und Datum. + + + +| Format | Technik | Wofür | +|---|---|---| +| `JSON` | Rohdatensätze als Datei | Weiterverarbeitung, Sicherung, Import anderswo | +| `CSV` | Tabellenzeilen aus der `xlsx-js-style`-Bibliothek | Excel-, Numbers- oder Skript-Import | +| `XLSX` | Arbeitsmappe aus derselben Bibliothek (Zell-Stile möglich) | Formatierte Weitergabe an Menschen | + + + +- **Große Mengen:** Vor dem Laden schätzt der Admin die Trefferzahl über `GET …//_count` (gleicher Filter wie die Liste, Suche als Obergrenze) und warnt dich vor sehr großen Exporten. +- **Dynamische Spalten:** Wachsen Arrays unterschiedlich lang, fragt der Dialog nach, ob er die Spalten auffächern soll — brichst du ab, bleibt der Dialog offen. + +## Vordefinierte Skript-Exporte + +Stehen im Export-Dialog eigene Reiter **vor** dem Standard-Tab, hat das Projekt fertige Berichte in `collection.meta.exports` hinterlegt (Name, Datei, optional Dateiname mit `{date}`-Platzhalter). Ein Klick führt das Skript mit dem aktuellen Listenfilter aus — inklusive Fortschrittsbalken. + +```yaml title="Export-Definition in der Sammlungs-Config" +# Beispiel-Eintrag in der Sammlungs-Config +exports: + - name: bestellreport + label: { de: "Bestellreport", en: "Order report" } + file: "_/assets/exports/reports.mjs" + filename: "bestellreport-{date}.xlsx" +``` + +## Eigenes Skript + +Projekt-Entwickler legen eigene Exporte als ES-Modul unter `meta.exports[].file` ab (Pfad mit `_/`-Präfix = projekt-relativ, empfohlen). Das Modul exportiert **eine Standard-Funktion**, die Kontext (Filter, Auswahl, Fortschritt) bekommt und genau ein Ergebnis zurückgibt: + +| Rückgabe | Inhalt | +|---|---| +| `workbook` | XLSX-Arbeitsmappe (wird als `.xlsx` gespeichert) | +| `blob` | Fertiger `Blob` (z. B. aus Fremd-Lib) | +| `text` | Text wie CSV oder HTML | +| `bytes` | Binärdaten wie PDF (`Uint8Array`/`ArrayBuffer`) | + +Dazu Pflicht: `filename` und `contentType` (z. B. `text/csv`, `application/pdf`) — ohne `contentType` wirft der Admin einen Fehler. Genau ein Payload pro Ergebnis. + +```js title="reports.mjs (vereinfacht)" +// reports.mjs — stark vereinfacht +export default async function (ctx) { + const rows = await ctx.db.loadAll({ filter: ctx.filter }); + ctx.progress(1, 1, "Fertig"); + const wb = ctx.xlsx.utils.json_to_sheet(rows); + return { workbook: { SheetNames: ["Report"], Sheets: { Report: wb } }, filename: "bestellreport-{date}.xlsx", contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; +} +``` + +Details für Entwickler (Kontext-Felder, Dateinamen-Platzhalter, Sanitizing) stehen in der Admin-Repo-Doku `custom-export-script.md` — im Zweifel gilt der Code (`utils/load-custom-export.ts`, `utils/custom-export-context.ts`, `utils/export.ts`). + +## Häufige Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Export enthält „falsche“ Einträge | Listenfilter (Reiter, Feld-Filter, Suche) enger als gedacht | Filter in der Liste prüfen — der Export übernimmt sie eins zu eins | +| Spalten-Warnung erscheint | Arrays ungleicher Länge brauchen aufgefächerte Spalten | Auffächern bestätigen oder Spaltenauswahl verkleinern | +| Eigener Reiter fehlt | `meta.exports`-Eintrag ohne `name` oder `file` | Projekt-Config ergänzen (beide Pflicht), Admin neu laden | +| Skript-Fehler im Dialog | Modul ohne Standard-Export oder Laufzeitfehler | Browser-Konsole lesen, Modul-Export und Rückgabeformat prüfen | +| Leere Datei trotz Treffern | Leserecht auf Zielfelder fehlt | Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) klären | + + + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova) diff --git a/src/content/docs/admin/ki-funktionen.md b/src/content/docs/admin/ki-funktionen.md new file mode 100644 index 0000000..460abea --- /dev/null +++ b/src/content/docs/admin/ki-funktionen.md @@ -0,0 +1,134 @@ +--- +title: 'KI-Funktionen' +description: 'Chat, Zusammenfassen, Stimme und Werkzeuge im Admin: was die KI kann und wo ihre Grenzen liegen.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Die KI im **tibi-admin** (Verwaltungs-Backend, Release Nova) hilft dir beim Redigieren: Sie chattet im Kontext der aktuellen Ansicht, fasst lange Verläufe zusammen, hört zu (STT) und liest vor (TTS). **Wichtig vorab: Im Frontend wählst du kein Modell** — alle Modellentscheidungen trifft der Proxy (`config/ai-proxy.config.json`); das Frontend ruft nur Endpunkte aus `frontend/assets/system.config.json` auf. + +## Chat + + + +1. **„Nova öffnen“** klicken (`AiButton.svelte`) — der Chat (`AiChat.svelte`) öffnet sich mit Verlauf (`AiConversationList.svelte`). Begrüßung: „Hallo! Ich bin Nova. Wie kann ich dir helfen?“ +2. Frage in **„Nachricht eingeben…“** stellen und **„Senden“** drücken — die KI sieht den aktuellen UI-Kontext (kompaktes JSON-Snapshot, < 500 Token). +3. Antwort prüfen: Werkzeug-Schritte zeigt `AiToolStatus.svelte`, Details der Aufrufe `AiToolInspector.svelte`. +4. Weiterfragen oder über **„Neuer Chat“** von vorn beginnen (`start_new_chat`-Werkzeug). + + + +Was die KI dabei sieht (`aiController.ts`, `AiChat.svelte`): Neben dem UI-Snapshot hängt der Chat deine Aktionen außerhalb des Chats an die nächste Nachricht an (`[User actions performed outside of chat] … [User message] …`) und markiert die erste Nachricht mit `[lang=de]` (bzw. deiner Sprache). Manche Provider verlangen die Systemnachricht genau einmal vorn — deshalb wandern Aktionen in die Benutzer-Nachricht, nicht in eine zweite Systemnachricht. + +| Baustein | Datei | Aufgabe | +|---|---|---| +| Verlauf | `lib/aiChatHistory.ts` | Gespräche in `localStorage` (`tibi-ai-conversations`, weiches Limit ~4 MB, älteste zuerst raus) | +| Steuerung | `lib/aiController.ts` | Kontext lesen, Aktionen ausführen (nicht destruktiv; Heikles nur mit deiner Bestätigung), Cursor-Animation mit Tempo 0–3 | +| Werkzeug-Definitionen | `lib/aiTools.ts` | Funktionsaufrufe für den Chat (nächster Abschnitt) | +| Schätzung | `lib/aiTokenEstimator.ts` | Heuristik ~4 Zeichen ≈ 1 Token, nur für Vorab-Entscheidungen | + +**„Token-Status“** (Knopf im Chat, `showTokenStatus`): Das Popover zeigt **„Kontext-Auslastung“** (Prozent mit Farbstufe: grün < 40 %, gelb < 70 %, orange < 85 %, rot darüber — `getContextStatus`), **„Letzter Turn“** (**„Prompt-Tokens“**, **„Completion-Tokens“**, **„Gesamt-Tokens“**, **„Geschätzte Kosten“**), **„Konversation gesamt“** (inkl. Zusammenfassungs-, Spracheingabe- und Sprachausgabe-Kosten) sowie **„Modell“** und **„Kontextfenster“**. Gezählt wird zweigleisig: Die Schätzung (`estimateTokens`, `estimateSystemOverhead`) steuert Vorab-Entscheidungen, die echten Zähler kommen aus der Stream-Antwort (`stream_options`) und landen in **„Geschätzte Kosten“** über die Anzeigetabelle `TEXT_TOKEN_PRICING` — reine Anzeige, keine Abrechnung. + +Das **„Kontextfenster“** liest der Chat aus dem Modellkatalog (Endpunkt `/api/ai/models`, `configured.chat.contextWindow`); antwortet der Katalog nicht, gelten 96 000 Token (`MODEL_CONTEXT_WINDOW`). Aktuell meldet der Proxy 262 144 (siehe `config/ai-proxy.config.json`, `chat.contextWindow`). + +Tempo der Cursor-Animation: **„Nova-Speed“** mit **„Hyperspeed“** (0, alles sofort), **„Schnell“** (1, Standard), **„Mittel“** (2), **„Langsam“** (3) — als Befehle (**„Nova-Speed: …“**) und Kennung `ai-animation-speed` in `localStorage`. Bei zu vielen Schritten stoppt Nova von selbst: „Automatisch gestoppt – zu viele aufeinanderfolgende Aktionen. Nova wurde nach {count} Schritten angehalten …“ — dann Anfrage neu formulieren oder Felder manuell prüfen. + +## Zusammenfassen + +Wächst ein Gespräch Richtung Kontextgrenze, komprimiert `lib/aiSummarizer.ts` in zwei Stufen: + +| Stufe | Schwelle | Verhalten | +|---|---|---| +| Verdichten (kostenlos, synchron) | Mehr als 12 Werkzeug-Aktivitäten | `condenseHistoricalToolMessages`: abgeschlossene alte Werkzeug-Gruppen werden zu je einer Historie-Notiz (`[HISTORY-CONDENSED: …]`, Rolle `user`), die neuesten 12 Aktivitäten bleiben roh | +| Zusammenfassen per LLM | 60 % des Fensters (`SUMMARIZE_THRESHOLD`) | Ältere Nachrichten per LLM zusammenfassen, neueste ~6 Nachrichten (max. ~8 000 Token) roh behalten | +| 85 % (`HARD_TRUNCATE_THRESHOLD`) | Hart kürzen: älteste Nachrichten verwerfen | + +- Reserviert sind 10 000 Token für System-Prompt, Werkzeug-Definitionen und Antwort (`RESERVED_TOKENS`). +- Zusammenfassungs-Modell: `proxy-managed` — auch hier entscheidet der Proxy, nicht das Frontend. Der Aufruf geht an den Zusammenfassungs-Endpunkt mit Profil `summarizer` und liest einen SSE-Strom (inkl. Zähler); Antwort leer oder Netzfehler → Rückfall auf hartes Kürzen. +- Hartes Kürzen hält Werkzeug-Paare zusammen: Verwaiste `tool`-Antworten und `assistant`-Nachrichten ohne vollständige Ergebnisse fliegen raus (`hardTruncate`, `sanitizeWireMessages`) — sonst würde die API den Turn ablehnen. +- UI: Währenddessen steht **„Kontext wird zusammengefasst…“**, danach **„Kontext zusammengefasst“** bzw. **„Zusammenfassung aktiv“** mit **„{count} Nachrichten komprimiert · ~{tokens} Tokens gespart“**. +- Themenwechsel: Schlägt Nova einen neuen Chat vor (**„Neuen Chat starten?“** — **„Neuen Chat starten“** oder **„Nein, weiter“**), fasst `summarizeForTransfer` den ganzen Verlauf zusammen und stellt deine letzte Nachricht wörtlich unter „LATEST REQUEST“. Im neuen Chat erscheint das als **„Kontext aus vorherigem Chat“** (**„{count} Nachrichten aus vorherigem Chat · ~{tokens} Tokens übertragen“**). + +## Stimme + + + + +**„Spracheingabe“** (`lib/aiVoiceInput.ts`, `VoiceRecorder`): Sprich deinen Prompt statt ihn zu tippen. + +1. Mikro-Knopf drücken — zuerst versucht der Browser **native Spracherkennung** (Status **„Hört auf diesem Gerät“**, Sprache aus ``, Standard `de-DE`). +2. Klappt das nicht, zeichnet der Admin Audio auf (**„Nimmt für KI-Transkription auf“**) und schickt es an `/api/ai/transcribe` (Proxy-Modell `large-v3-turbo`, Antwort als Text — Status **„Transkribiert mit KI“** bzw. **„Erkennt auf diesem Gerät“**). +3. Das Transkript landet im Chat-Eingabefeld (**„Wird transkribiert…“** währenddessen); Dauer und Quelle (`browser`/`api`) stehen dabei. **„Aufnahme stoppen“** beendet manuell, **„Abbrechen“** verwirft. + +Grenzen: Stille beendet automatisch nach 3 s (mobil 3,5 s, frühestens nach 600 ms Aufnahme); Schnipsel unter ~1 000 Byte werden ohne Transkription verworfen. Kostenkopf der Antwort (`X-AI-Cost-Usd`, `X-AI-Model`) zählt in **„Konversation gesamt“** unter **„Spracheingabe“**. + + + + +Antworten anhören statt lesen (`lib/aiTTS.ts`, Endpunkt `/api/ai/tts`) — Knopf **„Vorlesen“**, Stopp über **„Wiedergabe stoppen“** (**„Audio wird geladen…“** während des Ladens): + +| Einstellung | Wert (`system.config.json`) | +|---|---| +| Stimmen | `eva-de` (Standard), `kerstin-de`, `ramona-de` | +| Tempo | **„Geschwindigkeit“** 0,5–2,0, Schritt 0,1, Standard **1,3** (**„Zurücksetzen“** stellt den Standard wieder her) | +| Format | MP3 (`responseFormat: mp3`) — Opus im WebM, wenn dein Browser es kann (`preferredTTSFormat`) | + +Verhalten: Quelle zuerst Browser-**„Systemstimme auf diesem Gerät“** (passend zu deiner Dokumentsprache, Standard `de-DE`), sonst **„KI-Stimme“** (Proxy-Modell `qwen3-tts-0.6b-base`) — Anzeige **„Stimme: {voice}“**. Beim Streamen spricht Nova satzweise mit: erster Block ab ~60 Zeichen, danach ~120-Zeichen-Bündel, bis zu 2 parallele Anfragen, lückenlos aneinandergereiht. Schalter **„Sprachausgabe“** / **„Sprachausgabe aus“**; Zeichen und Kosten meldet der Server per Kopf (`X-AI-Characters`, `X-AI-Cost-Usd`) und landen unter **„Sprachausgabe“** in **„Konversation gesamt“**. + + + + +Zusatz: **Vision** (`/api/ai/vision`) beschreibt Bilder für CMS-Felder („erfinde keine nicht sichtbaren Fakten“); **Übersetzung** (`/api/ai/chat` mit System-Prompt) hält das angeforderte Ausgabeformat exakt ein. + +## Werkzeuge + +Die KI ruft UI-Werkzeuge statt zu raten (`aiTools.ts` → `aiController.ts`). Labels wörtlich aus `de.json` (`admin.ai.tools.*`); Status dazu: **„Arbeitet…“** währenddessen, danach **„1 Aktion ausgeführt“** bzw. **„{count} Aktionen ausgeführt“**, **„Details“** öffnet den **„Tool-Inspector“** (**„Tool-Aufruf“** / **„Tool-Rückgabe“**, **„Formatiert“** / **„Roh“**, **„Alle Schritte kopieren“**): + +| Gruppe | Werkzeuge (UI-Name) | +|---|---| +| Navigation | `navigate` (**„Navigieren“**), `guide_to` (**„Geführte Tour“**), `list_projects` (**„Projekte auflisten“**), `select_project` (**„Projekt öffnen“**), `select_collection` (**„Collection öffnen“**) | +| Liste | `search` (**„Suchen“**), `set_search_mode` (**„Suchmodus wechseln“**), `set_filter` (**„Filter setzen“**), `clear_filters` (**„Filter löschen“**), `sort_by` (**„Sortieren“**), `set_page` (**„Seite wechseln“**), `set_page_size` (**„Seitengröße ändern“**) | +| Auswahl | `select_records` (**„Datensätze auswählen“**), `select_all` (**„Alle auswählen“**), `deselect_all` (**„Auswahl aufheben“**), `open_collection_record` (Datensatz öffnen), `set_view_mode` (**„Ansicht wechseln“**) | +| Stapel | `open_bulk_edit` (**„Massenbearbeitung“**), `prepare_bulk_delete` (**„Löschung vorbereiten“**) | +| Eintrag & Formular | `get_entry_context` (**„Eintrag-Kontext abrufen“**), `fill_field` (**„Feld ausfüllen“**), `fill_form` (**„Formular ausfüllen“**), `focus_field` (**„Feld fokussieren“**), `save_entry` (**„Eintrag speichern“**), `cancel_entry` (**„Bearbeitung abbrechen“**), `create_entry` (**„Neuen Eintrag anlegen“**), `duplicate_entry` (**„Eintrag duplizieren“**) | +| Array-Felder | `add_array_item` (**„Array-Element hinzufügen“**), `remove_array_item` (**„Array-Element entfernen“**), `duplicate_array_item` (**„Array-Element duplizieren“**), `reorder_array_items` (**„Array-Elemente sortieren“**), `clear_array` (**„Array leeren“**) | +| Verknüpfungen | `search_foreign_options` (**„Verknüpfte Einträge durchsuchen“**), `create_foreign_entry` (**„Verknüpften Eintrag erstellen“**) | +| Navigation (Inhalt) | `open_navigation_node` (**„Navigationsknoten öffnen“**), `add_navigation_node` (**„Navigationsknoten hinzufügen“**), `move_navigation_node` (**„Navigationsknoten verschieben“**), `delete_navigation_node` (**„Navigationsknoten löschen“**) | +| Medien | `upload_media` (**„Medien hochladen“**), `quick_upload_all` (**„Alle schnell hochladen“**), `edit_image` (**„Bild bearbeiten“**), `inline_edit_title` (**„Medieneintrag öffnen“**), Warteschlange: `list_queue_items` (**„Warteschlange anzeigen“**), `edit_queue_item` (**„Element bearbeiten“**) | +| Verlauf | `get_audit_history` (**„Verlauf abrufen“**), `list_audit_log` (**„Audit-Log anzeigen“**), `restore_from_audit` (**„Aus Audit übernehmen“**) | +| Oberfläche | `toggle_sidebar` (Seitenleiste, Tool-Name als Anzeige), `open_field_search` (Feldsuche, Tool-Name als Anzeige), `set_theme` (**„Theme wechseln"**), `switch_language` (**„Sprache wechseln"**), `highlight_element` (**„Element hervorheben"**), `explain_ui` (**„UI erklären"**), `list_ui_elements` (**„UI-Elemente auflisten"**), `click_element` (**„Element klicken"**), `drill_navigate` (Ansicht lesen, Tool-Name als Anzeige) | +| Daten lesen | `get_collection_records` (Datensätze lesen, Tool-Name als Anzeige), `get_collection_schema` (Schema lesen, Tool-Name als Anzeige), `list_users` (**„Benutzer auflisten"**) | +| Chat | `start_new_chat` (**„Neuer Chat“**), `run_tool_batch` (**„Batch ausführen“**) | + +Stapel-Limits (`aiTools.ts`): `run_tool_batch` fasst bis zu 40 ändernde Schritte (100 bei rein lesenden wie **„Kontext abrufen“**, **„Projekte auflisten“**, **„Benutzer auflisten“**) — darüber verweigert der Batch. `get_context` (**„Kontext abrufen“**) und `get_entry_context` lesen gezielt nach: Standardablauf ist erst Eintrag öffnen, dann `get_entry_context`, dann die Feld-Updates möglichst als ein Batch. + + + +## Grenzen und Kosten + +Wichtig zur Einordnung: Der Admin-Chat läuft über den Proxy (`/api/ai/chat`, `/api/ai/vision`, `/api/ai/transcribe`, `/api/ai/tts`) — **nicht** über `POST /api/v1/llm/chat` am tibi-server. Die Benutzer-/Org-Budgets mit `429` aus [LLM nutzen](/projekt/llm-nutzen/) greifen daher hier nicht; was hier begrenzt, steht in `config/ai-proxy.config.json` und `frontend/assets/system.config.json`: + +| Punkt | Stand | +|---|---| +| Modellwahl | Gibt es im Frontend nicht — Proxy-Config entscheidet (Chat, Zusammenfassen, Übersetzung, Vision je eigenes Modell/Fenster) | +| Preise im Proxy | Aktuell `0` (interne Test-Modelle: alle `pricing`-Felder `0`); die Schätztabelle im Frontend (`TEXT_TOKEN_PRICING`) dient nur der Anzeige im **„Token-Status“** | +| Fenster & Antwortlänge | Chat 262 144 / max. 12 000 Token, Zusammenfassen und Übersetzung je 262 144 / 6 000, Vision 32 768 / 6 000 | +| Verlauf | Nur lokal im Browser (`localStorage`: `tibi-ai-conversations`, weich ~4 MB — älteste zuerst raus; Single-Chat-Notbremse: nur letzte 4 Wire-Nachrichten bleiben) | +| Stapel | `run_tool_batch`: max. 40 ändernde bzw. 100 rein lesende Schritte | +| Sprache | 3 s Stille beendet (mobil 3,5 s), Schnipsel < ~1 KB verfallen; TTS-Bündel ab ~60/120 Zeichen | +| Offline | Ohne Server keine KI — Chat, STT, TTS brauchen ihre Endpunkte | + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Chat antwortet nicht | Endpunkt `/api/ai/chat` unerreichbar oder Proxy down | [Admin einrichten](/admin/setup/) prüfen, später erneut versuchen | +| **„KI-Dienst ist nicht erreichbar. Bitte versuche es später erneut.“** | Endpunkt fehlt (404) oder Proxy liefert JSON statt Nutzdaten | [Admin einrichten](/admin/setup/) prüfen | +| **„KI-Dienst nicht konfiguriert. Bitte kontaktiere den Administrator.“** | 401/403 am Proxy (Schlüssel/Config) | Administrator ansprechen | +| **„Rate-Limit erreicht. Bitte warte einen Moment und versuche es erneut.“** | 429 am Proxy | Kurz warten, erneut versuchen | +| **„Der KI-Dienst ist vorübergehend nicht erreichbar. Bitte versuche es später erneut.“** | 5xx am Proxy | Später erneut versuchen | +| **„Mikrofon-Zugriff verweigert. …“** | Browser-Recht fehlt | Mikrofon in den Browser-Einstellungen freigeben | +| **„Transkription fehlgeschlagen: {error}“** | Rate-Limit, Netz oder Proxy-Fehler | Kürzeren Abschnitt sprechen, erneut versuchen | +| Stimme klingt falsch | Andere Stimme aktiv | Stimme in den KI-Einstellungen zurück auf `eva-de` setzen | + + + +Verifiziert am 2b091d89 2026-10-16 (tibi-admin-nova: AiChat/AiButton/AiConversationList/AiToolStatus/AiToolInspector/AiDebugContext, aiChatHistory/aiController/aiTools/aiTokenEstimator/aiVoiceInput/aiSummarizer/aiTTS/aiModelCatalog, config/ai-proxy.config.json, frontend/assets/system.config.json, de.json admin.ai + Befehle) diff --git a/src/content/docs/admin/konzept.md b/src/content/docs/admin/konzept.md new file mode 100644 index 0000000..74a244f --- /dev/null +++ b/src/content/docs/admin/konzept.md @@ -0,0 +1,36 @@ +--- +title: Admin-Konzept +description: Was tibi-admin ist, wie es läuft und wie es zum Server passt. +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; + +> **Handseite.** Wird vom Sync nie überschrieben (`keep`). + +**tibi-admin** ist das Verwaltungs-Backend — die Bedienoberfläche zum Tibi-Server (aktuelles Release **Nova**). Code-Repo: `tibi-admin-nova` — das ist das einzig gültige Repo, alte `tibi-admin`-Repos werden ignoriert. Projekt-Websites (kleine Websites, Shops, Intranet-Anwendungen aus `tibi-svelte-starter`) sind eigenständig und laufen getrennt davon. + +- Svelte-SPA als statisches Bundle, läuft lokal im Mock-Modus (Projekt `t1`) und in Staging/Live hinter Reverse Proxy gegen den echten tibi-server. +- Laufzeitwerte in `frontend/assets/system.config.json`, Proxy-Ziele/Modelle in `config/ai-proxy.config.json`. +- Screens: `frontend/src/lib/components/admin/` (Hub, Orgs, Teams, User, Projekte) und `components/entry/` (Editor, Widgets, Drawers, Preview). + +## Wo finde ich was? + + + + Docker-Stack, Mock-Modus, URLs. [Lesen](/admin/setup/). + + + Ansichten, Widgets, Fremdschlüssel, Exporte, Skripte. [Lesen](/admin/customizing/). + + + [Ansichten und Listen](/admin/ansichten-listen/), [Eintrags-Editor](/admin/eintrags-editor/), [Medien](/admin/medien/), [Exporte](/admin/exporte/). + + + [Aktionen](/admin/aktionen/), [Benutzer und Rechte](/admin/benutzer-rechte/), [KI-Funktionen](/admin/ki-funktionen/). + + + Bereich [Anwender](/anwender/anmelden/): Bedienung des Verwaltungs-Backends für Redakteure und Betreiber — nicht Anleitung für Besucher der Projekt-Websites. + + + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova). diff --git a/src/content/docs/admin/medien.md b/src/content/docs/admin/medien.md new file mode 100644 index 0000000..e48285c --- /dev/null +++ b/src/content/docs/admin/medien.md @@ -0,0 +1,83 @@ +--- +title: 'Medien im Admin' +description: 'Raster, Upload-Warteschlange, Bildeditor, Vorschau aus Admin-Sicht.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge } from '@astrojs/starlight/components'; + +Bilder, PDFs und andere Dateien verwaltest du im **tibi-admin** (Verwaltungs-Backend, Release Nova) in einer Medien-Sammlung — meist `medialib` mit `viewHint.media`. Dieselben Werkzeuge stecken auch in Datei-Feldern des [Eintrags-Editors](/admin/eintrags-editor/). Projekt-Grundlagen (Pfade, Größen, Formate) stehen unter [Dateien und Bilder](/projekt/dateien-bilder/). + +## Raster + +Die Medienansicht zeigt Kacheln mit Vorschaubild, Titel und Auswahl-Status. Darüber liegen Suche, Sortierung, Filter und Blättern wie in jeder [Liste](/admin/ansichten-listen/). + +- **Klick** öffnet die Vollbild-**Vorschau** (Lightbox): Blättern per Pfeiltasten und Knöpfe, Download-Knopf, PDF-Vorschau per eingebettetem Rahmen. +- **Mehrfachauswahl** per Checkbox oder `Leertaste` — danach Massenbearbeitung oder Löschen wie in der Tabellenansicht. +- **Titel-Erkennung:** Fehlt eine explizite `autoFill`-Konfiguration, rät der Admin das Titelfeld aus üblichen Namen (`title`, `name`, `titel`, `label`, `bezeichnung`). +- **Hervorhebung:** Suchtreffer markiert das Raster im passenden Feld. + +## Upload + + + +1. Dateien auf das Raster ziehen oder den Upload-Knopf klicken (Mehrfachauswahl möglich). +2. Pro Datei füllt der Admin Titel und Alternativtext aus dem Dateinamen vor (`autoFill`-Konfiguration der Sammlung). +3. Die **Warteschlange** lädt mit Fortschrittsbalken — einzeln sofort oder alle als Stapel. +4. Nach dem Hochladen lädt das Raster neu; die neuen Einträge sind direkt verlinkbar. + + + +- **Dateinamen-Import:** Die Warteschlange erkennt Titel aus Dateinamen und schlägt Alternativtexte vor. +- **KI-Alt-Text:** Ist er für die Sammlung konfiguriert, läuft die Generierung pro Warteschlangen-Eintrag mit Statusanzeige (wartend, laufend, abbrechbar). +- **Inline-Anlage:** Aus Datei-Feldern heraus legst du Medien-Datensätze im Drawer an, ohne den Editor zu verlassen. +- **Grenzen:** Erlaubte Typen und maximale Größe kommen aus dem Feld-Validator (`accept`, `maxFileSize`, z. B. `"50MB"` in `medialib.yml`) — Schema-Details unter [Felder und Widgets](/projekt/felder-widgets/). + +## Bildeditor + +Den Editor öffnest du aus der Kachel oder aus Datei-Feldern (`Bild bearbeiten`). Er arbeitet rein im Browser (Canvas/CSS, keine Zusatzbibliothek) und schreibt das Ergebnis ins Dateifeld zurück. + +| Werkzeug | Was du einstellst | +|---|---| +| Zuschnitt | Freies oder festes Seitenverhältnis, pixelgenau | +| Drehen/Spiegeln | 90°-Schritte, horizontal/vertikal (Zuschnitt wird dabei zurückgesetzt) | +| Anpassen | Helligkeit, Kontrast, Sättigung mit Live-Vorschau | +| Fokuspunkt | Klickpunkt für Ausschnitt-Steuerung in der Projekt-Website | +| Skalieren | Zielgröße in Pixeln | +| Palette | Dominante Farben prüfen und pflegen | + +Welche Werkzeuge verfügbar sind, steuert die Projekt-Konfiguration (`crop`, `rotate`, `flip`, `scale`, `focalPoint`, `adjust`, `palette`). + +## Einbetten + +Aus Redakteurs-Sicht gibt es drei Wege, eine Datei in Inhalte zu bringen: + + + + +`foreignMedia`-Felder (z. B. `blocks.heroImage.image`) verweisen auf die Mediathek. Wähle den Eintrag im Verweis-Dialog — die Projekt-Website löst ihn per `lookup` auf ([Lesen und suchen](/projekt/abfragen-lesen/)). + + + + +`file`- und `image`-Felder halten den Upload direkt am Eintrag (Klick oder Drag-and-drop, Vorschau, Bildeditor). Erlaubte Typen liest der Admin aus `validator.accept`. + + + + +Bilder im Fließtext verwaltet das `richtext`-Widget des Editors (siehe [Eintrags-Editor](/admin/eintrags-editor/)). + + + + +## Häufige Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Upload abgelehnt | Typ nicht in `accept` oder Datei über `maxFileSize` | Kleinere oder passende Datei wählen, ggf. Projekt-Konfiguration anpassen | +| Vorschaubild fehlt | Kein Bildfeld erkannt oder Datei kein Bild | Titel- und Dateifeld der Sammlung prüfen, PDF öffnet sich in der Vorschau statt als Bild | +| Bild-Einbettung bleibt leer | Verweis ohne `lookup` gelesen oder Eintrag nicht öffentlich | `lookup` auf `medialib` prüfen, `active`-Status und Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) klären | +| Editor-Änderung weg | Dialog ohne Übernehmen geschlossen | Erst im Bildeditor übernehmen, dann den Eintrag speichern | + + + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova) diff --git a/src/content/docs/admin/setup.md b/src/content/docs/admin/setup.md new file mode 100644 index 0000000..89defdc --- /dev/null +++ b/src/content/docs/admin/setup.md @@ -0,0 +1,85 @@ +--- +title: 'Admin einrichten' +description: 'tibi-admin lokal starten und mit dem Server verbinden: Installieren, Docker-Stack, URLs, Mock-Modus.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du richtest das **tibi-admin** (Verwaltungs-Backend, Release Nova) lokal ein und verbindest es mit dem Tibi-Server. Code-Repo ist ausschließlich `tibi-admin-nova` — alte `tibi-admin`-Repos ignorieren. Stack: **Svelte 5**, **esbuild**-Build, **Tailwind 4**, **Playwright**-Tests (siehe `package.json`). + +## Voraussetzungen + +| Braucht | Wofür | +|---|---| +| Node 20 + `yarn` | `yarn install`, esbuild-Build (`scripts/esbuild-wrapper.js`) | +| Docker + Compose | Lokaler Stack (`docker-compose-local.yml`, Profile `tibi` / `tibi-dev`) | +| Datei `.env` | Projekt-Name, URLs, Ports (Beispielwerte unten) | + +```sh title="Versionen prüfen" +node --version # 20.x +yarn --version +docker compose version +``` + +## Starten + + + + + + +1. `cp .env.example .env` (falls vorhanden) und `PROJECT_NAME` setzen. +2. `make init` — legt `tmp/`-Verzeichnisse an. +3. `make docker-up` — startet Frontend-Build, `tibiserver`, Mongo, Maildev (`--profile tibi`). +4. Admin-URL aus `.env` öffnen (z. B. `https://.code.testversion.online` bzw. lokal Port **3000**). +5. Auf der [Login-Seite](/admin/benutzer-rechte/) anmelden. + + + +| Dienst | Port/Exposed | Hinweis | +|---|---|---| +| `yarnstart` (Admin-Frontend) | **3000** | Baut per `yarn install && yarn start…` mit `API_BASE` aus `.env` | +| `tibiserver` | **8080** | API unter `/api`, Admin ruft `/api/v1` | +| Mongo / Maildev | intern | Über Compose-Namen verdrahtet | + +Nützliche Ziele: `make docker-ps`, `make docker-logs`, `make docker-down`, `make docker-restart-frontend`. + + + + + + +1. `yarn install` +2. `API_BASE=https:///api/v1 yarn start` (Dev) bzw. `yarn build` (statisches Bundle). +3. Browser auf die ausgegebene lokale URL zeigen. + + + +`API_BASE` entscheidet, gegen welchen Server du arbeitest — Staging-URL steht in `.env` als `STAGING_TIBI_API_URL` (z. B. `https://dev-tibi-server.staging.testversion.online/api/v1`). + + + + +## Verbinden und Mock-Modus + +| Modus | Erkennen | Verhalten | +|---|---|---| +| Echter Server | `API_BASE` zeigt auf laufenden tibi-server | Alle Daten live; Login per Benutzername/Passwort | +| Mock-Modus | Kein Server erreichbar / Mock-Flag (`isMockMode()`) | Lokale Demo-Daten, Demo-Projekt `t1`; Actions simulieren Fortschritt (`simulateMockProgress`) | + +- Laufzeitwerte liegen in `frontend/assets/system.config.json` (KI-Endpunkte, TTS-Stimmen); Proxy-Ziele und Modelle in `config/ai-proxy.config.json` — siehe [KI-Funktionen](/admin/ki-funktionen/). +- Fehlerbilder bei falscher Verbindung: Login-Fehlerbox, Netzwerkfehler bei Listen/Actions — dann `API_BASE`, Server-Container (`make docker-ps`) und [Token-Köpfe](/reference/token-koepfe/) prüfen. + +## Prüfen + +```sh title="Build und Tests" +yarn validate # svelte-check + tsc +yarn build # esbuild-Bundle, muss fehlerfrei durchlaufen +yarn test:e2e # Playwright E2E +``` + + + + + +Verifiziert am 2b091d899590b392491c59a54f50de43f1057280 2026-10-16 (tibi-admin-nova) diff --git a/src/content/docs/adr/0000-vorlage.md b/src/content/docs/adr/0000-vorlage.md new file mode 100644 index 0000000..fb7d4d3 --- /dev/null +++ b/src/content/docs/adr/0000-vorlage.md @@ -0,0 +1,11 @@ +--- +title: ADR-Vorlage +description: So halten wir Architektur-Entscheide fest. +--- + +## Vorlage + +- **Datum:** +- **Kontext:** +- **Entscheidung:** +- **Folgen:** diff --git a/src/content/docs/adr/0001-starlight.md b/src/content/docs/adr/0001-starlight.md new file mode 100644 index 0000000..c95bf3a --- /dev/null +++ b/src/content/docs/adr/0001-starlight.md @@ -0,0 +1,9 @@ +--- +title: Starlight als Doku-Basis +description: Warum Astro Starlight und statischer Build. +--- + +- **Datum:** 2026-10-16 +- **Kontext:** Leere Doku, zwei Zielgruppen (Entwickler, Endkunden), Single Source in Quell-Repos. +- **Entscheidung:** Astro Starlight, Deutsch als Standard, statischer Build mit Pagefind-Suche, Theming an tibi-admin angelehnt. +- **Folgen:** Markdown-Quellen, Sidebar explizit in `astro.config.mjs`, Bilder unter `src/assets/` (max 200 KB, deutsche Alt-Texte). diff --git a/src/content/docs/adr/0002-code-schlaegt-doku.md b/src/content/docs/adr/0002-code-schlaegt-doku.md new file mode 100644 index 0000000..ab83c3e --- /dev/null +++ b/src/content/docs/adr/0002-code-schlaegt-doku.md @@ -0,0 +1,9 @@ +--- +title: Code schlägt Doku +description: Bestandsdoku gilt als Behauptung und wird am Code verifiziert. +--- + +- **Datum:** 2026-10-16 +- **Kontext:** Bestandsdoku kann veraltet sein (Beispiel: Go-Version im README vs. `go.mod`, Collection-Config „Stand Februar 2026“ vs. aktuelle Schemas). +- **Entscheidung:** Quelle ist der Code (`internal/config`, Router, `internal/hook/context_*`, `tibi-types/schemas`, `frontend/src/lib/components`, `tests/e2e`, Test-Pläne). Übernommene Seiten tragen „verifiziert am “. Benennung: **tibi-server** und **tibi-admin** (Release Nova, Repo `tibi-admin-nova`), alte `tibi-admin`-Repos ignorieren. +- **Folgen:** Sync rendert nur, Handseiten (`server/uebersicht.md`, `admin/konzept.md`) ordnen. CI prüft Drift (`npm run sync && npm run build`). diff --git a/src/content/docs/adr/0003-selbstlaeufer.md b/src/content/docs/adr/0003-selbstlaeufer.md new file mode 100644 index 0000000..7aef1e8 --- /dev/null +++ b/src/content/docs/adr/0003-selbstlaeufer.md @@ -0,0 +1,9 @@ +--- +title: Selbstläufer-Regel +description: Wie weiterentwickelnde Agenten die Doku automatisch mitpflegen. +--- + +- **Datum:** 2026-10-16 +- **Kontext:** Tibi-Server, tibi-admin und Starter entwickeln sich weiter. Die Doku (57 Seiten, Stand 2026-10-16) soll nicht veralten. +- **Entscheidung:** Definition of Done für jede Änderung an API, Hooks, Collections, Permissions, Jobs, Realtime, LLM, MCP, Suche, Deploy oder Admin-UX: passende Doku-Seite aktualisieren + `Verifiziert am ` erneuern + `npm run sync && npm run build` grün. Screenshots nur aus Mock-Projekt `corporate` (nie `t1`), Auftrag unter `plans/t-shots-arbeitsauftrag.md`. Vollständigkeits-Tabelle in `plans/doku-ausbau.md` bei neuen Fähigkeiten erweitern (1 Fähigkeit = 1 Dokustelle). +- **Folgen:** Diese Regel in die Agenten-Regeln von `tibi-server`, `tibi-admin-nova` und `tibi-svelte-starter` spiegeln (jeweils `AGENTS.md`-Ergänzung, noch offen). CI in tibi-docs prüft Drift (Docs neuer als Sync, Schema-Feld ohne Widget-Doku). diff --git a/src/content/docs/anwender/anmelden.md b/src/content/docs/anwender/anmelden.md new file mode 100644 index 0000000..a49a737 --- /dev/null +++ b/src/content/docs/anwender/anmelden.md @@ -0,0 +1,73 @@ +--- +title: 'Anmelden' +description: 'Anmelden, Abmelden und Passwort im tibi-admin.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Du arbeitest im **tibi-admin**, dem Verwaltungs-Backend für deine Inhalte (Release **Nova**). Diese Seite beschreibt Anmeldung, Abmeldung und den Umgang mit Sitzungsende. + +## Anmelden + + + +1. Öffne die Anmeldeadresse deines tibi-admin im Browser. +2. Gib deinen **Benutzername** ein. +3. Gib dein **Passwort** ein. +4. Klicke auf **Anmelden**. + + + +![Anmeldemaske von tibi-admin mit Feldern für Benutzername und Passwort](../../../assets/anwender/anmelden-login.webp) + + + +## Wenn die Anmeldung fehlschlägt + +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**. + + + + + +## Abmelden und Profil + + + +1. Klicke oben rechts auf deinen Namen oder dein Bild. +2. Wähle im Menü **Mein Profil**, um deine Daten einzusehen. +3. Wähle im Menü **Abmelden**, um die Sitzung zu beenden. + + + +![Geöffnetes Benutzermenü oben rechts mit den Punkten Mein Profil und Abmelden](../../../assets/anwender/anmelden-abmelden.webp) + +## Automatisches Sitzungsende + +Bei längerer Inaktivität meldet dich tibi-admin automatisch ab. Es erscheint der Hinweis **Sitzung abgelaufen – bitte neu anmelden**. + + + +1. Lies den Hinweis. +2. Öffne die Anmeldeseite erneut (der Hinweis führt dich dorthin zurück). +3. Melde dich wie oben mit Benutzername und Passwort an. + + + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/benutzer-teams.md b/src/content/docs/anwender/benutzer-teams.md new file mode 100644 index 0000000..3055f3e --- /dev/null +++ b/src/content/docs/anwender/benutzer-teams.md @@ -0,0 +1,68 @@ +--- +title: 'Benutzer und Teams' +description: 'Benutzer, Teams und Zuständigkeiten verstehen.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Du arbeitest im **tibi-admin**, dem Verwaltungs-Backend (Release **Nova**). Auf dieser Seite änderst du nichts — du liest ab, wer du bist und wer zuständig ist. + +## Eigene Rolle prüfen + + + +1. Klicke oben rechts auf deinen Namen. +2. Klicke auf **Mein Profil**. +3. Lies deinen Namen und deine E-Mail-Adresse ab. +4. Suche das Feld mit deiner Rolle. + + + + + +![Profilansicht mit Name, Rolle und persönlichen Daten](../../../assets/anwender/benutzer-profil.webp) + +## Teams und Zuständigkeit + + + +1. Öffne die **Benutzerverwaltung**, falls du sie im Menü siehst. +2. Suche dein Team in der Liste. +3. Klicke dein Team an. +4. Lies die Mitgliederliste. + + + + + +![Teamansicht Content mit Mitgliederliste](../../../assets/anwender/benutzer-teams.webp) + +## Anfrage stellen statt selbst ändern + +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. +4. Warte auf die Bestätigung. +5. Prüfe danach, ob die Freischaltung vorliegt. + + + + + +## 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. + +Was du über das Verwaltungs-Backend wissen musst, steht unter [Admin-Konzept](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/eintrag-bearbeiten.md b/src/content/docs/anwender/eintrag-bearbeiten.md new file mode 100644 index 0000000..5b6620c --- /dev/null +++ b/src/content/docs/anwender/eintrag-bearbeiten.md @@ -0,0 +1,88 @@ +--- +title: 'Einträge anlegen und bearbeiten' +description: 'Neuen Eintrag erstellen, ausfüllen und speichern.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Ein Eintrag ist ein einzelner Inhalt, beispielsweise eine Nachricht. Du öffnest ihn aus einer Liste, wie unter [Lesen, suchen, filtern](/anwender/lesen-suchen-filtern/) beschrieben. + +## Neuen Eintrag anlegen + + + +1. Öffne die Sammlung, in die der Eintrag gehört. +2. Klicke oben auf **Neuer Eintrag**. +3. Warte, bis das leere Formular erscheint. + + + +![Journal-Liste mit der Schaltfläche Neuer Eintrag oben rechts](../../../assets/anwender/eintrag-neu.webp) + + + + + +## Formular ausfüllen + +Links steht das Formular, rechts stehen Zusatzinformationen. Arbeite die Felder von oben nach unten ab. + + + +1. Gib im ersten Textfeld den Titel ein. +2. Verfasse im großen Textfeld den Inhalt. +3. Stelle Zahlen über die Pfeile am Zahlenfeld ein. +4. Lege Schalter für Ja oder Nein um. +5. Wähle bei Datum das Datum im Kalender. +6. Wähle bei Auswahl einen Vorschlag aus der Liste. +7. Wähle bei Verweis auf einen anderen Inhalt den passenden Eintrag im Fenster **Durchsuchen**. + + + +![Ausgefülltes Formular mit Titel, Teaser und Inhalt](../../../assets/anwender/eintrag-formular.webp) + + + +## Speichern und prüfen + + + +1. Klicke oben auf **Speichern**. +2. Warte auf die Bestätigung **Eintrag gespeichert**. +3. Lade die Seite einmal neu und prüfe deine Änderung. + + + +![Gespeicherter Eintrag mit der Bestätigung Gespeichert oben rechts](../../../assets/anwender/eintrag-gespeichert.webp) + + + +## Wenn das Speichern blockiert ist + +Rot markierte Felder bedeuten: Hier fehlt eine Angabe oder sie ist ungültig. + + + +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**. + + + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/exportieren.md b/src/content/docs/anwender/exportieren.md new file mode 100644 index 0000000..5af7b16 --- /dev/null +++ b/src/content/docs/anwender/exportieren.md @@ -0,0 +1,65 @@ +--- +title: 'Exportieren' +description: 'Listen als CSV, XLSX oder JSON exportieren.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Du lädst eine Liste aus dem **tibi-admin**, dem Verwaltungs-Backend (Release **Nova**), als Datei herunter. Exportiert wird genau das, was du in der Liste siehst — Filter gelten auch für die Datei. + +## Export öffnen + + + +1. Öffne die Liste, die du benötigst. +2. Stelle Filter und Suche wie erforderlich ein. +3. Klicke auf **Export** über der Liste. +4. Warte, bis sich der Dialog **Export** öffnet. +5. Prüfe, ob die Auswahl zu deinem Filter passt. + + + +![Export-Dialog mit Formatwahl und Spaltenauswahl](../../../assets/anwender/export-dialog.webp) + +## Format wählen und laden + + + +1. Klicke auf ein Format (CSV, XLSX oder JSON). +2. Wähle die benötigten Felder (**Nur sichtbare** oder **Alle auswählen**). +3. Lege bei Arrays die Array-Behandlung fest (**JSON** oder **Dynamische Spalten**). +4. Klicke auf **Exportieren**. +5. Warte, bis der Fortschritt abgeschlossen ist. +6. Öffne die Datei auf deinem Rechner. + + + + + + + +## Datei prüfen + + + +1. Öffne die heruntergeladene Datei. +2. Prüfe die ersten Zeilen. +3. Kontrolliere grob, ob die Menge zu Filter und Suche passt. +4. Speichere die Datei an einem geeigneten Ort. +5. Schließe den Dialog im tibi-admin. + + + +![Bestätigung 5 Einträge exportiert nach abgeschlossenem Export](../../../assets/anwender/export-fertig.webp) + + + +Wie du Listen filterst, steht unter [Lesen, Suchen, Filtern](/anwender/lesen-suchen-filtern/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/hilfe.md b/src/content/docs/anwender/hilfe.md new file mode 100644 index 0000000..0826fa0 --- /dev/null +++ b/src/content/docs/anwender/hilfe.md @@ -0,0 +1,91 @@ +--- +title: 'Hilfe, wenn es klemmt' +description: 'Häufige Fragen und was du dann tust.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Diese Seite fasst die häufigsten Probleme im **tibi-admin** (Release **Nova**) und ihre Lösung zusammen. Gehe die Punkte der Reihe nach durch. + +## Anmeldung schlägt fehl + + + +1. Prüfe die Adresse im Browser (Staging und Live nicht verwechseln). +2. Gib Benutzername und Passwort erneut ein. +3. Klicke auf **Anmelden**. +4. Warte die Rückmeldung ab. + + + + + + + +## Eintrag wird nicht gefunden + + + +1. Drücke „/" und gib einen kurzen Begriff in der Schnellsuche ein. +2. Wechsle in die passende Sammlung in der linken Liste. +3. Setze alle Filter zurück (**Alle zurücksetzen**). +4. Blättere eine Seite weiter. + + + + + +## Speichern ist blockiert + + + +1. Lies die rote Meldung am Feld. +2. Fülle das markierte Pflichtfeld aus. +3. Kürze zu lange Texte. +4. Klicke erneut auf **Speichern**. + + + + + +## Bild fehlt + + + +1. Öffne den Eintrag mit dem Bild. +2. Klicke das Bildfeld an. +3. Prüfe, ob dort ein Bild gewählt ist. +4. Wähle das Bild erneut aus der Mediathek. +5. Klicke auf **Speichern**. + + + + + +## 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. + + + + + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/ki-nutzen.md b/src/content/docs/anwender/ki-nutzen.md new file mode 100644 index 0000000..9edffd9 --- /dev/null +++ b/src/content/docs/anwender/ki-nutzen.md @@ -0,0 +1,105 @@ +--- +title: 'KI nutzen' +description: 'Nova im Admin: chatten, zusammenfassen, diktieren und vorlesen lassen.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Die KI **Nova** im **tibi-admin** (Release **Nova**) hilft dir beim Redigieren: Sie beantwortet Fragen zur geöffneten Ansicht, fasst lange Gespräche zusammen und versteht gesprochene Eingaben. So nutzt du sie. + +## Chat öffnen und fragen + + + +1. Klicke auf **Nova öffnen**. +2. Schreibe deine Frage in das Feld **Nachricht eingeben…** und klicke auf **Senden**. +3. Lies die Antwort — Nova begrüßt dich mit „Hallo! Ich bin Nova. Wie kann ich dir helfen?". +4. Stelle Rückfragen oder beginne über **Neuer Chat** von vorn. + + + + + +![Geöffneter Nova-Chat mit Begrüßung, Frage und Antwort im Corporate-Projekt](../../../assets/anwender/ki-chat.webp) + +## Was Nova für dich erledigt + + + +1. Bitte um **Suchen**: Nova durchsucht die Einträge der geöffneten Sammlung nach deinem Begriff. +2. Bitte um **Filter setzen**: Nova grenzt die Liste ein, zum Beispiel auf einen Zeitraum oder einen Status. +3. Bitte um **Formular ausfüllen**: Nova trägt Werte in die Felder des geöffneten Eintrags ein — du prüfst und speicherst selbst. + + + + + +## Lange Gespräche zusammenfassen + + + +1. Frage einfach weiter — um volle Verläufe kümmert sich Nova selbst. +2. Währenddessen meldet Nova **Kontext wird zusammengefasst…**. +3. Danach steht **Kontext zusammengefasst** bzw. **Zusammenfassung aktiv** mit der Angabe, wie viele Nachrichten verdichtet wurden. +4. Den Füllstand prüfst du über **Token-Status** unter **Kontext-Auslastung**. + + + + + +![Token-Status mit Kontext-Auslastung und Zählern der Unterhaltung](../../../assets/anwender/ki-zusammenfassen.webp) + +## Sprechen statt tippen + + + +1. Klicke auf **Spracheingabe** und sprich deine Frage aus. +2. Der Status zeigt **Hört auf diesem Gerät** oder **Nimmt für KI-Transkription auf**. +3. Der erkannte Text erscheint im Eingabefeld (**Wird transkribiert…** währenddessen). +4. Beende mit **Aufnahme stoppen** oder verwerfe mit **Abbrechen**. + + + + + +1. Lasse dir eine Antwort mit **Vorlesen** vortragen (**Audio wird geladen…** während des Ladens). +2. Stoppe mit **Wiedergabe stoppen**. +3. Schalte die Sprachausgabe über **Sprachausgabe** ein und über **Sprachausgabe aus** wieder aus; das Tempo stellst du unter **Geschwindigkeit** ein (**Zurücksetzen** stellt den Standard wieder her). + + + + + + + +![Spracheingabe mit Status Hört auf diesem Gerät, diktiertem Text im Eingabefeld und Vorlesen-Knopf an der Antwort](../../../assets/anwender/ki-stimme.webp) + +## Grenzen + + + +1. Erscheint „Rate-Limit erreicht. Bitte warte einen Moment und versuche es erneut.", warte kurz und versuche es erneut. +2. Meldet Nova „KI-Dienst ist nicht erreichbar. Bitte versuche es später erneut." oder „Der KI-Dienst ist vorübergehend nicht erreichbar. Bitte versuche es später erneut.", prüfe deine Verbindung und versuche es später erneut. +3. Steht dort „KI-Dienst nicht konfiguriert. Bitte kontaktiere den Administrator.", wende dich an den Betreiber. + + + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). Kommt die KI nicht weiter, hilft [Hilfe, wenn es klemmt](/anwender/hilfe/). + +Geprüft an 2b091d89 (tibi-admin-nova) + +Screenshots: Mock-Projekt Corporate Website; KI-Antworten und Statusanzeigen simuliert, kein echter Dienst. Die Zusammenfassung lief ohne sichtbares Banner durch — der Shot zeigt den zugehörigen Token-Status. diff --git a/src/content/docs/anwender/lesen-suchen-filtern.md b/src/content/docs/anwender/lesen-suchen-filtern.md new file mode 100644 index 0000000..ef5607c --- /dev/null +++ b/src/content/docs/anwender/lesen-suchen-filtern.md @@ -0,0 +1,103 @@ +--- +title: 'Lesen, suchen, filtern' +description: 'Listen lesen, suchen, sortieren und filtern.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Du hast eine Sammlung geöffnet und siehst eine Liste mit Einträgen. Diese Seite beschreibt Lesen, Suchen, Filtern, Sortieren und Blättern. Wie du dorthin gelangst, steht unter [Sich zurechtfinden](/anwender/orientierung/). + +## Liste lesen + +Oben steht der Name der Sammlung, darunter die Einträge als **Tabelle** oder **Karten**. + + + +1. Lies die erste Zeile von links nach rechts als Beispiel. +2. Beachte oben die Spaltenüberschriften, sie benennen die Inhalte. +3. Wechsle oben rechts die Ansicht, um zwischen **Tabelle** und **Karten** umzuschalten. + + + +![Journal-Liste als Tabelle mit Suchfeld und Einträgen](../../../assets/anwender/lesen-liste.webp) + + + +![Journal-Einträge in der Kartenansicht](../../../assets/anwender/lesen-karten.webp) + +## Suchen + + + +1. Klicke oben in das Suchfeld **Einträge durchsuchen…**. +2. Gib einen Begriff ein und warte einen Moment. +3. Die Liste zeigt nur noch die Treffer. + + + + + +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. +3. Leere das Suchfeld vollständig, um wieder alle Einträge zu sehen. + + + +![Suche nach Operations mit einem Treffer in der Journal-Liste](../../../assets/anwender/lesen-suche.webp) + +## Filtern und sortieren + +Filtern bedeutet: Du zeigst nur Einträge mit einer bestimmten Eigenschaft, beispielsweise einer Sprache. Sortieren bedeutet: Du änderst die Reihenfolge. + + + +1. Klicke oben auf die Schaltfläche **Filter**. +2. Wähle eine Eigenschaft aus der Liste. +3. Wähle einen Wert und wende den Filter an. +4. Klicke auf eine Spaltenüberschrift, um auf- oder absteigend zu sortieren. + + + + + +![Geöffnetes Filterfenster neben der sortierten Journal-Liste](../../../assets/anwender/lesen-filter.webp) + +## Blättern + +Bei vielen Einträgen erscheinen unten Seitenzahlen. + + + +1. Scrolle nach unten zur Fußzeile. +2. Klicke auf die nächste Seitenzahl. +3. Lies oben die Angabe, welche Einträge gerade angezeigt werden. + + + +## Eintrag öffnen + + + +1. Klicke auf die Zeile oder Karte, die dich interessiert. +2. Warte, bis sich der Eintrag öffnet. +3. Nutze den Navigationspfad oben, um zur Liste zurückzukehren. + + + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/medien.md b/src/content/docs/anwender/medien.md new file mode 100644 index 0000000..88b094a --- /dev/null +++ b/src/content/docs/anwender/medien.md @@ -0,0 +1,95 @@ +--- +title: 'Bilder und Dateien' +description: 'Dateien hochladen und Medien verwalten.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Bilder und Dateien liegen in einer eigenen Sammlung, meist Mediathek genannt. Von dort bindest du sie in Einträge ein, wie unter [Einträge anlegen und bearbeiten](/anwender/eintrag-bearbeiten/) beschrieben. + +## Übersicht öffnen + + + +1. Öffne die Sammlung für Bilder und Dateien. +2. Betrachte die Kacheln mit Vorschaubild und Titel. +3. Klicke auf eine Kachel, um die **Medienvorschau** zu öffnen. + + + +![Mediathek mit Kachel-Raster und Vorschaubildern](../../../assets/anwender/medien-raster.webp) + + + +## Datei hochladen + + + +1. Ziehe eine Datei mit der Maus auf das Raster. +2. Klicke alternativ auf die Kachel **Dateien hinzufügen** am Ende des Rasters und wähle Dateien aus. +3. Beobachte den Fortschritt pro Datei (Anzeige „x von y hochgeladen"). +4. Warte, bis die neue Kachel im Raster erscheint. + + + + + +![Hochladen einer Datei mit Fortschrittsanzeige in der Mediathek](../../../assets/anwender/medien-upload.webp) + +Wird ein Upload abgelehnt, gehe wie folgt vor: + + + +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. + + + + + +## Bild anpassen + + + +1. Klicke auf der Kachel auf **Bild bearbeiten**. +2. Wähle oben ein Werkzeug: **Zuschneiden**, **Anpassen** oder **Skalieren**. +3. Ziehe den Rahmen mit der Maus auf den gewünschten Bereich. +4. Lege bei Bedarf **Fokuspunkt** oder **Leitfarben** fest. +5. Klicke auf **OK**, um die Änderung zu übernehmen. + + + + + +![Bildeditor mit Werkzeugen für Zuschnitt, Anpassen und Skalieren](../../../assets/anwender/medien-editor.webp) + +## Direkt bearbeiten und KI-Beschreibung + +In der Upload-Warteschlange („{done} von {total} hochgeladen") bearbeitest du Einträge vor dem Hochladen: **Bearbeiten & hochladen** öffnet den Eintrag im Dialog (**Medieneintrag bearbeiten**), **Schnell-Upload** lädt ohne Bearbeitung. Große Bilder verkleinert tibi-admin automatisch („Bild auf Breite×Höhe verkleinert"). + +Fehlt die Bildbeschreibung, erstellt die KI sie selbst („KI beschreibt das Bild…" → „KI-Beschreibung bereit"). Bereits ausgefüllte Beschreibungen bleiben stehen. Bei Bedarf brichst du ab (**KI-Beschreibung abbrechen**) oder stößt sie erneut an. + +## Bild in einen Eintrag einbinden + + + +1. Öffne den Eintrag, der das Bild benötigt. +2. Klicke im Bildfeld auf **Bild hochladen** bzw. die Auswahlfläche. +3. Suche im Auswahlfenster nach dem Bild. +4. Klicke auf das Bild und übernimm es. +5. Speichere den Eintrag oben mit **Speichern**. + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/orientierung.md b/src/content/docs/anwender/orientierung.md new file mode 100644 index 0000000..9c4b8e3 --- /dev/null +++ b/src/content/docs/anwender/orientierung.md @@ -0,0 +1,88 @@ +--- +title: 'Sich zurechtfinden' +description: 'Start, Navigation und Übersicht im tibi-admin.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Nach dem [Anmelden](/anwender/anmelden/) landest du im **tibi-admin**, dem Verwaltungs-Backend (Release **Nova**). Diese Seite beschreibt Projektübersicht, Navigation und Schnellsuche. + +## Projektübersicht + + + +1. Prüfe oben links Logo und Projektnamen. +2. Orientiere dich am Navigationspfad in der Mitte (Projekt, Sammlung, Eintrag). +3. Öffne links das Menü, um alle Bereiche zu sehen. + + + +![Projektübersicht der Corporate Website mit Kopf, Brotkrumen und Sammlungen](../../../assets/anwender/orientierung-start.webp) + + + +## Projekt wechseln + +Ein Projekt ist beispielsweise eine Website oder ein Shop. + + + +1. Klicke oben links auf den Projektnamen. +2. Wähle in der Liste das gewünschte Projekt. +3. Warte, bis dessen Sammlungen angezeigt werden. + + + + + +![Projektliste mit allen Projekten, darunter die Corporate Website](../../../assets/anwender/orientierung-projektwechsel.webp) + +## Sammlung öffnen + +Eine Sammlung ist eine Liste gleichartiger Inhalte, beispielsweise alle Seiten oder alle Nachrichten. + + + +1. Klicke im Menü auf die gewünschte Sammlung. +2. Warte, bis die Eintragsliste erscheint. +3. Klicke auf einen Eintrag, um ihn zu lesen. + + + +Wie du in Listen suchst und filterst, steht unter [Lesen, suchen, filtern](/anwender/lesen-suchen-filtern/). + +## Schnellsuche + +Die Schnellsuche springt zu Zielen wie Sammlungen und Projekten. Inhalte suchst du in der jeweiligen Liste. + + + +1. Drücke die Taste „/" (Schrägstrich). +2. Gib einen Suchbegriff ein, beispielsweise einen Titel. +3. Wähle einen Vorschlag, um dorthin zu springen. + + + + + +![Geöffnete Schnellsuche mit Treffer Corporate Website öffnen](../../../assets/anwender/orientierung-schnellsuche.webp) + +## Ausgangspunkt wiederfinden + + + +1. Klicke im Navigationspfad auf die erste Station. +2. Du landest auf der Projektübersicht und beginnst von dort erneut. +3. Alternativ nutzt du die Zurück-Taste des Browsers — die vorherige Ansicht wird wiederhergestellt. + + + +Mehr Details zur Technik stehen unter [Mehr Details](/admin/konzept/). + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/seiten-bauen.md b/src/content/docs/anwender/seiten-bauen.md new file mode 100644 index 0000000..d6b9cd8 --- /dev/null +++ b/src/content/docs/anwender/seiten-bauen.md @@ -0,0 +1,129 @@ +--- +title: 'Seiten bauen' +description: 'Einfache Seiten mit dem Pagebuilder zusammenstellen.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Du baust eine Seite im **tibi-admin**, dem Verwaltungs-Backend (Release **Nova**). Die Seite erscheint erst auf der Projekt-Website, wenn du sie per **Live**-Schalter freigibst. + +## Block hinzufügen + + + +1. Klicke in der linken Liste auf deine Sammlung für Seiten. +2. Klicke den Eintrag an, den du bearbeiten willst. +3. Klicke im Seitenfeld auf **Block hinzufügen**. +4. Wähle einen Blocktyp, zum Beispiel Hero, Kennzahlen, Story-Sektion oder FAQ. +5. Der Block liegt sofort in der Seite — ein Klick genügt, es gibt kein Übernehmen. + + + + + + + +![Pagebuilder mit geöffneter Blockauswahl für Corporate-Blöcke](../../../assets/anwender/seiten-pagebuilder.webp) + +## Text und Bild füllen + + + +1. Klicke in das Textfeld des neuen Blocks. +2. Schreibe deinen Text direkt hinein. +3. Klicke beim Bild-Block auf **Bild hochladen**. +4. Wähle ein Bild aus der Mediathek. +5. Klicke auf **Speichern** oben rechts. + + + + + +Mehr zu Bildern findest du unter [Medien](/anwender/medien/). + +![Seite mit ausgefüllten Corporate-Blöcken im Pagebuilder](../../../assets/anwender/seiten-bloecke.webp) + +## Vorschau prüfen + +Jeder Block zeigt seine Vorschau direkt an — du siehst sofort, wie er wirkt. Es gibt keinen separaten Vorschau-Knopf. + + + +1. Betrachte den neuen Block direkt in der Seite. +2. Fülle ihn aus und beobachte die Vorschau. +3. Klicke den Block an, wenn du etwas ändern willst. +4. Klicke auf **Speichern**, wenn alles stimmt. + + + + + +## Block bearbeiten + +Ein Klick auf einen Block öffnet den Overlay-Editor: Formular links, Vorschau rechts. Verfügbare Blocktypen: Hero, Kennzahlen, Leistungsgrid, Story-Sektion, Stimmen, FAQ, Abschluss-CTA. + +![Overlay-Editor des Hero-Blocks der Kontakt-Seite mit Formular links und Vorschau rechts, oben Modus-Umschalter (Nur Formular, Formular und Vorschau, Nur Vorschau) und OK-Schaltfläche](../../../assets/anwender/seiten-overlay.webp) + + + +1. Klicke den Block in der Übersicht an — der Editor öffnet sich als Overlay. +2. Fülle links das Formular aus (Text, Bild, Link). Die Vorschau rechts aktualisiert sich sofort. +3. Nutze bei Bedarf den Modus-Umschalter in der oberen Leiste: **Nur Formular**, **Formular und Vorschau** oder **Nur Vorschau**. Auf schmalen Bildschirmen (unter 768 px) steht nur **Nur Formular** zur Verfügung. +4. Klicke auf **OK** oder drücke ESC, um den Editor zu schließen. Ein Klick genügt — es gibt keinen Übernehmen-Button. +5. Klicke auf **Speichern** oben rechts, um die Seite zu sichern. + + + + + +## Responsiv prüfen + +Unter der Vorschau steuert der Viewport-Umschalter die simulierte Seitenbreite. So prüfst du, wie der Block auf kleineren Geräten wirkt. + +![Overlay-Editor mit Tablet-Vorschau (768 px) des Hero-Blocks, Viewport-Umschalter unter der Vorschau](../../../assets/anwender/seiten-viewport-tablet.webp) + +![Overlay-Editor mit Mobil-Vorschau (375 px) des Hero-Blocks, Viewport-Umschalter unter der Vorschau](../../../assets/anwender/seiten-viewport-mobil.webp) + + + +1. Öffne einen Block im Overlay-Editor. +2. Klicke unter der Vorschau auf eines der drei Geräte-Symbole (Bildschirm, Tablet, Telefon — die Namen Desktop, Tablet und Mobil mit Breite erscheinen beim Darüberfahren; die aktive Breite steht als px-Zahl in der Leiste). +3. Ziehe bei Bedarf den Slider für eine freie Breite (320–1920 px). +4. Prüfe, ob Text lesbar bleibt und Bilder nicht abgeschnitten sind. +5. Schließe mit **OK** und klicke auf **Speichern**, wenn alles stimmt. + + + + + +## Seite sichtbar schalten + + + +1. Klicke den Eintrag deiner Seite an. +2. Suche den Schalter **Live** (Name je nach Projekt — er steuert die Sichtbarkeit für Besucher). +3. Schalte ihn auf An. +4. Klicke auf **Speichern**. +5. Rufe die Website in einem neuen Fenster auf und prüfe die Seite. + + + + + +Weiter geht es mit [Einträge anlegen und bearbeiten](/anwender/eintrag-bearbeiten/). Dort lernst du alle Felder kennen. + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/anwender/sichern.md b/src/content/docs/anwender/sichern.md new file mode 100644 index 0000000..56ca109 --- /dev/null +++ b/src/content/docs/anwender/sichern.md @@ -0,0 +1,67 @@ +--- +title: 'Sichern und wiederherstellen' +description: 'Snapshots ansehen und Wiederherstellung beauftragen.' +--- + +import { Aside, Steps } from '@astrojs/starlight/components'; + +Der **tibi-admin** (Verwaltungs-Backend, Release **Nova**) kennt zwei Sicherungen: Snapshots (eingefrorene Stände für den Alltag) und Backups (Dateien für Umzug und Notfall). Du spielst nichts selbst zurück — du prüfst den Stand und forderst bei Bedarf eine Wiederherstellung an. + +## Gesicherten Stand einsehen + + + +1. Klicke auf dein Projekt in der Übersicht. +2. Öffne den Bereich **Admin**. +3. Klicke auf **Snapshots**. +4. Lies die vorhandene Liste. + + + + + +![Snapshot-Übersicht mit Einträgen des Corporate-Projekts](../../../assets/anwender/sichern-uebersicht.webp) + +## Snapshot prüfen + +Die Ansicht besitzt drei Reiter: **Konfigurationen**, **Snapshots** und **Statistik**. + + + +1. Klicke auf den Reiter **Snapshots**. +2. Klicke eine Zeile an, um die **Snapshot-Details** zu öffnen. +3. Lies Datum, Umfang und Größe. +4. Klicke auf den Reiter **Statistik**. +5. Prüfe dort die Belegung. + + + + + +![Geöffnete Snapshot-Details mit Aufschlüsselung nach Sammlungen](../../../assets/anwender/sichern-details.webp) + +![Statistik-Reiter mit Belegung der Snapshots](../../../assets/anwender/sichern-statistik.webp) + +## Wiederherstellung anfordern + +Du spielst nichts selbst zurück. Eine Wiederherstellung (**Wiederherstellung starten**) überschreibt den aktuellen Stand und wird daher immer mit dem Betreiber abgestimmt. + + + +1. Halte fest, welchen Stand du benötigst (Datum und Uhrzeit). +2. Notiere, welche Sammlung betroffen ist. +3. Sende diese Bitte an den Betreiber. +4. Warte auf die Bestätigung vom Betreiber. +5. Prüfe danach die betroffene Seite. + + + + + +Geprüft an 2b091d89 (tibi-admin-nova) diff --git a/src/content/docs/einstieg/begriffe.md b/src/content/docs/einstieg/begriffe.md index 56d0644..77cea21 100644 --- a/src/content/docs/einstieg/begriffe.md +++ b/src/content/docs/einstieg/begriffe.md @@ -13,5 +13,7 @@ description: Die wichtigsten Tibi-Begriffe in einem Glossar. | **PAT** | Personal Access Token für API-Zugriff ohne Login. | | **SSE-Kanal** | Server-Sent-Events-Kanal für Echtzeit (pub/sub mit Replay und TTL). | | **SSR-Hook** | Server-Side-Rendering für Kunden-SPAs (`api/hooks/ssr/`), HTML-Cache in der `ssr`-Collection. | -| **Nova** | Das Svelte-Admin-Frontend (`tibi-admin-nova`). | -| **Mock-Modus** | Nova läuft lokal gegen gemockte Daten statt gegen den echten Server. | +| **Tibi-Admin** | Das Verwaltungs-Backend: Bedienoberfläche zum Tibi-Server (aktuelles Release Nova, Repo `tibi-admin-nova`). Hier pflegst du Inhalte, Medien, Benutzer und Exporte. | +| **Tibi-Projekt** | Eigenständige Website auf Tibi-Basis aus `tibi-svelte-starter` — normale kleine Websites, Shops, Intranet-Anwendungen usw. Läuft getrennt vom Backend, bezieht Inhalte per API/SSR. | +| **Nova** | Release-Name des aktuellen tibi-admin (Repo `tibi-admin-nova`). | +| **Mock-Modus** | tibi-admin läuft lokal gegen gemockte Daten statt gegen den echten Server. | diff --git a/src/content/docs/einstieg/neues-projekt.md b/src/content/docs/einstieg/neues-projekt.md new file mode 100644 index 0000000..e0645e0 --- /dev/null +++ b/src/content/docs/einstieg/neues-projekt.md @@ -0,0 +1,115 @@ +--- +title: Neues Projekt aufsetzen +description: Vom geklonten Starter zum erreichbaren Projekt — inklusive Registrierung und Abnahme. +--- + +import { FileTree } from '@astrojs/starlight/components'; + +Anleitung für **Projekt-Entwickler**: du klonst `tibi-svelte-starter` und baust daraus eine eigenständige Website auf Tibi-Basis — normale kleine Websites, Shops, Intranet-Anwendungen usw. Das Verwaltungs-Backend (Tibi-Server + tibi-admin) entwickelst du nicht weiter, du nutzt es. + +Verifiziert gegen: Starter-`README.md`, Skill `tibi-project-setup/SKILL.md`, `Makefile`, `docker-compose-local.yml`, `api/config.yml`. Stand: am Code geprüft, nicht aus Alt-Doku. + +## Setup-Checkliste + +```text title="Setup-Checkliste" +[ ] Geklont, `origin` zeigt aufs Projekt-Repo (`template` heißt das Starter-Remote) +[ ] `__PROJECT_NAME__` (kebab-case) und `__TIBI_NAMESPACE__` (snake_case) ersetzt +[ ] `__ORG__` / `__PROJECT__` ersetzt, kein `__*__` mehr per `rg` findbar +[ ] `.env`-URLs gesetzt (`CODING_URL`, `CODING_TIBIADMIN_URL`, `STAGING_URL`, `LIVE_URL`) +[ ] `api/config.yml.env` mit frischem `ADMIN_TOKEN` + `ADMIN_ASSET_VERSION` +[ ] `App.svelte` hat `` mit `` +[ ] `yarn install`, `make docker-up`, Website + Admin + API antworten +[ ] `yarn validate`, `yarn build`, `yarn build:server` fehlerfrei +``` + +## 1. Klonen und Remotes + +```sh title="Platzhalter prüfen" +git clone https://gitbase.de/cms/tibi-svelte-starter.git mein-projekt +cd mein-projekt +git remote rename origin template +git remote add origin https://gitbase.de/<org>/<repo>.git +``` + +## 2. Platzhalter und Starter-Reste + +Ersetzen in `.env`, `api/config.yml`, `api/hooks/config-client.js`, `package.json`, `README.md` und `frontend/.htaccess` (falls Apache-Rewrite genutzt wird): + +```sh title="Platzhalter ersetzen" +rg '__[A-Z0-9_]+__' . --glob '*.{yml,js,env,htaccess,json,md,ts,svelte}' +``` + +`package.json` darf danach nicht mehr aufs Starter-Repo zeigen. `PRODUCTION_PATH`, `SENTRY_PROJECT` und `TIBI_NAMESPACE` projektspezifisch setzen. + +## 3. Welcher Betriebs-Pfad? + +**Pfad A — lokaler Starter-Stack (Standard):** `make docker-up` startet `docker-compose-local.yml` mit Profil `tibi`. Das Projekt wird als `/data` in `tibiserver` gemountet, `DB_DIAL`, `DB_PREFIX`, `MAIL_HOST` kommen aus Container-Env. Traefik-URLs: + +- Website: `https://<projekt>.code.testversion.online/` +- Admin: `https://<projekt>-tibiadmin.code.testversion.online/` +- Roh-Server: `https://<projekt>-tibiserver.code.testversion.online/` (falls Profil aktiv) +- Maildev: `https://<projekt>-maildev.code.testversion.online/` + +**Pfad B — geteilter/fremder tibi-server:** nur wenn die Umgebung das ausdrücklich verlangt (eigene Server-Config, explizite Projekt-Registrierung). Dann vorab klären: welches Admin-Token für `/api/v1/project`, welche Basis-URL, wie der Projektpfad gemountet ist. Keine Pfad-B-Schritte im lokalen Starter-Stack erfinden. + +## 4. Dateien sind nicht gleich registriert + +Dateien auf Platte definieren das Projekt. Erst die **Registrierung** macht es dem laufenden tibi-server bekannt. Bis dahin antwortet der Namespace mit `project not found` — das ist dann kein Proxy-Fehler. + +## 5. Registrieren (wenn `project not found`) + +Im lokalen Standard-Setup per `admin` / `admin` einloggen und JWT nutzen: + +```sh title="JWT holen und Projekt registrieren" +jwt=$(curl -s -X POST "$CODING_TIBIADMIN_URL/api/login" \ + -H "Content-Type: application/json" \ + -d '{"username":"admin","password":"admin"}' | jq -r '.token') + +curl -s -X POST "$CODING_TIBISERVER_URL/api/v1/project" \ + -H "Content-Type: application/json" \ + -H "X-Auth-Token: $jwt" \ + -d '{"name":"<PROJECT_NAME>","description":"...","configFile":"/data/api/config.yml","enabled":true}' +``` + +Danach erscheint das Projekt unter `GET /api/v1/project`, und `/_/<namespace>/...` löst auf. Nach Config-Änderungen neu laden: + +```sh title="Projekt-Reload anstoßen" +curl -s -X POST "$CODING_TIBISERVER_URL/api/v1/_/<PROJECT_NAME>/_/admin/reload" \ + -H "X-Auth-Token: $jwt" +``` + +:::caution title="Token nicht verwechseln" +Verwechsle `ADMIN_TOKEN` aus `api/config.yml.env` nicht mit System-Rechten: er schreibt Sammlungen (Kopf `Token`), registriert aber keine Projekte. Deploy-Skripte nutzen ihn separat als `Authorization: Bearer` auf dem Projekt-Reload. +::: + +## 6. Inhalte und URLs verstehen + +- `api/config.yml` definiert `namespace`, `collections` (Inhalte, Medien, Navigation, Tags, Kommentare, SSR-Cache), `assets` (`dist`, `fonts`, `img`) und `admin.tokens`. +- Frontend: Svelte-SPA in `frontend/src/` (`App.svelte`, `routes/`, `blocks/`, `widgets/`). `yarn build` baut Browser-Bundle plus Admin-Modul, `yarn build:server` das SSR-Bundle für `api/hooks/lib/app.server.js`. +- Medien-URLs folgen `/api/medialib/<entryId>/file/<name>?filter=...`, gerendert nur über `MedialibImage`. +- Öffentliche Abfragen brauchen `active:true` — auch bei Navigation und Medien, sonst bleibt die Navigation leer, obwohl Lesen mit Token klappt. + +<FileTree> + +- api/ + - config.yml + - hooks/lib/app.server.js +- frontend/src/ + - App.svelte + - routes/ + - blocks/ + - widgets/ + +</FileTree> + +## 7. Abnahme + +```sh title="Abnahme: Build und Erreichbarkeit" +yarn validate +yarn build +yarn build:server +curl -I "$CODING_URL" +curl -I "$CODING_TIBIADMIN_URL" +``` + +Anonyme SSR-Seite prüfen (Navigation vorhanden, Bilder mit `_lookup`), nicht nur Lesen mit Token. Erst dann ist das Projekt wirklich aufgesetzt. diff --git a/src/content/docs/einstieg/schnellstart.md b/src/content/docs/einstieg/schnellstart.md index b9efd89..b312c78 100644 --- a/src/content/docs/einstieg/schnellstart.md +++ b/src/content/docs/einstieg/schnellstart.md @@ -1,48 +1,94 @@ --- title: Schnellstart -description: Tibi-Doku lokal lesen und Tibi-Server plus Admin lokal starten. +description: Eigenes Tibi-Projekt aus dem Starter klonen, starten und prüfen — für Projekt-Entwickler. --- -## Diese Doku lokal lesen +Du entwickelst **Projekte mit Tibi**, nicht Tibi selbst. Go-Code vom tibi-server und Svelte-Code vom tibi-admin fasst du dafür nicht an. Dein Startpunkt ist immer der Starter. -```sh -cd /WM_Dev/src/gitbase.de/cms/tibi-docs -npm install -npm run dev -# → http://localhost:4321 +:::danger title="Kern-Regel aus dem Starter" +Dev-Server laufen immer in Docker. Nie `yarn dev` oder `yarn start` lokal. +::: + +## Voraussetzungen + +`git`, `yarn`, `make`, `docker compose`, `curl`. Arbeit auf dem Code-Server mit `*.code.testversion.online`. + +## 1. Klonen + +```sh title="Starter klonen" +git clone https://gitbase.de/cms/tibi-svelte-starter.git mein-projekt +cd mein-projekt +git remote rename origin template +git remote add origin https://gitbase.de/<org>/<repo>.git ``` -Oder über den Docker-Stack (Traefik): +## 2. Platzhalter ersetzen -```sh -make docker-up -# → https://tibi-docs.code.testversion.online/ -make docker-down +In `.env`, `api/config.yml`, `api/hooks/config-client.js`, `package.json` und `frontend/.htaccess` (falls genutzt): + +- `__PROJECT_NAME__` → kebab-case, z. B. `mein-projekt` +- `__TIBI_NAMESPACE__` → snake_case, z. B. `mein_projekt` +- `__ORG__`, `__PROJECT__` → Gitea-Org und Repo + +Prüfen: + +```sh title="Platzhalter prüfen" +rg '__[A-Z0-9_]+__' . --glob '*.{yml,js,env,htaccess,json,md,ts,svelte}' ``` -## Tibi-Server lokal starten +Es darf nichts mehr finden. Sonst ist das Setup nicht fertig. -```sh -cd ../tibi-server -cp config.yml.example config.yml # falls nötig -docker compose -f docker-compose-local.yml up -d -go run cmd/server/main.go +## 3. Token erzeugen + +```sh title="Token erzeugen" +token=$(openssl rand -hex 20) +cat > api/config.yml.env <<EOF +ADMIN_TOKEN=$token +ADMIN_ASSET_VERSION=$(node -e "process.stdout.write(require('crypto').randomBytes(6).toString('hex'))")-dirty-$(date +%s) +EOF ``` -## Tibi-Admin-Nova lokal starten +Trage in `.env` die Projekt-URLs ein: `LIVE_URL`, `CODING_URL`, `STAGING_URL`, `CODING_TIBIADMIN_URL`. -```sh -cd ../tibi-admin-nova +## 4. Starten + +```sh title="Stack starten" yarn install make docker-up -# → https://tibi-admin-nova.code.testversion.online/ ``` -## Doku pflegen +Vordergrund bei Problemen: `make docker-start`. Logs: `make docker-logs`. -Server-Docs nach Änderungen synchronisieren: +## 5. Erreichbarkeit prüfen -```sh -npm run sync -npm run dev # prüfen +```sh title="Erreichbarkeit prüfen" +curl -I "$CODING_URL" +curl -I "$CODING_TIBIADMIN_URL" +curl -I "$CODING_URL/api/content?limit=1" ``` + +- HTML statt JSON unter `/api/...` → Proxy/Setup noch falsch. +- `project not found` → Projektdateien liegen da, aber das Projekt ist im laufenden tibi-server noch nicht registriert. Siehe [Neues Projekt](/einstieg/neues-projekt/) Schritt 5. + +Anmeldung im Admin lokal: `admin` / `admin`. + +## 6. Bauen und validieren + +```sh title="Bauen und validieren" +yarn validate +yarn build +yarn build:server +``` + +Alle drei müssen fehlerfrei durchlaufen. `yarn` nutzt du nur für diese drei — nie für Dev-Server. + +## Token-Köpfe (nicht vermischen) + +| Wofür | Kopf | Wert | +|---|---|---| +| Sammlung lesen/schreiben (z. B. Inhalte) | `Token` | `ADMIN_TOKEN` aus `api/config.yml.env` | +| Eigener Benutzer (JWT) | `X-Auth-Token` | Token aus `POST /api/v1/login` | +| Projekt anlegen/laden (System) | `X-Auth-Token` (JWT als `admin`) oder `X-Admin-Token` | nur wenn Server-Token vorhanden | +| Deploy-Reload auf Live/Staging | `Authorization: Bearer` | `ADMIN_TOKEN` | + +Weiter: [Neues Projekt aufsetzen](/einstieg/neues-projekt/) mit Registrierung, Pfad A/B und Checkliste. diff --git a/src/content/docs/einstieg/was-ist-tibi.md b/src/content/docs/einstieg/was-ist-tibi.md index fbc9bac..a36b299 100644 --- a/src/content/docs/einstieg/was-ist-tibi.md +++ b/src/content/docs/einstieg/was-ist-tibi.md @@ -1,27 +1,36 @@ --- title: Was ist Tibi? -description: Überblick über Tibi-Server, Tibi-Admin-Nova und Tibi-Projekte. +description: Überblick über Tibi-Server, Tibi-Admin und Tibi-Projekte. --- -**Tibi** ist unser Headless-CMS-Baukasten: +import { Card, CardGrid } from '@astrojs/starlight/components'; -- **Tibi-Server** (Go + MongoDB): konfigurationsgetriebenes API-Backend. Collections werden in YAML definiert, Logik läuft über JavaScript-Hooks, Echtzeit über SSE-Kanäle. Dazu LLM-Anbindung, Dateiupload/Bildverarbeitung, PDF, Audit-Log, Cron-Jobs, OpenAPI und Prometheus-Metriken. -- **Tibi-Admin-Nova** (Svelte 5 + esbuild): das Admin-Frontend. Läuft lokal im Mock-Modus und in Staging/Live statisch hinter einem Reverse Proxy gegen den echten Tibi-Server. -- **Tibi-Projekt** (z. B. aus `tibi-svelte-starter`): Kunden-Website als Svelte-SPA mit SSR-Hook im Tibi-Server. +**Tibi** ist unser Baukasten aus Verwaltungs-Backend plus eigenständigen Projekt-Websites: + +- **Backend = Tibi-Server + tibi-admin.** Der **Tibi-Server** (Go + MongoDB) ist das API-Backend: Collections in YAML, Logik über JavaScript-Hooks, Echtzeit über SSE, dazu LLM, Upload/Bildverarbeitung, PDF, Audit, Jobs, OpenAPI. **tibi-admin** (Release Nova) ist die Bedienoberfläche zu diesem Backend: Svelte-Frontend, lokal im Mock-Modus, in Staging/Live statisch hinter Reverse Proxy gegen den echten Server. +- **Projekt-Website (aus `tibi-svelte-starter` geklont):** eigenständige Website auf Tibi-Basis — normale kleine Websites, Shops, Intranet-Anwendungen usw. Svelte-SPA mit SSR-Hook im Tibi-Server. **Hier arbeitest du als Projekt-Entwickler** — du klonst den Starter, ersetzt Platzhalter und konfigurierst Sammlungen und Hooks. Go-Code vom Server und Admin-Code fasst du nicht an. ## Wie hängt das zusammen? -```text -Browser (Nova-Admin / Kunden-SPA) - │ REST /api/v1, SSE +```text title="Zusammenspiel im Überblick" +Projekt-Website (eigenständig: Website, Shop, Intranet aus tibi-svelte-starter) + │ Svelte-SPA, SSR-HTML aus dem Server-Hook ▼ -Tibi-Server (Go, config.yml + collections/*.yml + hooks/*.js) - │ MongoDB, Mail, Dateien, LLM-Upstream - ▼ -MongoDB / Maildev / Storage +Backend: tibi-admin (Bedienoberfläche) ──REST /api/v1, SSE──▶ Tibi-Server (Go) + │ config.yml + collections/*.yml + hooks/*.js + ▼ + MongoDB / Maildev / Storage ``` +Backend verwalten, Website bauen: als Projekt-Entwickler pflegst du Inhalte im Admin und baust die eigenständige Website im Starter. + ## Wo geht es weiter? -- Schnellstart: [Einstieg/Schnellstart](/einstieg/schnellstart/) -- Begriffe: [Einstieg/Begriffe](/einstieg/begriffe/) +<CardGrid stagger> + <Card title="Schnellstart"> + Starter klonen, starten, prüfen. [Loslegen](/einstieg/schnellstart/). + </Card> + <Card title="Begriffe"> + Die wichtigsten Tibi-Begriffe im Glossar. [Nachschlagen](/einstieg/begriffe/). + </Card> +</CardGrid> diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 3428abb..f0b9b41 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -1,6 +1,6 @@ --- title: Tibi Doku -description: Entwickler- und Anwender-Dokumentation für Tibi-Server und Tibi-Admin-Nova. +description: Entwickler- und Anwender-Dokumentation für Tibi-Server und Tibi-Admin. template: splash hero: tagline: Headless-CMS mit Go-Backend und Svelte-Frontends — hier steht, wie man damit baut. @@ -17,16 +17,29 @@ import { Card, CardGrid } from '@astrojs/starlight/components'; ## Wo finde ich was? -> **Im Aufbau.** Diese Doku wird gerade sauber neu strukturiert. Fertig ist der [Einstieg](/einstieg/was-ist-tibi/) — Server-, Nova-, Anwender- und Referenz-Seiten folgen Schritt für Schritt. - <CardGrid stagger> <Card title="Was ist Tibi?"> - Überblick über Tibi-Server, Tibi-Admin-Nova und Tibi-Projekte. [Lesen](/einstieg/was-ist-tibi/). + Backend plus eigenständige Projekt-Websites im Überblick. [Lesen](/einstieg/was-ist-tibi/). </Card> <Card title="Schnellstart"> - Doku und Stacks lokal starten, Doku pflegen. [Starten](/einstieg/schnellstart/). + Starter klonen, starten, prüfen — in 6 Schritten. [Starten](/einstieg/schnellstart/). </Card> - <Card title="Begriffe"> - Namespace, Collection, Hook und Co. im Glossar. [Nachschlagen](/einstieg/begriffe/). + <Card title="Neues Projekt"> + Vom Klon zum registrierten Projekt inkl. Checkliste. [Aufsetzen](/einstieg/neues-projekt/). + </Card> + <Card title="Projekt bauen"> + Sammlungen, Felder, Hooks, Suche, SSR, Pagebuilder, LLM, MCP, Deploy. [Bauen](/projekt/sammlungen-anlegen/). + </Card> + <Card title="Server betreiben"> + Konfiguration, Betrieb, Sicherheit, Schnittstellen. [Betreiben](/server/uebersicht/). + </Card> + <Card title="Admin bedienen"> + Ansichten, Editor, Medien, Exporte, Aktionen, Rechte, KI. [Verwalten](/admin/konzept/). + </Card> + <Card title="Anwender-Anleitung"> + Anmelden bis Sichern — für Nicht-Profis mit Bildern. [Anleiten](/anwender/anmelden/). + </Card> + <Card title="Referenz"> + Schemas, Hook-Kontexte, Token-Köpfe, Fehlerbilder, OpenAPI. [Nachschlagen](/reference/schemas/). </Card> </CardGrid> diff --git a/src/content/docs/projekt/abfragen-lesen.md b/src/content/docs/projekt/abfragen-lesen.md new file mode 100644 index 0000000..ac26aa4 --- /dev/null +++ b/src/content/docs/projekt/abfragen-lesen.md @@ -0,0 +1,143 @@ +--- +title: 'Lesen und suchen' +description: 'Filtern, Sortieren, Blättern, Projektionen, Lookups, Facetten, Suche.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Lesen geht per `GET` auf eine Sammlung. +Filtern, Sortieren, Blättern und Auflösen hängst du als Query-Parameter an. +Basis: `GET /api/v1/_/<namespace>/<collection>`. + +## GET-Liste + +<Tabs> +<TabItem label="Liste"> + +```text title="Liste mit Filter, Sortierung und Blättern" +GET /api/v1/_/<namespace>/content?filter={"lang":"de"}&sort=-name&limit=20&offset=0 +``` + +Liste mit `filter`, `sort`, `limit`, `offset`. +</TabItem> +<TabItem label="Einzel"> + +```text title="Einzelner Eintrag per ID" +GET /api/v1/_/<namespace>/content/<id> +``` + +Einzelner Eintrag per ID. +</TabItem> +</Tabs> + +<Aside type="caution"> +`?count=1` liefert zusätzlich die Header `X-Results-Count` und — Achtung, Tippfehler im Code — `Content-Range:` **mit Doppelpunkt** (`collection_get.go`). +</Aside> + +## Filtern, Sortieren, Blättern + +| Parameter | Format | Beispiel | +|---|---|---| +| `filter` | MongoDB-Filter als JSON | `?filter={"lang":"de","active":true}` | +| `sort` | Feld, `-` heißt absteigend; Komma oder wiederholt | `?sort=-name`, `?sort=type&sort=-language` | +| `limit` | Zahl, max. Einträge | `?limit=20` | +| `offset` | Zahl, übersprungene Einträge | `?offset=40` | +| `count` | `1` oder `true` | `?count=1` | + +Filter-Operatoren wie `$and`, `$or`, `$in`, `$lte`, `$gte`, `$exists` funktionieren. +Der Starter nutzt sie selbst im `publishedFilter` (`api/hooks/config.js`): `active: true` plus Veröffentlichungsfenster `publication.from`/`publication.to`. + +```text title="Nächste Seite, neueste zuerst" +# nächste Seite, neueste zuerst (Annahme: Feld updatedAt existiert) +GET …/comment?filter={"contentId":"<id>"}&sort=-updatedAt&limit=10&offset=10 +``` + +## select und projection + +`select` begrenzt die Felder — Komma-getrennt oder wiederholt. +Das spart Bandbreite und Kontext, vor allem bei Dateien. + +```text title="Felder per select begrenzen" +GET …/medialib?select=title,alt,tags +GET …/content?select=name&select=path&select=lang +``` + +- `select` ohne `file.data` abfragen: Datei-Inhalte (`file.data`) sind groß — `file.src` reicht für Anzeige. +- Der Starter-Hinweis dazu: Liste mit `select` ohne `file.data` lesen, sonst bläht der Kontext auf. +- `projection` wählt eine vordefinierte Projektion aus der Sammlungs-YAML (`projections`-Block). +- Unbekannte Felder oder fremde Projektionen → `400`. + +## Lookup: Verweise auflösen + +`lookup` löst Fremdschlüssel auf und legt das Ergebnis unter `_lookup` ab. +Format: `feld:sammlung`, Rest mit Doppelpunkten (`feld:sammlung:fremdfeld:projektion:select:als`). + +```text title="Verweise per lookup auflösen" +# Navigation mit Seitendaten (Feld page -> content) +GET …/navigation?lookup=elements.page:content + +# Content mit Hero- und Richtext-Bildern (Felder aus content.yml) +GET …/content?lookup=blocks.heroImage.image:medialib,blocks.image:medialib +``` + +- Ohne `lookup` steht im Feld nur die ID (z. B. `page: "<content.id>"`). +- Mit `lookup` steht der Zieldatensatz in `_lookup.page` (Name, Pfad usw.). +- Die App baut daraus den Link: `href` aus `_lookup.page.path` plus `hash`. +- Mehrere Lookups per Komma oder wiederholtem `?lookup=`. +- Ziel ohne Leserecht oder unbekannte Sammlung → Fehler (`lookup permission denied`, Ziel nicht gefunden). + +<Aside type="caution"> +Ein `lookup` löst nur auf, wenn der Zieldatensatz für dich lesbar ist. +Fehlt dort `active:true`, bleibt `_lookup` öffentlich leer — Bilder und Navigation verschwinden. +Details: [Rechte und Tokens](/projekt/rechte-tokens/). +</Aside> + +## Facetten und Zählen (eigene Endpunkte!) + +<Aside type="caution"> +`_count` und `_facet` sind eigene Routen — **nicht** Query-Parameter der Liste. +`?facet=` an der normalen Liste wird still ignoriert, und `…/comment/count` landet auf der Einzel-Route (`:id = "count"`) statt zu zählen. +</Aside> + +| Endpunkt | Wirkung | Beispiel | +|---|---|---| +| `GET …/<collection>/_count?filter={…}` | Nur Anzahl, keine Einträge | `GET …/comment/_count?filter={"contentId":"<id>"}` | +| `GET …/<collection>/_count?estimate=1` | Schnelle Schätzung statt exakter Zahl (nur **ohne** `filter`) | `GET …/comment/_count?estimate=1` | +| `GET …/<collection>/_facet?facet=<feld>` | Werte zählen je Feld | `GET …/comment/_facet?facet=contentId` | +| `…/_facet?facet=<feld>&limit=10` | Nur Top N | `GET …/comment/_facet?facet=contentId&limit=10` | +| `…/_facet?facet=<feld>&includeEmpty=1` | Leere Werte mitzählen | `GET …/comment/_facet?facet=tags&includeEmpty=1` | + +Die Kommentar-Anzahl je Seite (`commentCount`) kommt aus so einer Abfrage über `contentId`. + +## Suche + +`q` sucht, `qName` wählt den Suchindex aus dem `search`-Block der Sammlung. + +```text title="Suche mit q und qName" +# kombinierte Suche in content (RRF aus semantisch + fuzzy) +GET …/content?q=kontakt&qName=combined + +# einfache Suche in Tags (Default-Index, regex) +GET …/tag?q=hero +``` + +| `qName` | Sammlung | Modus | +|---|---|---| +| `combined` | `content` | Hybrid (RRF, `k: 60`, `topK: 100`) | +| `fuzzy` | `content` | n-gram, fehlertolerant | +| `semantic` | `content` | Vektor (`bge_m3`) | +| `default` | `tag`, `navigation`, `comment`, `medialib` | regex | + +`?qExplain=1` erklärt, wie die Suche gewichtet hat — nützlich beim Debuggen. + +## Fehlerbilder + +| Antwort | Ursache | Lösung | +|---|---|---| +| `400` | Ungültiges `filter`-JSON, unbekanntes `select`-Feld, falsche `lookup`-Syntax | JSON prüfen, Feldnamen gegen die Sammlungs-YAML halten | +| `permission denied` | Kein `get`-Recht für deine Rolle | [Rechte und Tokens](/projekt/rechte-tokens/) prüfen | +| `invalid projection` | `projection` heißt anders als in der YAML | Namen im `projections`-Block nachschlagen | +| Leere Liste trotz Daten | `filter_public`-Hook filtert `active:true` + Zeitraum | `active:true` setzen, `publication`-Fenster prüfen | +| `_lookup` leer | Zieldatensatz nicht lesbar (meist `active:true` fehlt) | Zieldatensatz prüfen, nicht die Abfrage | + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter), am 68b42785 2026-10-15 (tibi-server, collection_get/select/sort/facet/count/lookup). diff --git a/src/content/docs/projekt/audit-backup.md b/src/content/docs/projekt/audit-backup.md new file mode 100644 index 0000000..52e4435 --- /dev/null +++ b/src/content/docs/projekt/audit-backup.md @@ -0,0 +1,145 @@ +--- +title: 'Änderungen und Sicherung' +description: 'Audit-Log lesen, Snapshots nutzen, Backup und Restore mit dem Betreiber abstimmen.' +--- + +import { Aside, Steps, Card, CardGrid } from '@astrojs/starlight/components'; + +Wer hat was geändert — und wie kommst du zurück? +Drei Ebenen: Das Audit-Log protokolliert Änderungen, Snapshots frieren Datenstände ein, Backups sichern alles für den Ernstfall. +Suchbegriffe: Änderungshistorie, Verlauf, Wiederherstellen, Snapshot, Datensicherung. + +<CardGrid> + <Card title="Audit-Log">Protokolliert Änderungen — wer, wann, vorher/nachher.</Card> + <Card title="Snapshots">Frieren Datenstände im Ordner `snapshotPath` ein.</Card> + <Card title="Backups">Voll-Export als ZIP für Umzug und Ernstfall.</Card> +</CardGrid> + +## Audit einschalten und lesen + +Audit ist zweistufig: Es läuft nur, wenn **Server und Projekt** es erlauben. + +```yaml title="api/config.yml — Projekt-Opt-in (Starter-Standard)" +audit: + enabled: true +``` + +| Ebene | Schalter | Standard | +|---|---|---| +| Server | `audit.enabled`, TTL `audit.defaultTTL: 720h` (30 Tage, `"0"` = ewig) | Betreiber-Sache | +| Projekt | `audit.enabled: true` | Starter: an | +| Sammlung | `audit: { enabled, actions: [create, update, delete] }` | Standard-Aktionen: anlegen, ändern, löschen | +| Action | `audit: { enabled, actions: [get, post] }` | Nur was du einschaltest | + +<Aside type="note"> +Ohne `audit.enabled: true` im Projekt bleibt das Log dunkel — auch wenn der Server es anbietet. +Die Sammlung `ssr` (Cache) ist bewusst ausgenommen (`enabled: false`). +</Aside> + +<Steps> + +1. Etwas ändern (z. B. Seitentitel per `PUT`). +2. Im **tibi-admin** die Änderungshistorie des Eintrags öffnen — wer, wann, vorher/nachher. +3. Alte Fassung per Wiederherstellen zurückschreiben (erst an Testdaten üben). +4. Per API lesen geht mit `GET /api/v1/audit` (Recht `audit.read` nötig). + +</Steps> + +## Verlauf im Admin + +Du musst nicht per API lesen: Der Admin zeigt den Verlauf an zwei Stellen — pro Eintrag im Editor und global als „Audit-Log“ (`/admin/audit` bzw. `/projects/:id/audit`, mit Filtern für Projekt, Collection, Aktion und Benutzer, 25 Zeilen pro Seite). + +**Verlaufspanel pro Eintrag.** Im Editor lädt das Panel die letzten 50 Änderungen dieses Datensatzes, neueste zuerst. Jede Zeile zeigt Zeit, Aktion („erstellt“, „geändert“, „gelöscht“), Person und Quelle; bei „geändert“ steht zusätzlich, welche Felder betroffen sind. Ein Pfeil klappt die Zeile auf und zeigt den Vorher/Nachher-Vergleich. Bei „geändert“ und „gelöscht“ erscheint — nur mit Schreibrecht — der Schalter „Wiederherstellen“, der den alten Stand ins Formular übernimmt (danach noch speichern). + +**Diff-Ansicht.** Jeder Vergleich zeigt pro Feld eine Karte mit Status-Badge: „hinzugefügt“, „entfernt“ oder „geändert“. Geänderte Texte stehen als „Vorher“ und „Nachher“ nebeneinander, bei kurzen Texten sind einzelne Wörter markiert. Lange Werte sind eingeklappt und lassen sich per Pfeil ganz aufklappen; jeder Wert hat einen Kopieren-Schalter. Feldnamen kommen aus der Sammlungs-Definition, der technische Pfad steht daneben. Gibt es nichts zu zeigen, meldet die Ansicht „Keine Änderungen“. + +**Wiederherstellen-Dialog.** Der Dialog öffnet sich als seitliches Panel („Wiederherstellen“) und stellt „Aktuell“ (aus dem geöffneten Formular) und „Danach“ (aus dem Verlauf) gegenüber. Per Haken wählst du einzelne Felder aus — „Alle auswählen“ und „Keine“ helfen, der Zähler (z. B. 3 / 5) zeigt den Stand. Beachte den Hinweis „Media-Dateien werden nicht wiederhergestellt“. Bestätigen übernimmt die gewählten Felder ins Formular („Felder übernommen — bitte speichern“). + +**Seitenleisten-Verlauf.** Unter dem Editor zeigt eine kompakte Liste die letzten 10 Änderungen mit Zeit, Aktion und Person. Sie blendet sich bei leerem Verlauf komplett aus — kein Titel, kein Hinweistext. Ein Klick auf eine Zeile öffnet den vollen Vergleich, bei mehr als 10 Einträgen führt „Ältere Einträge“ zur Gesamtansicht. Nach dem Speichern lädt die Liste automatisch neu. + +## Snapshots + +Snapshots sind eingefrorene Datenstände im Ordner `snapshotPath` (`../snapshots` im Starter): + +```yaml title="api/config.yml — Snapshot-Profile des Starters" +snapshotPath: ../snapshots +snapshots: + - name: daily # 12:00 Uhr, redaktionelle Daten + Medien, 14 Stück + schedule: "0 12 * * *" + collections: [content, navigation, tags, medialib, ssr] + includeMedia: true + retention: { maxCount: 14 } + - name: full-daily + schedule: "0 3 * * *" # 03:00 Uhr, alles + Medien, 14 Stück + includeMedia: true + retention: { maxCount: 14 } + - name: full-weekly # sonntags 05:00 Uhr, 12 Stück + schedule: "0 5 * * 0" + collections: [] # leer = alle Sammlungen + includeMedia: true + retention: { maxCount: 12 } + - name: full-monthly # monatlich, Langzeitarchiv, 12 Stück + schedule: "0 6 1 * *" + collections: [] + includeMedia: true + retention: { maxCount: 12 } +``` + +| Regel | Bedeutung | +|---|---| +| `collections: []` (leer) | Alle Sammlungen sichern | +| Liste mit Namen | Nur diese sichern (Medien nur mit `includeMedia: true`, per Hardlink) | +| `retention.maxCount` | Älteste fliegen automatisch raus | +| Speicherung | `json` (BSON-Extended-JSON auf Platte, Standard); `db`/`both` sind Zukunft | + +<Aside type="caution" title="Typo im Starter: tags statt tag"> +Das `daily`-Profil oben ist vereinfacht aus der Starter-`config.yml` abgeschrieben (`description`/`enabled` weggelassen) — aber der Name `tags` darin steht wirklich so im Starter, obwohl die Sammlung `tag` heißt (siehe `api/collections/tag.yml`, `name: tag`). Übernimm die Liste nicht blind: prüfe jeden Namen gegen deine `api/collections/*.yml`, sonst sichert das Profil eine Sammlung, die es nicht gibt. +</Aside> + +Im **tibi-admin** (`/projects/:id/snapshots`, drei Tabs): + +| Tab | Was du tust | +|---|---| +| Configs | Profile ansehen | +| Entries | Auslösen (mit Fortschritt), herunterladen (ZIP), zurückspielen, löschen, aufräumen | +| Stats | Belegung prüfen | + +Zum Zurückspielen braucht dein Token `AllowSnapshot: true`. +Übe das Zurückspielen **nur mit Testdaten** — es überschreibt den Live-Stand. + +## Backup und Restore (mit Betreiber) + +Backups sind der Voll-Export für Umzug und Desaster-Fall — im Admin unter `/projects/:id/backup`: + +<Steps> + +1. Export-Tab: Sammlungen wählen (Kopf-Kästchen = alle), „Start backup“ klicken, Fortschritt abwarten, Datei mit Größenangabe laden. +2. Bricht der Download ab: erst Analyse (`backup/analyze-download`), dann neu laden. +3. Import-Tab: ZIP in die Zone ziehen, Analyse lesen, Restore bestätigen. +4. Danach: [Reload und SSR-Cache](/projekt/deploy/) prüfen, Seite anonym aufrufen. + +</Steps> + +| Unterschied | Snapshot | Backup | +|---|---|---| +| Wofür | Schneller Rücksprung im Alltag | Umzug, Desaster, Weitergabe | +| Wo | `snapshotPath` auf dem Server | ZIP-Datei bei dir | +| Recht | `AllowSnapshot` | Projekt-Admin plus `AllowBackup` | +| Fortschritt | Ja (Stream) | Ja (SSE-Stream) | + +<Aside type="caution"> +Backup und Restore immer mit dem Betreiber abstimmen: Restore überschreibt Daten, große Medien brauchen Zeit und Platz. +Fortschritt läuft als Stream (`text/event-stream`) — bei Abbrüchen nichts doppelt starten, sondern Analyse neu holen. +</Aside> + +## Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| 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 `AllowSnapshot` | Betreiber um Recht bitten | +| Backup-Button fehlt | Kein Projekt-Admin oder `AllowBackup` fehlt | Betreiber um Recht bitten | +| Restore zeigt keine Wirkung | Cache alt | Reload plus `?clear=1` (siehe [Veröffentlichen](/projekt/deploy/)) | + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter, config.yml audit- und snapshots-Blöcke), am 68b42785 2026-10-15 (tibi-server, audit-, backup- und snapshot-docs), am 2b091d89 2026-10-13 (tibi-admin-nova, test-pläne 43 und 44), am 2b091d89 2026-10-13 (tibi-admin-nova, AuditView, AuditHistoryPanel, AuditDiff, AuditRestoreDialog, AuditSidebarHistory). diff --git a/src/content/docs/projekt/dateien-bilder.md b/src/content/docs/projekt/dateien-bilder.md new file mode 100644 index 0000000..66985f0 --- /dev/null +++ b/src/content/docs/projekt/dateien-bilder.md @@ -0,0 +1,109 @@ +--- +title: 'Dateien und Bilder' +description: 'Upload-Format, Medialib-Speicherung, Anzeige nur via MedialibImage, Bildfilter.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Dateien liegen in der Sammlung `medialib`. +Du lädst sie per `POST` hoch, verknüpfst sie per ID und zeigst sie nur über die Komponente `MedialibImage` an. +Suche-Begriffe: Datei hochladen, Bild anzeigen, Bildfilter. + +## Upload-Format + +<Steps> + +1. Lege einen `medialib`-Eintrag mit einem `file`-Objekt an — `src` als Data-URI, `path` als Dateiname: + + ```text title="Upload per POST (Data-URI)" + POST /api/v1/_/<namespace>/medialib + {"title": "Demo Hero", "active": true, "file": {"src": "data:image/jpeg;base64,…", "path": "demo-hero-1200.jpg"}} + ``` + +2. Prüfe die Antwort: `file.src` beginnt danach mit `<feld>/`, zum Beispiel `file/demo-hero-1200.jpg`. + +3. Lies Listen immer ohne Datei-Bytes: + + ```text title="Liste ohne Datei-Bytes lesen" + GET …/medialib?select=title,alt,tags + ``` + +</Steps> + +| Richtig | Falsch | +|---|---| +| `{src: 'data:…;base64,…', path: 'name.jpg'}` (`path` optional) | `{filename, data}`-Format | +| `file` als Objekt | `file` als reiner String | +| `file.src` nach dem Speichern beginnt mit `file/` | `?filter=` an Data-URIs hängen | + +Grenzen aus `medialib.yml`: `file` ist Pflicht, max. `50MB`, Downscale auf max. `2048` px beim Upload (`downscale.maxWidth/maxHeight`). + +## Speicherformat + +Gespeichert wird `{src: '<feld>/name.jpg', path, type}` — also relativer Pfad plus erkannter MIME-Typ. +Die Widgets `file`, `file[]` und `foreignFile` schreiben dieses Format; `foreignMedia` in `content.yml` (`blocks.heroImage.image`, `blocks.image`) verweist per Medialib-ID darauf. + +<Aside type="caution" title="active:true nicht vergessen"> +`filter_public.js` erzwingt anonym `active:true` — `medialib.yml` deklariert aber kein `active`-Feld. +Ohne gespeichertes `active:true` löst **kein** öffentlicher Lookup auf (Vorfall 2026-10-05). +Speichere `active:true` auf jedem Medialib-Dokument. +</Aside> + +## Anzeige-Regel: nur MedialibImage + +Baue Bild-URLs nie von Hand. Die Komponente `frontend/src/widgets/MedialibImage.svelte` nimmt `id` oder `entry`, löst `file.src` auf und wählt den Filter nach Breite. + +```text title="Bild-URL mit Filter (Beispiel)" +/api/medialib/<entryId>/file/<name>?filter=l-webp +``` + +So nutzen es die Blöcke: `HeroBlock.svelte` löst `block.heroImage?._lookup?.image` (Fallback `block._lookup["heroImage.image"]`) auf und rendert bei fehlendem Bild einen Verlauf statt eines Bildes. `RichtextBlock.svelte` nutzt `block._lookup?.image` — ohne aufgelösten Lookup bleibt das Bild unsichtbar. + +<Tabs> +<TabItem label="Hero (Content)"> + +```text title="Hero-Lookups (immer gemeinsam)" +GET …/content?lookup=blocks.heroImage.image:medialib,blocks.image:medialib +``` + +Beide Lookups immer gemeinsam anfordern (Empfehlung aus `content.yml`). +</TabItem> +<TabItem label="Navigation / Medialib-Liste"> + +```text title="Navigation und Medialib-Liste" +GET …/navigation?lookup=elements.page:content +GET …/medialib?select=title,alt,tags +``` +</TabItem> +</Tabs> + +## Filter + +Die Größen stehen in `api/collections/lib/imageFilter.yml` (`imageFilter`-Block in `content.yml` und `medialib.yml`): + +| Filter | Breite | Qualität | Ausgabe | +|---|---|---|---| +| `xs-webp` | 100 px (100×100, `fit`) | 60 | webp | +| `s-webp` | 300 px | 70 | webp | +| `m-webp` | 600 px | 76 | webp | +| `l-webp` | 1200 px | 80 | webp | +| `xl-webp` | 2000 px | 84 | webp | +| `xxl-webp` | 2800 px | 88 | webp | + +`MedialibImage` wählt automatisch (`minWidth`-Messung, Standard `l-webp`); du kannst `filter` auch fest setzen, z. B. `?filter=l-webp`. +`?filter=` wirkt nur auf gespeicherte Dateien per URL — nicht auf Data-URIs. + +## Fehlerbilder + +| Symptom | Ursache | Lösung | +|---|---|---| +| Nur IDs, kein `_lookup` | `lookup=…:medialib` fehlt in der Abfrage | Lookup-Parameter ergänzen (siehe [Lesen und suchen](/projekt/abfragen-lesen/)) | +| `_lookup` öffentlich leer, mit Token voll | `active:true` fehlt am Medialib-Dokument | `active:true` speichern | +| Hero zeigt Verlauf statt Bild | Lookup unaufgelöst (`file.src` fehlt) | Eintrag + `active:true` + Lookup prüfen | +| Richtext-Bild verschwindet öffentlich | Gleicher Grund | Gleicher Fix | +| Riesige Antworten | `file.data` mitgelesen | `select` ohne Dateifelder nutzen | +| Dateien bleiben nach Löschen übrig? | Passiert nicht von selbst | Beim Löschen räumt der Server das Upload-Verzeichnis des Dokuments automatisch weg (`filecleanup`, unter der Projekt-UID) — Waisen prüfst du per Dateisuche im Upload-Pfad | + +Weiter: [Lesen und suchen](/projekt/abfragen-lesen/), [Rechte und Tokens](/projekt/rechte-tokens/), [Sammlungen anlegen](/projekt/sammlungen-anlegen/). + +Verifiziert am e3f92ebf 2026-10-14 (tibi-svelte-starter) diff --git a/src/content/docs/projekt/deploy.md b/src/content/docs/projekt/deploy.md new file mode 100644 index 0000000..2318995 --- /dev/null +++ b/src/content/docs/projekt/deploy.md @@ -0,0 +1,131 @@ +--- +title: 'Veröffentlichen' +description: 'Vom lokalen Stack zu Staging und Live: URLs, Skripte, Reload, Token-Trennung.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Lokal entwickeln, auf Staging prüfen, per Branch auf Live heben. +Der Weg: `.env`-URLs verstehen, CI-Skripte laufen lassen, Config neu laden, Köpfe sauber trennen. +Suchbegriffe: Deploy, Staging, Live, Produktion, Reload, Freischaltung. + +## URL-Bild + +```bash title=".env — die drei Bühnen (Platzhalter im Starter ersetzen)" +LIVE_URL=https://www # Produktion (im echten Projekt: echte Domain) +STAGING_URL=https://dev-<projekt>.staging.testversion.online +CODING_URL=https://<projekt>.code.testversion.online +``` + +| Bühne | Branch | Was liegt dort | +|---|---|---| +| Coding | dein Arbeits-Branch | Deine Sandbox mit Basic-Auth | +| Staging | `dev` | Prüfbühne, per `ci-staging.sh` gebaut | +| Live | `master` | Produktion, per `ci-deploy.sh` via rsync | + +```text title="Branch zu Bühne: dev wird Staging, master wird Live" +push auf dev ──▶ CI: validate, build, build:server ──▶ ci-staging.sh ──▶ STAGING_URL +push auf master ─▶ CI: validate, build, build:server ──▶ ci-deploy.sh ──▶ LIVE_URL +``` + +Lokal startest du mit `docker-compose-local.yml` (`tibi`-Profil: fertiges Image, Projekt als `/data` gemountet). +Staging nutzt `docker-compose-staging.yml` (frisch gebauter Stack im CI-Verzeichnis). + +<Aside type="caution"> +Im Starter stehen Platzhalter (`__PROJECT_NAME__`, `_CUSTOMER_ID_`, `LIVE_URL=https://www`). +Erkennt `ci-deploy.sh` die Vorlage, bricht es ohne Deploy ab — erst alle Platzhalter ersetzen. +</Aside> + +## Deploy-Ablauf + +<Tabs> +<TabItem label="CI-Pipeline (deploy.yml)"> + +<Steps> + +1. Checkout, Starter-Defaults auflösen, `yarn install`. +2. `yarn validate` (Svelte-Check plus TypeScript) — rot heißt Stopp. +3. `ci-modify-config.sh` passt die Config für die Zielbühne an. +4. `yarn build` (Frontend) und `yarn build:server` (SSR-Bundle nach `api/hooks/lib/app.server.js`). +5. Sourcemaps zu Sentry hochladen. +6. Branch `dev` → `ci-staging.sh`; Branch `master` → `ci-deploy.sh`. + +</Steps> + +</TabItem> +<TabItem label="Staging (ci-staging.sh)"> + +```bash title="Kurzfassung: kopieren, starten, neu laden" +rsync -av api frontend/dist frontend/assets "${API_BASEDIR}/" +docker compose -f docker-compose-staging.yml up -d --build +curl -X POST "${STAGING_URL}/api/_/admin/reload" \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" -d '{}' +curl -X POST "${STAGING_URL}/api/ssr?clear=1" \ + -H "Content-Type: application/json" -d '{}' +``` + +</TabItem> +<TabItem label="Live (ci-deploy.sh)"> + +```bash title="Kurzfassung: rsync, Rechte, neu laden" +rsync ... frontend/ "${RSYNC_HOST}":./frontend/ # master: ohne src und *.map +rsync ... api/ "${RSYNC_HOST}":./api/ +rsync ... media "${RSYNC_HOST}":./ +curl -X POST "${LIVE_URL}/api/_/admin/reload" -H "Authorization: Bearer ${ADMIN_TOKEN}" -d '{}' +curl -X POST "${LIVE_URL}/api/ssr?clear=1" -H "Content-Type: application/json" -d '{}' +``` + +Zugang per `RSYNC_USER`, `RSYNC_PASS`, `RSYNC_HOST`, `RSYNC_PORT` aus `.env`. +Auf `master` fliegen Quellen und Karten raus (`--exclude=src --exclude=*.map`). + +</TabItem> +</Tabs> + +## Reload-Endpunkte + +Nach jedem Deploy: Config neu laden **und** SSR-Cache wischen — sonst siehst du alte Seiten auf neuer Config. + +| Endpunkt | Kopf | Wirkung | +|---|---|---| +| `POST /api/_/admin/reload` (Live/Staging-URL) | `Authorization: Bearer <ADMIN_TOKEN>` | Projekt-Config über den Reverse-Proxy neu laden | +| `POST /api/ssr?clear=1` | keiner nötig (`public.post: true`) | Ganzen SSR-Cache löschen | +| `POST /api/v1/_/:project/_/admin/reload` | `X-Admin-Token` (Server-Ebene) | Gleicher Reload direkt am Server | +| `POST /api/v1/_/:project/_/admin/regenerate-search` | `X-Admin-Token` | Suchindex neu aufbauen ([Suche](/projekt/suche/)) | + +## Token-Trennung + +Vier Köpfe, vier Zwecke — aus [Rechte und Tokens](/projekt/rechte-tokens/): + +| Kopf | Wert | Wofür hier | +|---|---|---| +| `Token` | `ADMIN_TOKEN` | Sammlungs-CRUD in Skripten | +| `X-Auth-Token` | JWT nach Login | Deine Nutzer-Aktionen beim Testen | +| `X-Admin-Token` | Server-Admin-Token | Server-Ebene (Projekte, Reload direkt, Backups) — **nicht** ins Deploy-Skript | +| `Authorization: Bearer …` | `ADMIN_TOKEN` | Proxy-Reload auf Live/Staging — das ist der Deploy-Kopf | + +<Aside type="caution"> +`ADMIN_TOKEN` legt **keine** Projekte an und ersetzt kein `X-Admin-Token`. +Im Deploy-Skript steht er nur hinter `Bearer` für den Proxy-Reload — Projekt-CRUD per JWT läuft getrennt davon. +</Aside> + +## Checkliste und Abnahme + +<Steps> + +1. Platzhalter in `.env` ersetzt (`PROJECT_NAME`, `PRODUCTION_PATH`, `LIVE_URL`)? +2. `yarn validate`, `yarn build`, `yarn build:server` lokal grün? +3. Auf `dev` gepusht, Staging-URL geprüft (anonym, nicht nur mit Token)? +4. Auf `master` gepusht, Reload plus `?clear=1` in den CI-Logs gesehen? +5. Live-URL anonym geöffnet: Navigation da, Bilder da, kein alter Stand? + +</Steps> + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Deploy bricht mit „starter template detected“ ab | Platzhalter noch drin | `.env` und `PRODUCTION_PATH` vervollständigen | +| Neue Config wirkt nicht | Reload vergessen | Reload-Endpunkt pro Bühne aufrufen | +| Alte Seite trotz neuer Daten | SSR-Cache alt | `?clear=1`, Köpfe `X-SSR-Cache`/`X-SSR-Cleared` prüfen | +| `project not found` | Namespace falsch | [Neues Projekt](/einstieg/neues-projekt/) Schritt 5 | +| 401/403 beim Reload | Falscher Kopf (z. B. `Token:` statt `Bearer`) | Tabelle oben: Deploy nimmt `Bearer`, Server-API nimmt `X-Admin-Token` | + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter, .env, ci-deploy.sh, ci-staging.sh, deploy.yml). diff --git a/src/content/docs/projekt/felder-widgets.md b/src/content/docs/projekt/felder-widgets.md new file mode 100644 index 0000000..1f174f1 --- /dev/null +++ b/src/content/docs/projekt/felder-widgets.md @@ -0,0 +1,199 @@ +--- +title: 'Felder und Widgets' +description: 'Feldtypen, Widgets, Validatoren, Choices, Fremdschlüssel, dependsOn, i18n.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Jedes Feld hat `name` und `type`. +Dazu kommen optional `validator` (Server-Regeln) und `meta` (Admin-Darstellung). +Beispiele unten stammen aus `content.yml`, `navigation.yml`, `medialib.yml` und `tag.yml`. + +## Feldaufbau + +```yaml title="content.yml — Pflichtfeld mit Pattern plus Hilfetext" +# aus content.yml — Pflichtfeld mit Pattern plus Hilfetext +- name: path + type: string + validator: + pattern: ^\/[a-z0-9\-\/]*$ + required: true + meta: + label: { de: "Pfad", en: "Path" } + helperText: + de: "URL-Pfad für diese Seite, z.B. '/ueber-uns'." + en: "URL path for this page, e.g. '/about-us'." +``` + +- `name` passt auf `^[0-9A-Za-z_-]+$` — keine Punkte, keine Leerzeichen. +- `object` und `object[]` tragen ihre Unterfelder in `subFields`. +- Listen hängst du per `[]` an: `string[]`, `object[]`, `file[]`. +- `meta.hide: true` versteckt Technikfelder (`_pagebuilderThumbnail`, `_testdata`). + +## Typ-Tabelle + +Das Schema kennt elf Typen. Das Widget wählst du in `meta.widget`. + +| Server-Typ | Bedeutung | Widget im Starter | +|---|---|---| +| `string` | Text, eine Zeile | Standard; `select`, `richtext`, `textarea`, `foreignKey`, `foreignMedia`, `color`-nah via `select` | +| `string[]` | Textliste | `foreignKey` mit `foreign: { collection: tag }` (`medialib.yml`: `tags`) | +| `number` | Zahl | `number` | +| `number[]` | Zahlenliste | `number` | +| `boolean` | Ja/Nein | Standard-Checkbox/`switch`; reine Flags ohne Widget (`comment.yml`: `active`) | +| `object` | Gruppe | `containerLessObject` (kein Kasten), Standard mit Kasten | +| `object[]` | Liste von Gruppen | `containerLessObjectArray`, `pagebuilder` (`content.yml`: `blocks`) | +| `file` | Upload | `file` (`medialib.yml`), `image` | +| `file[]` | Mehrere Uploads | `file` | +| `date` | Datum/Zeit | `date`, `datetime` (`content.yml`: `publication.from`) | +| `any` | Alles erlaubt | `json` | + +<Aside type="note"> +Der Server akzeptiert zur Laufzeit zusätzlich die Schreibweisen `bool`, `float`, `float64`, `time` und `datetime`. +In neuem YAML nutzt du trotzdem nur die elf Schema-Typen — so bleibt die Datei gegen das Schema prüfbar. +</Aside> + +Alle prüfbaren Widgets aus dem Schema (25 Enum-Werte — `pagebuilder` und `pageBuilder` stehen beide drin und meinen dasselbe): + +`text`, `textarea`, `number`, `checkbox`, `switch`, `select`, `selectArray`, `chipArray`, `date`, `datetime`, `file`, `image`, `json`, `richtext`, `html`, `foreignKey`, `foreignKeyChipArray`, `foreignFile`, `foreignMedia`, `pagebuilder`, `pageBuilder`, `templateProps`, `containerLessObject`, `containerLessObjectArray`, `color`. + +## Validatoren + +Der Server prüft `validator` bei `POST` und `PUT`. +Leere Strings bestehen `required` nicht — außer mit `allowZero: true`. + +| Schlüssel | Wirkung | Beispiel aus dem Starter | +|---|---|---| +| `required: true` | Feld muss gefüllt sein | `content.yml`: `name`, `path`; `navigation.yml`: `language`, `type` | +| `pattern` | Regulärer Ausdruck | `path`: `^\/[a-z0-9\-\/]*$`; `hash`: `^[a-zA-Z0-9_-]+$` | +| `in` | Nur diese Werte | `navigation.yml`: `language` in `["de", "en"]`, `type` in `["header", "footer"]` | +| `minLength` / `maxLength` | Zeichenlänge | `elements.name`: `maxLength: 100`; `alt.de`: `maxLength: 500` | +| `min` / `max` | Zahlenbereich | — | +| `minDate` / `maxDate` | Datumsbereich | — | +| `minItems` / `maxItems` | Listenlänge | — | +| `format` | `email`, `url`, `uuid` oder `slug` | — | +| `maxFileSize` / `minFileSize` | Dateigröße (`"50MB"`) | `medialib.yml`: `file` mit `required: true`, `maxFileSize: "50MB"` | +| `accept` | Erlaubte MIME-Typen | — | +| `eval` | Eigene JavaScript-Regel | — | +| `allowZero` | Leere Werte trotz `required` erlauben | — | + +## Choices und Fremdschlüssel + +### Feste Auswahl + +`meta.choices` listet `id` plus `name` (`de`/`en`). +Mit `widget: select` wird daraus ein Dropdown. + +```yaml title="navigation.yml — feste Auswahl mit choices" +# aus navigation.yml +- name: language + type: string + validator: + in: ["de", "en"] + required: true + meta: + label: { de: "Sprache", en: "Language" } + widget: select + choices: + - id: de + name: { de: "Deutsch", en: "German" } + - id: en + name: { de: "Englisch", en: "English" } +``` + +Leerer `id: ""` heißt „Standard/keine Auswahl" (`containerWidth`, `padding` in `content.yml`). + +### Fremdschlüssel + +`meta.foreign` verweist auf eine andere Sammlung. +Der Admin zeigt dann einen Auswahl-Dialog statt einem Textfeld. + +```yaml title="navigation.yml — Fremdschlüssel auf content" +# aus navigation.yml — Seite verweist auf content +- name: page + type: string + meta: + label: { de: "Seite", en: "Page" } + widget: foreignKey + foreign: + collection: content + id: id +``` + +| Widget | Wofür | Beispiel | +|---|---|---| +| `foreignKey` | Ein Verweis (ID als String) | `navigation.elements.page` → `content`; `comment.contentId` → `content`; `medialib.tags` → `tag` | +| `foreignMedia` | Bild aus der Mediathek | `content.yml`: `blocks.heroImage.image`, `blocks.image` → `medialib` | +| `foreignFile` / `foreignKeyChipArray` | Datei-Verweis / Mehrfach-Verweis | laut Schema verfügbar | + +Auflösen musst du den Verweis beim Lesen per `lookup` — siehe [Lesen und suchen](/projekt/abfragen-lesen/). + +## dependsOn: Felder ein- und ausblenden + +`meta.dependsOn.eval` ist JavaScript. +`$parent` ist das umgebende Objekt — so zeigt der Pagebuilder nur passende Felder. + +```yaml title="content.yml — Unterzeile nur beim Hero-Block" +# aus content.yml — Unterzeile nur beim Hero-Block +- name: subline + type: string + meta: + label: { de: "Unterzeile", en: "Subline" } + dependsOn: + eval: $parent.type == 'hero' +``` + +Weitere Muster aus `content.yml` zum Kopieren: + +- Mehrere Typen: `$parent.type == 'features' || $parent.type == 'richtext' || $parent.type == 'accordion' || $parent.type == 'contact-form'` +- Negation: `$parent.type != ''` (Block-Ausschalter `hide`) + +## i18n-Felder + +Zwei Muster kommen im Starter vor: + +<Tabs> +<TabItem label="Sprach-Objekt"> + +```yaml title="medialib.yml — Alt-Text je Sprache" +# aus medialib.yml — Alt-Text je Sprache +- name: alt + type: object + meta: + label: { de: "Alt-Text", en: "Alt Text" } + subFields: + - name: de + type: string + validator: + maxLength: 500 + - name: en + type: string + validator: + maxLength: 500 +``` + +</TabItem> +<TabItem label="Einträge koppeln"> + +```yaml title="content.yml — Übersetzungen gehören zusammen" +# aus content.yml (meta) — Übersetzungen gehören zusammen +meta: + i18n: + entry: + languageField: lang + groupField: translationKey +``` + +Jede Sprache bekommt einen eigenen Eintrag mit gleichem `translationKey`. +`path` + `lang` und `translationKey` + `lang` sind je einmalig (Unique-Index). +`lang` selbst ist ein freier String — das Schema erzwingt kein `in: [de, en]`. + +</TabItem> +</Tabs> + +<Aside type="caution"> +`meta.protected: true` (siehe `comment.yml`: `contentId`, `author`, `message`) schützt Felder vor fremdem Überschreiben. +Setze es bei Feldern, die Nutzer nicht nachträglich ändern dürfen. +</Aside> + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter), am 4c55f82 2026-10-12 (tibi-types), am 68b42785 2026-10-15 (tibi-server, validator.go). diff --git a/src/content/docs/projekt/hooks-schreiben.md b/src/content/docs/projekt/hooks-schreiben.md new file mode 100644 index 0000000..032ca71 --- /dev/null +++ b/src/content/docs/projekt/hooks-schreiben.md @@ -0,0 +1,234 @@ +--- +title: 'Hooks schreiben' +description: 'Lifecycle get/post/put/delete, Datei-Hooks, SSR- und Cache-Hooks aus dem Starter.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Hooks sind JavaScript-Dateien, die der tibi-server vor oder nach einem Zugriff ausführt. +Du filterst damit öffentliche Lesezugriffe, räumst den SSR-Cache weg oder renderst Seiten. +Suche-Begriffe: Hook schreiben, Lifecycle, Cache invalidieren. + +## Lifecycle: welche Stufe wann läuft + +Die Stufen stehen in `tibi-types/schemas/config/hooks.schema.json`. +Jeder Hook ist `{ type: "javascript", file: "hooks/…js", timeout?: number }` — nur Datei-Hooks, kein Inline-Code. + +| Methode | Stufen (in dieser Reihenfolge) | +|---|---| +| `get` | `handle`, `read`, `return`, `file` | +| `post` | `bind`, `validate`, `handle`, `create`, `return`, `bulkCreate`, `bulkReturn` | +| `put` | `bind`, `validate`, `update`, `return`, `bulkUpdate`, `bulkReturn` | +| `delete` | `delete`, `return`, `bulkDelete`, `bulkReturn` | +| `audit` | `return` | + +So bindet der Starter sie ein (`api/collections/content.yml`): + +```yaml title="content.yml — Hooks aus dem Starter" +# content.yml — Hooks aus dem Starter abgeschaut +hooks: + get: + read: + type: javascript + file: hooks/filter_public.js + post: + return: + type: javascript + file: hooks/clear_cache.js + put: + return: + type: javascript + file: hooks/clear_cache.js + delete: + return: + type: javascript + file: hooks/clear_cache.js +``` + +Die `ssr`-Sammlung nutzt eigene Stufen (`api/collections/ssr.yml`): `get.read` → `hooks/ssr/get_read.js`, `post.bind` → `hooks/ssr/post_bind.js`. + +## Hook-Arten im Starter + +| Datei | Stufe | Aufgabe | +|---|---|---| +| `hooks/filter_public.js` | `get.read` | Anonyme sehen nur `active:true` plus Veröffentlichungsfenster | +| `hooks/clear_cache.js` | `post/put/delete.return` | SSR-Cache nach jeder Änderung invalidieren | +| `hooks/ssr/get_read.js` | `get.read` der `ssr`-Sammlung | Seite rendern oder Cache ausliefern | +| `hooks/ssr/post_bind.js` | `post.bind` der `ssr`-Sammlung | `?clear=1` räumt den Cache, sonst Fehler `500` (Dummy-Sammlung) | +| `hooks/config.js` | kein Hook, `require`-Modul | `publishedFilter`, `ssrValidatePath()`, `apiSsrBaseURL` | +| `hooks/lib/utils.js` | kein Hook, `require`-Modul | `log()`, `clearSSRCache()` | + +## Rezept: je ein get/post/put/delete-Hook mit Log + +<Steps> + +1. Lies den Filter-Hook: `filter_public.js` hängt den `publishedFilter` an — nur wenn `context.user.auth()` leer ist (anonym). + + ```js title="hooks/filter_public.js (gekürzt)" + // hooks/filter_public.js (gekürzt) + const { publishedFilter } = require("./config") + + ;(function () { + if (!context.user.auth()) { + /** @type {HookResponse} */ + const hookResponse = {} + if (context.filter && Object.keys(context.filter).length > 0) { + hookResponse.filter = { $and: [context.filter, publishedFilter] } + } else { + hookResponse.filter = publishedFilter + } + return hookResponse + } + })() + ``` + + Ohne `return` läuft der Hook ins Leere — eingeloggte Nutzer sehen dann alles. + +2. Verstehe `clear_cache.js`: Er liest Sammlung, Methode und Entry-ID aus `context` und ruft `utils.clearSSRCache()` auf. + + ```js title="hooks/clear_cache.js (gekürzt)" + // hooks/clear_cache.js (gekürzt) + var utils = require("./lib/utils") + ;(function () { + const col = context.collection() + const collectionName = col && col.name ? col.name : null + const req = context.request() + const method = req.method + const data = Array.isArray(context.data) ? {} : context.data || {} + let entryId = data.id || req.param("id") || null + if (!entryId) { + // DELETE-Fallback: letzte Pfad-Segmente ≥ 24 Zeichen gelten als ID + const segments = req.path.split("/") + const last = segments[segments.length - 1] + if (last && last.length >= 24) entryId = last + } + utils.clearSSRCache(collectionName, entryId, method) + })() + ``` + +3. Merke dir die Invalidierungs-Regel aus `lib/utils.js`: `POST` löscht nur Listen-Abhängigkeiten (`col:*`), `PUT`/`DELETE` löschen Detail plus Liste (`col:id` oder `col:*`). Ohne Argumente folgt ein Komplett-Wipe. + +4. Logge mit `utils.log()` (`console.log` mit `JSON.stringify`). Das ist die einzige Log-Hilfe im Starter. + +</Steps> + +## Wichtigste Kontexte + +Vollständige Liste: [Hook-Kontexte](/reference/hook-kontexte/). Hier die fünf, die du täglich brauchst: + +| Kontext | Zugriff im Starter | Wofür | +|---|---|---| +| `context.user.auth()` | `filter_public.js` | Anmeldung prüfen (`null` = anonym) | +| `context.request()` | `clear_cache.js`, `get_read.js` | Methode, Pfad, Query, Header lesen | +| `context.response.header()` | `get_read.js`, `utils.js` | `X-SSR-Cache`, `X-SSR-Cleared`, `Cache-Control` setzen | +| `context.db` | `config.js`, `get_read.js`, `utils.js` | `find`, `create`, `delete`, `deleteMany` | +| `context.tpl` / `context.http` | per [Hook-Kontexte](/reference/hook-kontexte/) | Templates rendern, externe Aufrufe | + +Weitere im Starter genutzte Zugriffe: `context.filter`, `context.data`, `context.collection()`, `context.config.server().api.port`, `context.api().namespace`, `context.fs.readFile()`, `context.debug.sentryTraceId()`, `context.ssrCache` / `context.ssrDeps` (nur SSR). + +## Kontext in get.read: filter, aber kein data + +In `get.read` siehst du die Anfrage, nicht die Dokumente: + +| Zugriff | Inhalt in get.read | Beleg | +|---|---|---| +| `context.filter` | Eingehender Mongo-Filter (Objekt oder leer) — genau das Muster aus `filter_public.js` (`context.filter && Object.keys(...)`) | Starter `filter_public.js`, Controller `collection_get.go` (hookData: filter, selector, offset, limit, sort, q, qName) | +| `context.selector`, `context.offset`, `context.limit`, `context.sort`, `context.q` | Paging, Sortierung, Suche der Anfrage | Controller `collection_get.go` | +| `context.data` | **Gibt es in get.read nicht** — erst ab `post`/`put`/`delete` (dort das Dokument) | Controller (kein `data`-Key im read-hookData) | +| `response.header()` | Erreicht den Client auch bei normalem Listen-GET (Server schreibt per Header, kein Body-Ersatz nötig) | `context_response.go` (`c.Header`) | + +## Fenster-Datum: jetzt als BSON-Datum + +Vergleiche gegen „jetzt" exakt wie der Starter (`api/hooks/config.js:4`): + +```js title="Jetzt als Datum, Fenster inklusiv" +const now = { $date: new Date().toISOString() } +const publishedFilter = { + active: true, + $or: [ + { publication: { $exists: false } }, + { publication: null }, + { + $and: [ + { $or: [{ "publication.from": { $exists: false } }, { "publication.from": null }, { "publication.from": { $lte: now } }] }, + { $or: [{ "publication.to": { $exists: false } }, { "publication.to": null }, { "publication.to": { $gte: now } }] }, + ], + }, + ], +} +``` + +Regeln: `new Date()` gibt es in Hooks (goja), `$lte`/`$gte` sind inklusiv, fehlende Felder brauchen die `$exists:false`/`null`-Zweige — sonst verschwinden undatierte Dokumente. Serialisierung: `{ $date: ISO-String }`. + +## Rezept: Filter + 60-s-Cache + Fallback-Header + +`cache.*` ist projektweit (nicht pro Request) — kombiniere ihn mit `filter`-Return und Header so: + +```js title="Fensterfilter mit Cache und Fallback-Header" +;(function () { + if (context.user.auth()) return // nur anonym filtern + const key = "content:published" // Key-Konvention: Sammlung:Zweck + const hit = context.cache.get(key) + if (hit) { + if (context.filter && Object.keys(context.filter).length > 0) { + return { filter: { $and: [context.filter, hit] } } + } + return { filter: hit } + } + context.response.header("X-Publication-Fallback", "uncached") + const filter = { active: true } // Kurzform; Fenster siehe oben + context.cache.set(key, filter, 60000) // 60 s = 60000 ms + if (context.filter && Object.keys(context.filter).length > 0) { + return { filter: { $and: [context.filter, filter] } } + } + return { filter: filter } +})() +``` + +Key-Regel: Namen mit `Sammlung:Zweck` vergeben — der Cache teilt sich alle Hooks des Projekts. + +## SSR-Hooks: Rendern und Cachen + +```text title="SSR-Ablauf im Überblick" +GET ssr?url=/de/… → get_read.js → ssrValidatePath(url) → Cache-Treffer? → app.server rendern → in ssr-Sammlung speichern → HTML werfen +``` + +- `ssrValidatePath()` aus `config.js`: `/` und `/de|/en` rendern, Sprachpräfix vor der `content`-Abfrage abstreifen, kanonische URL oder `-1` (404) / `0` (kein SSR) zurückgeben. +- `get_read.js` speichert `path`, `content`, `validUntil`, `dependencies` (`content:<id>`, `content:*`). Parallele Schreiber mit gleichem `path` verlieren per Unique-Index — der Fehler wird geschluckt. +- `context.is404 = true` (gesetzt von `NotFound.svelte`) liefert HTTP `404` ohne zu cachen. +- `post_bind.js`: nur `?clear=1` ruft `clearSSRCache()` ohne Argumente (Komplett-Wipe) und wirft `{ status: 200, removed }`. Jeder andere POST wirft `500` — `ssr` ist eine Dummy-Sammlung. + +## Fehlerbehandlung + +<Tabs> +<TabItem label="Antwort werfen"> + +```js title="Antwort direkt werfen" +throw { status: 403, msg: "invalid auth" } +throw { status: 200, log: false, html: tpl } +``` + +So antwortet `get_read.js`: HTML oder Fehler direkt werfen, kein `return`. + +Der Throw-Umschlag (`internal/models/hook.go`): `status` (Zahl, Vorgabe `500`), `msg` (Text, wird an den JS-Fehler angehängt), `json` (Antwortkörper — ohne `json`-Feld antwortet der Server das geworfene Objekt selbst), `html`/`string`/`bytes`/`file` (direkte Antwort statt JSON). **Achtung:** Für den Fehler*text* zählt nur `msg` — ein Feld `message` landet zwar im Body (wenn du kein `json` setzt), ändert aber nicht den Fehlertext. Schreibe deshalb `msg`. +</TabItem> +<TabItem label="Filter zurückgeben"> + +```js title="Filter zurückgeben" +return hookResponse // { filter: { $and: [...] } } +``` + +Nur `get.read`-Hooks wie `filter_public.js` geben ein Objekt mit `filter` zurück. +</TabItem> +</Tabs> + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Öffentliche Liste zeigt Entwürfe | `filter_public.js` fehlt oder gibt nichts zurück | `get.read`-Hook in der YAML prüfen | +| SSR zeigt alte Seite nach PUT | `clear_cache.js` fehlt an `put.return` | Hook-Zeile aus `content.yml` übernehmen | +| `ssr`-POST liefert `500` | Normal — Dummy-Sammlung ohne `?clear=1` | `?clear=1` anhängen oder lassen | +| DELETE räumt nichts weg | ID weder in `data.id` noch im Pfad | Pfad-Segment ≥ 24 Zeichen prüfen | + +Weiter: [Lesen und suchen](/projekt/abfragen-lesen/), [Rechte und Tokens](/projekt/rechte-tokens/), [Hook-Kontexte](/reference/hook-kontexte/). + +Verifiziert am e3f92ebf 2026-10-14 (tibi-svelte-starter), am 68b42785 2026-10-15 (tibi-server), am 4c55f824 2026-10-12 (tibi-types) diff --git a/src/content/docs/projekt/jobs-actions.md b/src/content/docs/projekt/jobs-actions.md new file mode 100644 index 0000000..453ccb4 --- /dev/null +++ b/src/content/docs/projekt/jobs-actions.md @@ -0,0 +1,144 @@ +--- +title: 'Jobs und Aktionen' +description: 'Cron-Jobs und Action-Endpunkte aus Projektsicht anlegen und beobachten.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid } from '@astrojs/starlight/components'; + +Jobs laufen nach Zeitplan (Cron), Aktionen auf Abruf per HTTP. +Beides sind JavaScript-Programme in der goja-Laufzeit des **tibi-server** — wie Hooks, aber ohne dass du sie erst an ein Formular hängen musst. +Suchbegriffe: Cron-Job, geplante Aufgabe, Action-Endpunkt, Kontaktformular-Backend. + +<CardGrid> + <Card title="Jobs">Laufen nach Zeitplan (Cron) — zum Beispiel Aufräumen alle 5 Minuten.</Card> + <Card title="Aktionen">Laufen auf Abruf per HTTP — zum Beispiel Kontaktformular oder Webhook.</Card> +</CardGrid> + +<Aside type="note"> +Der Starter liefert **keine** `jobs:`- oder `actions:`-Abschnitte in `api/config.yml` mit. +Du legst sie selbst an — die Schlüssel `jobs` und `actions` gehören zum Projektschema, die Dateiformate zu `job.schema.json` und `action.schema.json`. +</Aside> + +## Job anlegen + +```yaml title="api/config.yml — Job registrieren" +jobs: + - cron: "*/5 * * * *" # alle 5 Minuten (klassisches 5-Felder-Format) + type: javascript + file: jobs/cleanup.js + timeout: 30000 # Millisekunden, optional +``` + +| Feld | Pflicht | Bedeutung | +|---|---|---| +| `cron` | nein (Schema-Pflicht: nur `type` + `file`) — aber ohne `cron` läuft der Job nie | 5 Felder (`Minute Stunde Tag Monat Wochentag`), z. B. `0 8 * * *` für täglich 8 Uhr | +| `type` | ja | Immer `javascript` | +| `file` | ja | Pfad zum Skript, relativ zum Projekt | +| `timeout` | nein | Abbruch nach N Millisekunden — setze ihn immer, damit ein Hänger nicht ewig läuft | + +<Steps> + +1. Skript unter `jobs/` ablegen (gleiche Hook-Laufzeit, aber `JOB_CONTEXT`: kein HTTP-Request). +2. `jobs:`-Block in `api/config.yml` ergänzen. +3. Config neu laden (`POST …/_/admin/reload`, siehe [Veröffentlichen](/projekt/deploy/)). +4. Zum Testen erst Minutentakt (`* * * * *`), Log prüfen, dann auf den echten Takt stellen. + +</Steps> + +```js title="jobs/cleanup.js — Beispiel mit Timeout im Blick" +// Läuft unter der Projekt-UID (suexec-isoliert), fast alle Hook-Pakete verfügbar. +// Halte jeden Durchlauf kurz: Lieber oft und klein als selten und groß, +// damit der Timeout nie zuschlägt. +``` + +## Action anlegen + +Aktionen sind Hook-basierte Endpunkte **ohne** Sammlung dahinter — ideal für Kontaktformulare, Newsletter-Anmeldungen oder Webhooks. +Sie nutzen dasselbe Rechte-, Hook-, CORS- und Audit-System wie Sammlungen, haben aber keine Felder, Indizes, Uploads oder Suche. + +```yaml title="api/config.yml — Actions einbinden" +actions: + - !include actions/contact-form.yml +``` + +```yaml title="api/actions/contact-form.yml — eine Action" +name: contact-form + +meta: + label: { de: "Kontaktformular", en: "Contact Form" } + +permissions: + public: + methods: + post: true # anonym senden darf jeder + user: + methods: + post: true + get: true + +hooks: + post: + bind: + type: javascript + file: hooks/contact-form/post_bind.js + validate: + type: javascript + file: hooks/contact-form/post_validate.js + handle: + type: javascript + file: hooks/contact-form/post_handle.js + return: + type: javascript + file: hooks/contact-form/post_return.js +``` + +| Baustein | Regeln | +|---|---| +| `name` | Nur `[0-9A-Za-z_-]`, erreichbar unter `/_actions/<name>` | +| `permissions` | Gleiche Blöcke wie Sammlungen (`public`, `user`, `token:…`) — siehe [Rechte und Tokens](/projekt/rechte-tokens/) | +| `hooks` | Ein String (Kurzform) oder Stufen `bind`/`validate`/`handle`/`return`, je `get`/`post` | +| `cors` | Eigener Eintrag mit `merge: true/false` (anhängen oder ersetzen) — die [CORS-Kaskade](/server/sicherheit/) beginnt bei `/_actions/<name>` | +| `audit` | `enabled: true` plus `actions: [get, post]` protokolliert Aufrufe | + +<Tabs> +<TabItem label="Per API auslösen"> + +```bash title="Action per curl senden" +curl -X POST http://localhost:8080/api/v1/_/<namespace>/_actions/contact-form \ + -H "Content-Type: application/json" \ + -d '{"name":"Aylin","email":"a@example.de","message":"Hallo!"}' +``` + +</TabItem> +<TabItem label="Im Admin auslösen"> + +Rufe die Action-Übersicht im **tibi-admin** auf: Karten pro Action, Methoden-Tabs (`get`/`post`), Eingabemaske bei ausführbaren Methoden, Ergebnis- oder Fortschrittsanzeige. +Gesperrte Methoden zeigen den Grund als Hinweis statt eines Buttons. + +</TabItem> +</Tabs> + +## MCP-Werkzeuge für Aktionen + +Zwei MCP-Werkzeuge spiegeln diese Seite: `actions_list` (Aktionen auflisten, braucht Lese-Recht) und `action_call` (Aktion aufrufen, `method: get/post`, Scope folgt der Methode). Signaturen, Beispiele und Fehler stehen in [MCP nutzen](/projekt/mcp-nutzen/) — dort ist die einzige Referenzstelle. + +## Beobachten + +| Signal | Wo | +|---|---| +| Job-Fehler | Server-Log (`docker compose logs -f tibiserver`) mit Job-Name und Ursache | +| Action-Antwort | HTTP-Status plus Hook-`return`-Payload; Fortschritt bei langen Läufen | +| Nutzung und Quotas | LLM-Nutzungsablage und `/metrics` (siehe [Betrieb](/server/betrieb/)) | +| Aufruf-Protokoll | Audit-Log, wenn `audit.enabled` auf Action-Ebene steht (siehe [Sicherung](/projekt/audit-backup/)) | + +## Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Job bricht kommentarlos ab | `timeout` gerissen oder Cron-Feld ungültig | Timeout erhöhen, Cron auf 5 Felder prüfen, Server-Log lesen | +| `permission denied` auf `/_actions/…` | Falsche Rolle oder falscher Kopf | `permissions`-Block und Token-Kopf prüfen ([Rechte und Tokens](/projekt/rechte-tokens/)) | +| Browser blockt die Action | CORS-Eintrag der Action fehlt | `cors:` an der Action setzen, `merge`-Verhalten beachten | +| Action läuft, schreibt aber nichts | `validate`/`handle`-Hook fehlt oder wirft | Hook-Kette Stufe für Stufe testen | +| `project not found` | Namespace falsch | [Neues Projekt](/einstieg/neues-projekt/) Schritt 5 | + +Verifiziert am 4c55f82 2026-10-12 (tibi-types, job- und action-schema), am 68b42785 2026-10-15 (tibi-server, jobs- und actions-docs), am 2b091d89 2026-10-13 (tibi-admin-nova, actions-test-plan 40). diff --git a/src/content/docs/projekt/llm-nutzen.md b/src/content/docs/projekt/llm-nutzen.md new file mode 100644 index 0000000..b9b9dff --- /dev/null +++ b/src/content/docs/projekt/llm-nutzen.md @@ -0,0 +1,172 @@ +--- +title: 'LLM nutzen' +description: 'Chat, Anbieter, Budgets und Streaming aus Projekt-Sicht: was der Server kann und was es kostet.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Der **tibi-server** chattet für dein Projekt: Zusammenfassen, Entwürfe, eigene Features hinter deinem Backend. +Abgrenzung: Diese Seite beschreibt die **API**. +Die Chat-Oberfläche im Admin (Knopf, Verlauf, Stimme, Werkzeuge) steht unter [KI-Funktionen](/admin/ki-funktionen/) — dort läuft alles über den Proxy, hier rufst du Provider direkt. + +## Chat aufrufen + +Zwei Routen (`setup.go`): `POST /api/v1/llm/chat` chattet, `GET /api/v1/llm/providers` listet Anbieter (ohne Secrets). +Anmeldung wie bei REST (siehe [Rechte und Tokens](/projekt/rechte-tokens/)); dein PAT braucht den LLM-Scope. + +<Tabs> +<TabItem label="Normal"> + +```bash title="POST /llm/chat — normal" +curl -s -X POST http://localhost:8080/api/v1/llm/chat \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"provider":"<anbieter>","model":"<modell>", + "messages":[{"role":"user","content":"Fasse diesen Absatz zusammen: …"}]}' +# → {"id":"…","model":"<modell>","choices":[{"index":0, +# "message":{"role":"assistant","content":"…"},"finishReason":"stop"}], +# "usage":{"promptTokens":12,"completionTokens":30,"totalTokens":42}} +``` + +Pflichtfelder (`llm_chat.go`): `provider` und `messages`. +`model` ist optional — dann gilt das Default-Modell (nächster Abschnitt). + +</TabItem> +<TabItem label="Streaming"> + +```bash title="POST /llm/chat — Streaming (stream:true)" +curl -N -X POST http://localhost:8080/api/v1/llm/chat \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"provider":"<anbieter>","messages":[{"role":"user","content":"Hallo"}], + "stream":true}' +# → data: {"id":"…","model":"…","choices":[{"index":0,"delta":{"role":"assistant","content":"Hal"}}]} +# → data: {"id":"…","choices":[{"index":0,"delta":{"content":"lo"}}]} +# → data: [DONE] +``` + +Format: `Content-Type: text/event-stream`, Chunks als `data: <JSON>`, Ende als `data: [DONE]`. +Fehler im Stream kommen als `data: {"error":"…"}`. + +</TabItem> +</Tabs> + +Optionale Felder (`models.go`, `ChatRequest`): `temperature`, `maxTokens`, `stream`. + +Zugriff: Dein PAT braucht den Scope `llm.chat` (`config/scope.go`, `ScopeLLMChat`). +Fehlt Anmeldung oder Scope, antwortet der Handler `403` — noch vor jeder Provider- oder Budget-Prüfung (`llm_chat.go`: `GetAuth` + `EnforceScope`). + +## Anbieter und Modelle + +Anbieter stehen in der Server-`config.yml` (`llm.providers`, Typ `openai` oder `openai-compatible`). +Namen, `defaultModel`, `models`-Allowlist und `maxTokensPerRequest` legt der Betrieb fest — keine erfundenen Namen verwenden. + +```bash title="GET /llm/providers — was ist konfiguriert" +curl -s http://localhost:8080/api/v1/llm/providers \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' +# → [{"name":"<anbieter>","type":"openai-compatible", +# "defaultModel":"<modell>","models":["<modell>", …]}] +``` + +Modell-Auflösung (`openai.go`, `resolveModel`): + +| Anfrage | Ergebnis | +|---|---| +| `model` gesetzt und in `models` | Genau dieses Modell | +| `model` leer | `defaultModel` des Providers | +| Weder noch | `400 no model specified and no default model configured` | +| `model` nicht in der Allowlist | `400 model … is not allowed, available models: …` | +| `models`-Allowlist leer | Keine Prüfung — jedes Modell passiert (`len(p.models) > 0` schaltet die Prüfung erst ein) | + +Provider-Mechanik (`registry.go`, `openai.go`, `server.go`): + +- Registriert wird nur Typ `openai` oder `openai-compatible` — andere Typen überspringt `NewRegistry` stillschweigend (kein Fehler, der Anbieter fehlt danach einfach). +- Unbekannter Name → `400 LLM provider "…" not found` (`registry.go`, `Get`). +- Leere `baseURL` fällt auf `https://api.openai.com/v1` zurück; der API-Schlüssel wandert server-seitig in den `Authorization: Bearer`-Header — `GET /llm/providers` liefert ihn nie aus (`apiKey` hat `json:"-"`, `setup.go` baut bewusst nur `name`, `type`, `defaultModel`, `models` in die Antwort). +- `maxTokensPerRequest` (> 0) deckelt still: Fehlt `maxTokens` oder liegt es darüber, sendet der Server den konfigurierten Wert an den Provider (`buildRequest`). Das schützt vor Riesen-Antworten, steht aber nicht in der API-Antwort — plane deine Budgets mit dem konfigurierten Wert, nicht mit deinem Wunschwert. + +<Aside type="note"> +Preise stehen nirgends im Code — erfinde keine. +Kosten steuerst du über Budgets (nächster Abschnitt), nicht über Modellnamen. +</Aside> + +## Budgets + +Jeder Aufruf kostet Token aus deinem Budget — sonst antwortet der Server `429`. +Budget-Typ (`models/user.go`, `LLMBudget`): + +| Feld | Bedeutung | +|---|---| +| `provider` | Für welchen Anbieter das Budget gilt | +| `tokenBudget` | Gesamtk approbierte Token (`0` = unbegrenzt auf dieser Ebene) | +| `tokensUsed` | Bereits verbrauchte Token (wächst pro Aufruf) | +| `periodStart` / `periodEnd` | Zeitraum; nach `periodEnd` ist Schluss | + +Regeln (`quota.go`, dazu Reihenfolge in `llm_chat.go`): + +- **Benutzer-Budget ist Pflicht.** Kein Eintrag für den Provider → `429 no LLM budget configured for provider "…"`. +- `tokensUsed >= tokenBudget` → `429 LLM token budget exhausted for provider "…" (used X / Y)`. +- `periodEnd` überschritten → `429 LLM budget period expired for provider "…"`. +- **Org-Budget ist optional** (`CheckBudgetIfSet`): Nur wenn deine Org einen Eintrag hat, zählt er zusätzlich. Die Org wird nur gelesen, wenn dein Konto eine `primaryOrgId` hat — sonst entfällt die Prüfung komplett. Org-Fehltexte tragen ein `org `-Präfix (`org LLM token budget exhausted …`, `org LLM budget period expired …`), damit du in der `429` erkennst, welche Ebene blockiert. +- `tokenBudget: 0` heißt auf dieser Ebene unbegrenzt — ersetzt aber **nicht** den Pflicht-Eintrag auf Benutzerebene. +- Prüfreihenfolge pro Aufruf: erst Benutzer-Budget (`CheckBudget`), dann — nur bei gesetzter `primaryOrgId` — Org-Budget (`CheckBudgetIfSet`). Erst danach geht die Anfrage an den Provider. +- Jeder Aufruf schreibt `tokensUsed` bei Benutzer **und** Org fort (jeweils `$set` auf `llmBudgets`) plus eine Zeile in `llm_usage` (`usage_model.go`, Collection `llm_usage`): Benutzer (`userId`), Org (`orgId`), Provider, Modell, Prompt-/Completion-/Gesamt-Token, Zeit (`timestamp`). Schlägt das Buchen fehl, merkst du nichts: Beide Handler ignorieren den Fehler (`_ = qm.RecordUsage(…)`), die Antwort bleibt gültig. + +Token-Schätzung, wenn der Provider keine `usage` liefert: ca. 4 Zeichen ≈ 1 Token, plus 4 Token Rahmen pro Nachricht (`EstimateUsage`). +Geschätzte Werte tragen `estimated: true`. + +`EstimateUsage` im Detail (`models.go`): + +- `EstimateTokens(text)` = `len(text) / 4` (Byte-Länge, Integer-Division), mindestens 1 bei nicht-leerem Text. +- Pro Nachricht: `EstimateTokens(role) + EstimateTokens(content) + 4` (Rahmen). +- Completion: `EstimateTokens(Antworttext)`; `totalTokens` ist die Summe, `estimated` immer `true`. +- Anwendung: Nicht-Streaming übernimmt die Schätzung nur, wenn `usage.totalTokens == 0`. Im Stream hängt die `usage` am letzten Chunk (der Provider sendet sie wegen `stream_options: {include_usage: true}` mit); fehlt sie, schätzt der Server aus deinen Nachrichten plus dem akkumulierten Stream-Text. + +<Tabs> +<TabItem label="Normal"> + +Fehlerfall normal — Budget aufgebraucht: + +```bash title="POST /llm/chat — 429 bei leerem Budget" +curl -s -X POST http://localhost:8080/api/v1/llm/chat \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"provider":"<anbieter>","messages":[{"role":"user","content":"Hallo"}]}' +# → HTTP 429 {"error":"LLM token budget exhausted for provider \"<anbieter>\" (used 10000 / 10000)"} +``` +</TabItem> +<TabItem label="Streaming"> + +Fehlerfall Streaming — Abbruch mitten im Stream: + +```bash title="POST /llm/chat — Fehler im Stream" +curl -N -X POST http://localhost:8080/api/v1/llm/chat \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"provider":"<anbieter>","messages":[{"role":"user","content":"Hallo"}], + "stream":true}' +# → data: {"id":"…","model":"…","choices":[{"index":0,"delta":{"role":"assistant","content":"Hal"}}]} +# → data: {"error":"…"} # statt weiterer Chunks + [DONE] +``` +</TabItem> +</Tabs> + +Dazu die zweite Fehlerlage: Scheitert schon der Stream-Aufbau (Provider down, Modell falsch), kommt gar kein SSE — sondern direkt `502` (Text nur, wenn der Betreiber keine generische Fehlermeldung gesetzt hat: `response.error.message` in der Server-Config ersetzt den Body durch einen festen Text). Das `[DONE]` gibt es nur nach vollständigem Lesen (`io.EOF`). + +## Fehler + +| Antwort | Ursache | Lösung | +|---|---|---| +| `403` | Keine Anmeldung oder LLM-Scope fehlt | Token und [Rechte](/projekt/rechte-tokens/) prüfen | +| `400 provider is required` / `messages are required` | Pflichtfeld fehlt | Beide Felder senden | +| `400 provider … not found` | Anbietername falsch | `GET /llm/providers` lesen, Namen kopieren | +| `400 model … is not allowed, available models: …` | Modell nicht freigegeben | Modell aus der Allowlist nehmen oder leer lassen | +| `400 LLM provider "…" not found` | Anbietername falsch oder Typ nicht registriert | `GET /llm/providers` lesen, Namen kopieren | +| `400 no model specified and no default model configured` | Weder `model` noch `defaultModel` gesetzt | `model` mitsenden oder Betrieb um `defaultModel` bitten | +| `429` Budget | Kein Budget, aufgebraucht oder Zeitraum abgelaufen (`org `-Präfix = Org-Ebene) | Budget prüfen / beim Betrieb anfragen | +| `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. + +Verifiziert am 68b42785 2026-10-16 (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/mcp-nutzen.md b/src/content/docs/projekt/mcp-nutzen.md new file mode 100644 index 0000000..efa7b42 --- /dev/null +++ b/src/content/docs/projekt/mcp-nutzen.md @@ -0,0 +1,754 @@ +--- +title: 'MCP nutzen' +description: 'KI-Werkzeugzugriff auf Tibi: Transport, Anmeldung, alle Werkzeuge und die Agenten-Anleitung.' +--- + +import { Aside, Tabs, TabItem, Steps, Badge } from '@astrojs/starlight/components'; + +MCP gibt KI-Agenten Werkzeugzugriff auf Tibi — statt Klicks ruft der Agent `tools/list` und `tools/call` auf. +Transport: Streamable-HTTP mit JSON-RPC 2.0. +Route: fest `GET` + `POST /api/v1/mcp` (immer registriert; `mcp.route` wird ignoriert — siehe [Schnittstellen](/server/schnittstellen/)). + +## Anmeldung + +Nur PAT via `X-Auth-Token` (`tibi_pat_…`). +JWT, Admin-Token und anonyme Aufrufe scheitern — auch mit vollen Rechten. +Jedes Werkzeug prüft zusätzlich Scope plus Live-Rechte des Token-Besitzers (siehe [Rechte und Tokens](/projekt/rechte-tokens/), [Token-Köpfe](/reference/token-koepfe/)). + +<Tabs> +<TabItem label="Handshake"> + +```bash title="initialize — Handshake" +curl -s -X POST http://localhost:8080/api/v1/mcp \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' +# → {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05", +# "serverInfo":{"name":"tibi-server-mcp","version":"v1"}, +# "capabilities":{"tools":{}}}} +``` + +</TabItem> +<TabItem label="tools/list + tools/call"> + +```bash title="tools/list — alle Werkzeuge" +curl -s -X POST http://localhost:8080/api/v1/mcp \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' +``` + +```bash title="tools/call — Einträge lesen" +curl -s -X POST http://localhost:8080/api/v1/mcp \ + -H 'Content-Type: application/json' \ + -H 'X-Auth-Token: tibi_pat_DEIN_TOKEN' \ + -d '{"jsonrpc":"2.0","id":3,"method":"tools/call", + "params":{"name":"documents_list", + "arguments":{"namespace":"<ns>","collection":"content","limit":5}}}' +# → {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"…JSON…"}]}} +``` + +`GET /api/v1/mcp` ist nur ein Probeaufruf (Protokoll, Version, Werkzeugliste, kein JSON-RPC-Body). + +</TabItem> +</Tabs> + +## Alle Werkzeuge (36) + +Gehäuse: `internal/mcp/tools_crud.go` (10) + `tools_discovery.go` (12) + `tools_system.go` (14). +Jede Antwort ist ein JSON-RPC-Envelope mit der Request-`id`. + +| Werkzeug | Wofür | Scope | +|---|---|---| +| `documents_list` | Einträge listen (Filter, Sort, Limit wie [Lesen und suchen](/projekt/abfragen-lesen/)) | `namespace.<ns>.<col>.get` | +| `document_get` | Ein Eintrag per ID | `.get` | +| `documents_count` | Nur Anzahl | `.get` | +| `documents_facet` | Werte je Feld zählen | `.get` | +| `queue_status` | Suchindex-Warteschlange | Projekt-Leserecht | +| `document_create` | Eintrag anlegen | `.post` | +| `document_update` | Eintrag ändern | `.put` | +| `document_delete` | Eintrag löschen | `.delete` | +| `file_read` | <Badge text="REST-only" variant="caution" /> Datei lesen: `GET /_/:project/:collection/:id/:field/*path` | `.get` | +| `action_call` | Aktion aufrufen (`method: get/post`) | Aktions-Scope | +| `projects_list` / `project_get` | Projekte auflisten / ein Projekt | `project.read` | +| `collections_list` | Sammlungen eines Projekts | `project.read` | +| `collection_describe` | Schema + `meta` einer Sammlung | `project.read` | +| `actions_list` / `action_describe` | Aktionen auflisten / beschreiben | `project.read` | +| `jobs_list` | Jobs auflisten | Projekt-Leserecht | +| `openapi_get` | OpenAPI-Ausschnitt | `project.read` | +| `system_meta_get` | System-Metadaten | `project.read` | +| `agent_guide_get` | Agent-Anleitung (`meta.agent`) lesen | `project.read` | +| `assets_list` / `asset_read` | Projekt-Assets listen / <Badge text="REST-only" variant="caution" /> lesen per `GET /_/:project/_/assets/:name/*path` | `project.read` | +| `users_list` / `user_get` | Benutzer listen / lesen | `user.read` | +| `user_create` / `user_update` / `user_delete` | <Badge text="REST-only" variant="caution" /> (siehe unten) | `user.create` / `.update` / `.delete` | +| `orgs_list` / `org_get` | Orgs listen / lesen | `org.read` | +| `teams_list` / `team_get` | Teams listen / lesen | `team.read` | +| `audit_query` | Audit-Log abfragen | `audit.read` + Sammlungs-Leserecht | +| `project_reload` | <Badge text="REST-only" variant="caution" /> | `project.reload` | +| `regenerate_search` | <Badge text="REST-only" variant="caution" /> | `project.regenerate-search` | +| `backup_create` | <Badge text="REST-only" variant="caution" /> | `project.backup` | +| `snapshots_list` | <Badge text="REST-only" variant="caution" /> | `project.snapshot` | + +Methoden-Mapping (`method.go`) ist sicherheitsrelevant: Lese-Werkzeuge laufen als `GET`, `document_create` als `POST`, `document_update` als `PUT`, `document_delete` als `DELETE`. +So greifen deine [Hooks](/projekt/hooks-schreiben/) (Stufen je Methode, Kontexte in [Hook-Kontexte](/reference/hook-kontexte/)) genau wie bei REST. + +## Werkzeug-Referenz (alle 36) + +Pro Werkzeug: Signatur (Pflichtparameter mit `*`, Stand `tools_crud.go`, `tools_discovery.go`, `tools_system.go`), genau ein `tools/call`-Beispiel und ein Fehlerfall aus dem Code (`mcp_tools_impl.go`, `guards.go`, `query.go`, `method.go`). +Ohne PAT scheitert jedes Werkzeug mit 403 (`mcp requires a personal access token (X-Auth-Token: tibi_pat_...)`, `guards.go`); ein Tippfehler im Namen gibt `-32601 unknown tool` (`mcp_handler.go`). + +### documents_list + +Signatur: `namespace*`, `collection*`, optional `filter`, `sort`, `limit`, `offset`, `select`, `projection`, `lookup`, `aggregate`, `q`, `qName`, `count`, `extra`. Scope: `namespace.<ns>.<col>.read` (bei `lookup`/`aggregate` zusätzlich Lese-Recht auf das Ziel). Methode: `GET`. + +```json title="documents_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 10, + "method": "tools/call", + "params": { + "name": "documents_list", + "arguments": {"namespace": "<ns>", "collection": "content", "limit": 5} + } +} +``` + +Fehler: ohne `namespace`/`collection` → 400 (`namespace and collection are required`); lange Listen kappt `maxResultItems` (Standard 100). + +### document_get + +Signatur: `namespace*`, `collection*`, `id*`, optional `select`, `lookup`, `extra`. Scope: `namespace.<ns>.<col>.read`. Methode: `GET`. + +```json title="document_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 11, + "method": "tools/call", + "params": { + "name": "document_get", + "arguments": {"namespace": "<ns>", "collection": "content", "id": "<id>"} + } +} +``` + +Fehler: unbekannte `id` → 404 (`not found`); unlesbare Hex-ID → 400. + +### documents_count + +Signatur: `namespace*`, `collection*`, optional `filter`, `q`, `extra`. Scope: `namespace.<ns>.<col>.read`. Methode: `GET`. + +```json title="documents_count — tools/call" +{ + "jsonrpc": "2.0", + "id": 12, + "method": "tools/call", + "params": { + "name": "documents_count", + "arguments": {"namespace": "<ns>", "collection": "content"} + } +} +``` + +Fehler: ohne Leserecht am Ziel → 403 (`permission denied` bzw. Scope-Fehler). + +### documents_facet + +Signatur: `namespace*`, `collection*`, `fields*`, optional `filter`, `extra`. Scope: `namespace.<ns>.<col>.read`. Methode: `GET`. + +```json title="documents_facet — tools/call" +{ + "jsonrpc": "2.0", + "id": 13, + "method": "tools/call", + "params": { + "name": "documents_facet", + "arguments": {"namespace": "<ns>", "collection": "content", "fields": "status"} + } +} +``` + +Fehler: ohne `fields` → 400 (`missing required parameter: facet` auf Controller-Ebene). + +### queue_status + +Signatur: `namespace*`, `collection*`. Scope: `namespace.<ns>.<col>.read`. Methode: `GET`. + +```json title="queue_status — tools/call" +{ + "jsonrpc": "2.0", + "id": 14, + "method": "tools/call", + "params": { + "name": "queue_status", + "arguments": {"namespace": "<ns>", "collection": "content"} + } +} +``` + +Fehler: unbekannte Sammlung → 404 auf Controller-Ebene. + +### document_create + +Signatur: `namespace*`, `collection*`, `data*`, optional `items[]` (Bulk). Datei-Felder als `{src: "data:<mime>;base64,…", path: "name.jpg"}` hochladen (Typ wird serverseitig erschnüffelt). Scope: `namespace.<ns>.<col>.create`. Methode: `POST`. + +```json title="document_create — tools/call" +{ + "jsonrpc": "2.0", + "id": 15, + "method": "tools/call", + "params": { + "name": "document_create", + "arguments": {"namespace": "<ns>", "collection": "content", "data": {"name": "Neu"}} + } +} +``` + +Fehler: ohne Schreibrecht → 403; Pflichtfeld-Verletzung → 400 aus der Validierung. + +### document_update + +Signatur: `namespace*`, `collection*`, dazu `id` (einzeln) oder `filter` (Bulk), plus `data`. Gespeicherte Datei-`src` zurückgeben behält die Datei. Scope: `namespace.<ns>.<col>.update` (+ Bulk-Freigabe). Methode: `PUT`. + +```json title="document_update — tools/call" +{ + "jsonrpc": "2.0", + "id": 16, + "method": "tools/call", + "params": { + "name": "document_update", + "arguments": {"namespace": "<ns>", "collection": "content", "id": "<id>", "data": {"name": "Neu"}} + } +} +``` + +Fehler: unbekannte `id` → 404; Bulk ohne `filter` → 400 (`filter query parameter is required`). + +### document_delete + +Signatur: `namespace*`, `collection*`, dazu `id` (einzeln) oder `filter` (Bulk). Scope: `namespace.<ns>.<col>.delete` (+ Bulk-Freigabe). Methode: `DELETE`. + +```json title="document_delete — tools/call" +{ + "jsonrpc": "2.0", + "id": 17, + "method": "tools/call", + "params": { + "name": "document_delete", + "arguments": {"namespace": "<ns>", "collection": "content", "id": "<id>"} + } +} +``` + +Fehler: ohne Löschrecht → 403; Bulk ohne `filter` → 400 (`filter query parameter is required for bulk delete`). + +### file_read + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`, `collection*`, `id*`, `field*`, optional `path`. Scope: `namespace.<ns>.<col>.read`. + +```json title="file_read — tools/call" +{ + "jsonrpc": "2.0", + "id": 18, + "method": "tools/call", + "params": { + "name": "file_read", + "arguments": {"namespace": "<ns>", "collection": "content", "id": "<id>", "field": "image"} + } +} +``` + +Fehler: immer 400 (`use GET file endpoint (public like web)`) — nutze stattdessen `GET /_/:project/:collection/:id/:field/*path`. + +### action_call + +Signatur: `namespace*`, `action*`, optional `method` (`get` oder `post`, Standard `post`), `data`. Scope: `namespace.<ns>._actions.<name>.read` bzw. `.create`. Methode: `GET` oder `POST` je nach `method`. + +```json title="action_call — tools/call" +{ + "jsonrpc": "2.0", + "id": 19, + "method": "tools/call", + "params": { + "name": "action_call", + "arguments": {"namespace": "<ns>", "action": "versand", "method": "post", "data": {}} + } +} +``` + +Fehler: `method: "put"` → 400 (`action method must be get or post`, `method.go`). + +### projects_list + +Signatur: optional `limit`, `offset`. Scope: `project.read`. Methode: `GET`. + +```json title="projects_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 20, + "method": "tools/call", + "params": {"name": "projects_list", "arguments": {"limit": 10}} +} +``` + +Fehler: ohne `project.read`-Scope → 403; fremde Orgs filtert die Sichtbarkeit still heraus (leere Liste trotz Daten). + +### project_get + +Signatur: `id*`. Scope: `project.read`. Methode: `GET`. + +```json title="project_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 21, + "method": "tools/call", + "params": {"name": "project_get", "arguments": {"id": "<id>"}} +} +``` + +Fehler: ohne `id` → 400 (`id is required`); unsichtbar/ unbekannt → 404 (`not found`). + +### collections_list + +Signatur: `namespace*`. Scope: `project.read` plus Lese-Recht je Sammlung. Methode: `GET`. + +```json title="collections_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 22, + "method": "tools/call", + "params": {"name": "collections_list", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: ohne `namespace` → 400 (`namespace is required`); unbekanntes Projekt → 404 (`project not found`). + +### collection_describe + +Signatur: `namespace*`, `collection*`, optional `lang`. Gibt Schema, `agent`- und `query`-Meta (bereinigt, ohne Secrets) plus `yourPermissions` zurück. Scope: `project.read` plus Lese-Recht auf die Sammlung. Methode: `GET`. + +```json title="collection_describe — tools/call" +{ + "jsonrpc": "2.0", + "id": 23, + "method": "tools/call", + "params": { + "name": "collection_describe", + "arguments": {"namespace": "<ns>", "collection": "content"} + } +} +``` + +Fehler: unbekannte Sammlung → 404 (`collection not found`); ohne Leserecht → 403 (`permission denied`). + +### actions_list + +Signatur: `namespace*`. Scope: Lese-Recht auf den Namensraum oder je Aktion. Methode: `GET`. + +```json title="actions_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 24, + "method": "tools/call", + "params": {"name": "actions_list", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: ohne `namespace` → 400 (`namespace is required`); Aktionen ohne Recht fehlen still in der Liste. + +### action_describe + +Signatur: `namespace*`, `action*`. Scope: `namespace.<ns>._actions.<name>.read`. Methode: `GET`. + +```json title="action_describe — tools/call" +{ + "jsonrpc": "2.0", + "id": 25, + "method": "tools/call", + "params": { + "name": "action_describe", + "arguments": {"namespace": "<ns>", "action": "versand"} + } +} +``` + +Fehler: unbekannte Aktion → 404 (`action not found`); ohne Aktions-Scope → 403. + +### jobs_list + +Signatur: `namespace*`. Nur Configs, kein Trigger. Scope: `project.read`. Methode: `GET`. + +```json title="jobs_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 26, + "method": "tools/call", + "params": {"name": "jobs_list", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: ohne `project.read`-Scope → 403; unbekanntes Projekt → 404 (`project not found`). + +### openapi_get + +Signatur: `namespace*`, optional `lang`. Laut Tool-Beschreibung öffentlich wie `GET /_openapi/:project`. Methode: `GET`. + +```json title="openapi_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 27, + "method": "tools/call", + "params": {"name": "openapi_get", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: unbekanntes Projekt → 404 (`project not found`). + +### system_meta_get + +Signatur: optional `model` (`user`/`project`). Laut Tool-Beschreibung öffentlich wie `GET /_meta`. Methode: `GET`. + +```json title="system_meta_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 28, + "method": "tools/call", + "params": {"name": "system_meta_get", "arguments": {"model": "user"}} +} +``` + +Fehler: ohne PAT → 403 (`mcp requires a personal access token`) — sonst antwortet das Werkzeug immer mit 200. + +### agent_guide_get + +Signatur: `namespace*`, optional `collection`, `action`, `lang`. Liest kuratiertes `meta.agent` (Projekt → Sammlung/Aktion) plus `yourPermissions`. Scope: je Ebene das passende Lese-Recht. Methode: `GET`. + +```json title="agent_guide_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 29, + "method": "tools/call", + "params": { + "name": "agent_guide_get", + "arguments": {"namespace": "<ns>", "collection": "content"} + } +} +``` + +Fehler: ohne Sammlungs-Leserecht → 403 (`permission denied`); unbekanntes Projekt → 404 (`project not found`). + +### assets_list + +Signatur: `namespace*`. Scope: `project.read`. Methode: `GET`. + +```json title="assets_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 30, + "method": "tools/call", + "params": {"name": "assets_list", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: unbekanntes Projekt → 404 (`project not found`). + +### asset_read + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`, `name*`, `path*`. Methode: `GET`. + +```json title="asset_read — tools/call" +{ + "jsonrpc": "2.0", + "id": 31, + "method": "tools/call", + "params": { + "name": "asset_read", + "arguments": {"namespace": "<ns>", "name": "bilder", "path": "logo.svg"} + } +} +``` + +Fehler: immer 400 (`use GET /_/:project/_/assets/:name/*path (public like web)`) — nutze stattdessen den Asset-Endpunkt. + +### users_list + +Signatur: optional `filter`, `limit`, `offset` (alle als String typisiert, `tools_system.go`). Scope: `user.read`. Methode: `GET`. + +```json title="users_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 32, + "method": "tools/call", + "params": {"name": "users_list", "arguments": {"limit": "10"}} +} +``` + +Fehler: ohne `user.read`-Scope → 403; fremde Benutzer filtert die Eigentümer-Sicht heraus. + +### user_get + +Signatur: `id*`. Scope: `user.read`. Methode: `GET`. + +```json title="user_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 33, + "method": "tools/call", + "params": {"name": "user_get", "arguments": {"id": "<id>"}} +} +``` + +Fehler: ohne `id` → 400 (`id is required`); unsichtbar → 403 über den Scope-Filter. + +### user_create + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: optional `data`. Scope: `user.create`. + +```json title="user_create — tools/call" +{ + "jsonrpc": "2.0", + "id": 34, + "method": "tools/call", + "params": {"name": "user_create", "arguments": {"data": {"username": "neu"}}} +} +``` + +Fehler: immer 400 (`user write via MCP is REST-only in this phase, use REST /api/v1/user`) — nutze stattdessen `REST /api/v1/user`. + +### user_update + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: optional `id`, `data`. Scope: `user.update`. + +```json title="user_update — tools/call" +{ + "jsonrpc": "2.0", + "id": 35, + "method": "tools/call", + "params": { + "name": "user_update", + "arguments": {"id": "<id>", "data": {"username": "neu"}} + } +} +``` + +Fehler: immer 400 (`user write via MCP is REST-only in this phase, use REST /api/v1/user`) — nutze stattdessen `REST /api/v1/user`. + +### user_delete + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `id*`. Scope: `user.delete`. + +```json title="user_delete — tools/call" +{ + "jsonrpc": "2.0", + "id": 36, + "method": "tools/call", + "params": {"name": "user_delete", "arguments": {"id": "<id>"}} +} +``` + +Fehler: immer 400 (`user write via MCP is REST-only in this phase, use REST /api/v1/user`) — nutze stattdessen `REST /api/v1/user`. + +### orgs_list + +Signatur: optional `limit` (als String typisiert). Scope: `org.read`. Methode: `GET`. + +```json title="orgs_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 37, + "method": "tools/call", + "params": {"name": "orgs_list", "arguments": {}} +} +``` + +Fehler: ohne `org.read`-Scope → 403; fremde Orgs filtert die Mitgliedschaft heraus. + +### org_get + +Signatur: `id*`. Scope: `org.read`. Methode: `GET`. + +```json title="org_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 38, + "method": "tools/call", + "params": {"name": "org_get", "arguments": {"id": "<id>"}} +} +``` + +Fehler: ohne `id` → 400 (`id is required`); fremde Org → 403 über den Scope-Filter. + +### teams_list + +Signatur: optional `limit` (als String typisiert). Scope: `team.read`. Methode: `GET`. + +```json title="teams_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 39, + "method": "tools/call", + "params": {"name": "teams_list", "arguments": {}} +} +``` + +Fehler: ohne `team.read`-Scope → 403. + +### team_get + +Signatur: `id*`. Scope: `team.read`. Methode: `GET`. + +```json title="team_get — tools/call" +{ + "jsonrpc": "2.0", + "id": 40, + "method": "tools/call", + "params": {"name": "team_get", "arguments": {"id": "<id>"}} +} +``` + +Fehler: ohne `id` → 400 (`id is required`). + +### audit_query + +Signatur: optional `filter`, `limit` (als String typisiert). Scope: `audit.read` plus Lese-Recht je Sammlung; System-Ereignisse bleiben für Nicht-Admins verborgen. Methode: `GET`. + +```json title="audit_query — tools/call" +{ + "jsonrpc": "2.0", + "id": 41, + "method": "tools/call", + "params": {"name": "audit_query", "arguments": {"limit": "20"}} +} +``` + +Fehler: ohne `audit.read`-Scope → 403. + +### project_reload + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`. Scope: `project.reload`. + +```json title="project_reload — tools/call" +{ + "jsonrpc": "2.0", + "id": 42, + "method": "tools/call", + "params": {"name": "project_reload", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: bei `allowAdminActions: false` → 403 (`admin actions disabled`); sonst immer 400 (`admin tool "project_reload" is REST-only in this phase, use REST admin endpoints`). + +### regenerate_search + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`. Scope: `project.regenerate-search`. + +```json title="regenerate_search — tools/call" +{ + "jsonrpc": "2.0", + "id": 43, + "method": "tools/call", + "params": {"name": "regenerate_search", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: bei `allowAdminActions: false` → 403 (`admin actions disabled`); sonst immer 400 (`admin tool "regenerate_search" is REST-only in this phase, use REST admin endpoints`). + +### backup_create + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`. Scope: `project.backup`. + +```json title="backup_create — tools/call" +{ + "jsonrpc": "2.0", + "id": 44, + "method": "tools/call", + "params": {"name": "backup_create", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: bei `allowAdminActions: false` → 403 (`admin actions disabled`); sonst immer 400 (`admin tool "backup_create" is REST-only in this phase, use REST admin endpoints`). + +### snapshots_list + +<Badge text="REST-only" variant="caution" /> Führt per MCP nichts aus. Signatur: `namespace*`. Scope: `project.snapshot`. Methode: `GET`. + +```json title="snapshots_list — tools/call" +{ + "jsonrpc": "2.0", + "id": 45, + "method": "tools/call", + "params": {"name": "snapshots_list", "arguments": {"namespace": "<ns>"}} +} +``` + +Fehler: bei `allowAdminActions: false` → 403 (`admin actions disabled`); sonst immer 400 (`admin tool "snapshots_list" is REST-only in this phase, use REST admin endpoints`). + +## REST-only-Ausnahmen + +Neun Werkzeuge antworten nur mit einem Verweis auf REST — sie führen per MCP nichts aus: + +| Werkzeug | Stattdessen | +|---|---| +| `user_create`, `user_update`, `user_delete` | `REST /api/v1/user` | +| `project_reload` | Admin-Reload-Endpunkt | +| `regenerate_search` | Admin-Suchindex-Endpunkt | +| `backup_create` | Admin-Backup-Endpunkt | +| `snapshots_list` | Admin-Snapshots-Endpunkt | +| `file_read` | `GET /_/:project/:collection/:id/:field/*path` | +| `asset_read` | `GET /_/:project/_/assets/:name/*path` | + +Erkennbar an `"REST-only in this phase"` in der Beschreibung von `tools/list`. +`allowAdminActions` steuert nur, ob Admin-Werkzeuge überhaupt sichtbar sind — die Sperre bleibt. + +## Eigene Agent-Anleitung pflegen (`meta.agent`) + +`agent_guide_get` liest, was du in `api/config.yml` und pro Sammlung pflegst. +Pflege dort Zweck, Pflichtfelder, Lookups, Workflows und Fallstricke — der Agent folgt dem Wortlaut. + +```yaml title="api/config.yml — meta.agent (Starter)" +meta: + agent: + description: "Tibi Svelte starter: Svelte 5 SPA with pagebuilder blocks, goja SSR, per-language navigation." + frontend: + lookup: "content: blocks.heroImage.image:medialib, blocks.image:medialib; navigation: elements.page:content" + designGuide: "Future free code/HTML blocks: add block type in content.blocks …" + workflows: ["Create page (…) -> fill blocks -> link navigation -> … -> verify /de plus anonymous SSR …"] + hints: ["Public reads need active:true plus publication window (filter_public) …"] +``` + +```yaml title="api/collections/content.yml — meta.agent pro Sammlung" +meta: + agent: + purpose: "CMS pages rendered by App.svelte + BlockRenderer (hero, features, richtext, accordion, contact-form)." + instructions: "Required: name, path, lang. Always set translationKey …" + fieldHints: + path: "lowercase, e.g. /ueber-uns; stored without language prefix" + workflows: ["filter before create (path+lang) to stay idempotent; 409 means exists", "…"] + hints: ["richtext image only renders when _lookup.image.file.src exists", "…"] +``` + +<Steps> + +1. `purpose` + `instructions` schreiben: Was rendert die Sammlung, welche Felder sind Pflicht? +2. `lookup`-Zeile pflegen: Welche Fremdschlüssel muss der Agent immer mitladen? +3. `workflows` pflegen: Erstellen → verknüpfen → anonym verifizieren (PAT-Erfolg allein zählt nicht). +4. `hints` pflegen: `active:true`-Regel, Pfad-Muster, Eindeutigkeit (`path+lang`, `translationKey+lang`). +5. Per `agent_guide_get` gegenlesen. + +</Steps> + +Zusatz: Lese-Werkzeuge akzeptieren `extra`-Parameter für eigene Query-Schlüssel aus `meta.query` (Hooks lesen sie per `ctx.request().query(name)`). +REST ignoriert das Schema (offen per Design) und nutzt es als Doku; MCP validiert (`query.go`, Kern- und Auth-Schlüssel sind reserviert). + +## Fehler + +| Antwort | Ursache | Lösung | +|---|---|---| +| `404 "mcp disabled"` | `mcp.enabled: false` (Route bleibt, Handler antwortet 404) | In `config.yml` aktivieren | +| `403` + PAT-Hinweis | JWT, Admin-Token oder anonym statt PAT | `X-Auth-Token: tibi_pat_…` senden | +| `-32601 method not found` | Unbekannte Methode | `initialize`, `tools/list`, `tools/call` nutzen | +| `-32601 unknown tool` | Tippfehler im Werkzeugnamen | Namen aus `tools/list` kopieren | +| `-32003` | Scope oder Live-Recht fehlt | PAT-Scopes und [Rechte](/projekt/rechte-tokens/) prüfen | +| `-32602 invalid params` | Pflicht-Argument fehlt | `collection_describe`-Schema bzw. [Fehlerbilder](/reference/fehlercodes/) lesen | +| Leere Listen trotz Daten | `maxResultItems` (Standard 100) oder `filter_public`-Hook | Limit erhöhen bzw. `active:true` + Zeitraum prüfen | + +Verifiziert am 68b42785 2026-10-16 (tibi-server: tools_crud, tools_discovery, tools_system, method, query, guards, registry, server, mcp_handler, mcp_tools_impl, setup), am e3f92eb 2026-10-14 (tibi-svelte-starter: config.yml und content.yml meta.agent). diff --git a/src/content/docs/projekt/navigation-i18n.md b/src/content/docs/projekt/navigation-i18n.md new file mode 100644 index 0000000..00a5d1f --- /dev/null +++ b/src/content/docs/projekt/navigation-i18n.md @@ -0,0 +1,119 @@ +--- +title: 'Navigation und Sprachen' +description: 'Navigations-Collection, Sprachfelder, translationKey, Pfad-Regeln.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Navigation und Sprachen hängen zusammen: Die `navigation`-Sammlung hält je Sprache einen Baum, `content` hält je Sprache einen Eintrag. +Suche-Begriffe: Navigation anlegen, Sprache umschalten, translationKey. + +## Navigations-Dokumente + +`api/collections/navigation.yml` kennt genau vier Singleton-Bäume: `type` (`header`, `footer`) mal `language` (`de`, `en`) — abgesichert per Unique-Index `type_language`. + +```yaml title="navigation.yml — Felder (gekürzt)" +# navigation.yml — Felder (gekürzt) +fields: + - name: language # de | en, Pflicht + - name: type # header | footer, Pflicht + - name: elements # object[]: {name, page?, external?, externalUrl?, hash?, elements?} +``` + +| Element-Art | Felder | Beispiel | +|---|---|---| +| Intern | `name` + `page` (= `content`-ID) | `{name: "Start", page: "<content.id>"}` | +| Extern | `name` + `external: true` + `externalUrl` | `{name: "Blog", external: true, externalUrl: "https://…"}` | +| Anker | zusätzlich `hash` ohne `#`, Muster `^[a-zA-Z0-9_-]+$` | `{name: "Kontakt", page: "<id>", hash: "kontakt"}` | +| Unterpunkt | geschachtelt in `elements.elements` | Header max. 2 Ebenen, Footer max. 1 | + +<Steps> + +1. Lege je Sprache einen Header und einen Footer an, je mit `active:true` (Pflicht trotz fehlendem Schema-Feld — siehe Kasten unten). +2. Löse Seiten mit Lookup auf: + + ```text title="Seiten per Lookup auflösen" + GET …/navigation?lookup=elements.page:content + ``` + +3. Baue den Link aus dem Lookup: `href` = lokalisierter `_lookup.page.path` plus `hash`. Den `/de`-Präfix nie in die DB schreiben. + +</Steps> + +<Aside type="caution" title="active:true auch hier"> +`filter_public.js` filtert anonym `active:true` — `navigation.yml` deklariert kein solches Feld. +Ohne gespeichertes `active:true` liefert die öffentliche Abfrage `count 0` (Vorfall 2026-10-05), mit Token sieht alles gut aus. +Lege `active:true` auf jedem Navigations-Dokument ab. +</Aside> + +## Sprachmodell: lang + translationKey + +`content.yml` nutzt Entry-i18n: eine Sprache je Eintrag, verbunden über den Schlüssel. + +```yaml title="content.yml — i18n-Block (gekürzt)" +# content.yml — i18n-Block (gekürzt) +meta: + i18n: + entry: + languageField: lang + groupField: translationKey +``` + +| Regel | Konkret | +|---|---| +| `lang` | Sprachkürzel, z. B. `de`, `en` | +| `translationKey` | **Pflicht**, z. B. `home`, `ueber-uns` — pro Sprache eindeutig (Unique-Index `translationKey` + `lang`) | +| Zweiter Datensatz ohne Schlüssel | Kollidiert auf `null` — kein „geht schon gut" | +| `path` | Ohne Sprachpräfix gespeichert (`/ueber-uns`), URL mit Präfix (`/de/ueber-uns`) | +| `alternativePaths[].path` | Alte Pfade, gleiches Muster wie `path` | + +Die Feld-i18n (Tabs je Feld, Test-Plan `34-i18n-fields`) und Entry-i18n (eine Sprache je Eintrag, Test-Plan `35-entry-i18n`) pflegst du im tibi-admin; das Datenmodell aus Projekt-Sicht ist immer `lang` + `translationKey`. + +## Pfad-Regeln + +```text title="Pfad-Muster für path und alternativePaths" +^/[a-z0-9-/]*$ → gilt für path und alternativePaths[].path +``` + +- Nur Kleinbuchstaben, Ziffern, `-` und `/`; keine Großbuchstaben, keine Umlaute (`/ueber-uns` statt `/Über-uns`). +- Unique-Index `path` + `lang`: gleicher Pfad in `de` und `en` ist okay, zweimal in `de` nicht. +- SSR streift den Präfix vor der Suche ab und liefert die kanonische URL zurück (`hooks/config.js` → `ssrValidatePath`). + +## active:true auch hier (Checkliste) + +| Sammlung | Ohne `active:true` öffentlich … | +|---|---| +| `content` | … filtern `filter_public` + SSR-Prüfung den Eintrag weg | +| `medialib` | … bleibt `_lookup` leer, Bilder verschwinden (siehe [Dateien und Bilder](/projekt/dateien-bilder/)) | +| `navigation` | … ist Header/Footer leer | + +## Prüfung: anonyme SSR-Nav-Zahl + +<Tabs> +<TabItem label="Deutsch + Englisch testen"> + +```text title="Navigation je Sprache prüfen (anonym)" +GET …/navigation?filter={"language":"de"} +GET …/navigation?filter={"language":"en"} +# anonym (ohne Token) müssen beide je einen Header und einen Footer liefern +``` +</TabItem> +<TabItem label="SSR-Cache prüfen"> + +```text title="SSR-Cache prüfen" +GET …/ssr?url=/de/ +# im HTML: window.__SSR_CACHE__ enthält das Ergebnis je Request (cacheKey mit data + count) — Navigation darin je Sprache mit count > 0 prüfen; die Abhängigkeiten selbst stehen separat im ssr-Dokument (Feld dependencies) +``` +</TabItem> +</Tabs> + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Öffentliche Nav leer, mit Token voll | `active:true` fehlt | Auf allen vier Bäumen setzen | +| `409` beim zweiten Spracheintrag | `translationKey` fehlt oder doppelt | Eindeutigen Schlüssel je Sprache vergeben | +| `400` beim Speichern | Pfad mit Großbuchstaben/Umlaut | Kleinschreiben, Muster einhalten | +| Falsche Sprache im SSR | `lang`-Feld passt nicht zum Präfix | `lang` und URL-Präfix angleichen | + +Weiter: [Lesen und suchen](/projekt/abfragen-lesen/), [Dateien und Bilder](/projekt/dateien-bilder/), [Rechte und Tokens](/projekt/rechte-tokens/). + +Verifiziert am e3f92ebf 2026-10-14 (tibi-svelte-starter), am 2b091d89 2026-10-13 (tibi-admin-nova, Test-Pläne 34-i18n-fields, 35-entry-i18n) diff --git a/src/content/docs/projekt/pagebuilder-dev.md b/src/content/docs/projekt/pagebuilder-dev.md new file mode 100644 index 0000000..7a5fee1 --- /dev/null +++ b/src/content/docs/projekt/pagebuilder-dev.md @@ -0,0 +1,248 @@ +--- +title: 'Pagebuilder-Anbindung (Dev)' +description: 'Block-Registry, CSS-Umschreibung, Admin-Vorschau und Screenshot-Pipeline aus Entwickler-Sicht.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Die Vorschau im **tibi-admin** ist **nicht** deine Website. +Sie rendert vereinfachte Vorschau-Blöcke in einem Shadow-DOM. +Die echte Website baut der `BlockRenderer` im Starter per SSR (siehe [Website mit SSR](/projekt/ssr-website/)). + +```text title="Vorschau vs. Website: zwei Wege aus blocks[]" +Eintrag (blocks[]) → Registry (Vorschau) → Shadow-DOM im Editor +Eintrag (blocks[]) → BlockRenderer.svelte → echtes HTML im Projekt +``` + +## Registry-Vertrag + +Die Registry ist eine JS-Datei mit einem Block-Namen pro Schlüssel. +Jeder Block liefert `render`, dazu `update` und `destroy` im Handle sowie ein `css`-Array. +Pfad steht in `meta.pagebuilder.blockRegistry.file` (Feld oder Collection). + +```js title="Referenz-Registry (corporate-blocks/registry.js)" +function defineBlock(renderContent) { + return { + render(container, row, context) { + const el = document.createElement("div") + renderContent(el, row, context) + container.appendChild(el) + return { + update(nextRow, nextContext) { + renderContent(el, nextRow, nextContext) + }, + destroy() { + el.remove() + }, + } + }, + css: ["/assets/mock/corporate-blocks/blocks.css"], + } +} + +export default registry +export { registry as blockRegistry } +``` + +| Teil | Vertrag (`BlockMount.ts`, `load-registry.ts`) | +|---|---| +| Export | `default` oder `blockRegistry` als `BlockRegistry`-Map | +| `render(container, row, context)` | Baut das DOM, gibt `{ update, destroy }` zurück | +| `update(row, context)` | Neue Daten bei gleichem Typ — kein DOM-Neuaufbau | +| `destroy()` | Räumt auf (Listener, Element entfernen) | +| `css` | Array mit Stylesheet-URLs, wird vor dem Mount vorgeladen | +| Fehlt der Typ | `render()` gibt `false` zurück → Blueprint-Karte statt Vorschau | + +Laden ist lazy und gecacht (`loadBlockRegistry`). +Schlägt der Import fehl, zeigt der Editor den Blueprint-Modus — kein Fehler, nur keine Vorschau. + +## CSS-Umschreibung + +Dein Block-CSS läuft durch `transformPagebuilderCssLenientAsync` (`pagebuilder-css-transform.ts`). +Grund: Das CSS landet isoliert im Shadow-DOM, nicht im Seiten-`<head>`. + +| Umschreibung | Warum | +|---|---| +| `@media` mit Breiten-Bedingung → `@container` | Breakpoints reagieren auf die **Vorschau-Breite**, nicht aufs Editor-Fenster | +| `html` / `body` / `:root` → `:host` | Diese Selektoren treffen im Shadow Root nichts | +| Relative `url()` → absolut (`baseUrl`) | Inline-Styles lösen relativ sonst gegen das Admin-Dokument auf | +| `@import` wird eingebettet (`fetchCss`) | Konstruierte Sheets werten `@import` im Browser nicht aus | + +Regeln dazu: Nur komplette Queries werden konvertiert (Teil-Umschreibung verboten). +`device-width` und `not` bleiben `@media`. +Unparsebares CSS lädt **unverändert** plus `console.warn` mit Zeile und Spalte. + +Abschalten je Block, Feld oder Collection: + +```yaml title="content.yml — Opt-out (load-registry.ts: Block → Feld → Collection → true)" +meta: + pagebuilder: + cssTransform: false +``` + +<Aside type="caution"> +Bei `cssTransform: false` bleibt die Container-Basis (`container-type: inline-size`) aktiv. +Sonst greift kein `@container` im aufbereiteten CSS. +</Aside> + +## Lookup in der Vorschau + +Die Vorschau hydriert Fremdschlüssel selbst (`hydratePagebuilderRow` in `lookup-hydration.ts`). +Das Muster kennst du aus [Lesen und suchen](/projekt/abfragen-lesen/): IDs plus `_lookup`-Objekt. + +<Tabs> +<TabItem label="Prinzip"> + +<Steps> + +1. IDs aus `foreignKey`/`foreignMedia`-Feldern sammeln (z. B. `blocks.heroImage.image:medialib`). +2. Einträge per `getEntriesByIds` laden (gecacht pro `namespace:collection:Feld:id`). +3. Ergebnis unter `row._lookup.<feld>` einbetten — der Registry-Block liest daraus. +4. Datei-URLs per `normalizeLookupUrl` auflösen (relativ → Projekt-Basis). + +</Steps> + +</TabItem> +<TabItem label="Lesen im Block"> + +```js title="registry.js — Lookup lesen (getLookup / getMediaSource)" +function getLookup(row, key) { + return row?._lookup?.[key] || null +} + +function getMediaSource(row, key = "mediaRef") { + const lookup = getLookup(row, key) + return lookup?.file?.src || lookup?.url || null +} +``` + +Ohne Lookup steht im Feld nur die ID. +Ohne Leserecht oder ohne `active:true` am Ziel bleibt `_lookup` leer — gleiche Regel wie in der REST-Abfrage. + +</TabItem> +</Tabs> + +Bildgrenze: `MedialibImage` ist die einzige Bild-Grenze im Starter (`file.src` oder Data-URI). +Details: [Dateien und Bilder](/projekt/dateien-bilder/), [Medien](/admin/medien/). + +## Screenshot- und Thumbnail-Pipeline + +Der Listen-`image`-Eintrag (`meta.preview.image: _pagebuilderThumbnail`) kommt aus gerenderten Screenshots. +Kette: + +<Steps> + +1. Regel lesen: `meta.pagebuilder.screenshot` in `content.yml` (`field: blocks`, `fileField: _pagebuilderThumbnail`). +2. Registry laden und Block im `PagebuilderScreenshotHost` rendern (versteckt, pro Regel). +3. Schriften und Bilder abwarten (Timeout je 4 s, Render-Timeout 12 s). +4. Per `modern-screenshot` (`domToCanvas`) aufnehmen. +5. Pfad bauen: `buildVersionedPagebuilderScreenshotPath` → `<feld>.v-<hash>.<ext>` (`webp`/`jpg`). +6. Ins `file`-Feld schreiben (`applyFileField`). + +</Steps> + +```yaml title="content.yml — Screenshot-Regel (Starter)" +meta: + pagebuilder: + screenshot: + - field: blocks + fileField: _pagebuilderThumbnail +``` + +Seed für Mock-Daten: `scripts/seed-mock-pagebuilder-screenshots.js` (Playwright, Thumbnails für die Mock-Registry). + +## Eigener Block + +<Steps> + +1. Typ in `api/collections/content.yml` anlegen: `choices`-Eintrag unter `blocks.type` plus Felder mit `dependsOn`-Eval auf `$parent.type`. +2. Svelte-Komponente in `frontend/src/blocks/` anlegen (z. B. `QuoteBlock.svelte` mit `$props()`, SSR-sicher mit Window-Guards). +3. `case` in `BlockRenderer.svelte` ergänzen (`block.type === "quote"` → `<QuoteBlock {block} />`). +4. Vorschau-Block in der Registry-Datei ergänzen (gleicher Schlüssel, `defineBlock`-Vertrag, eigenes CSS). +5. Seite speichern — Vorschau und Screenshot laufen automatisch über die neue Registry. + +</Steps> + +```yaml title="content.yml — Feld nur für den eigenen Typ zeigen" +- name: quote + type: string + meta: + dependsOn: + eval: $parent.type == 'quote' +``` + +```svelte title="BlockRenderer.svelte — Case ergänzen" +{:else if block.type === "quote"} + <QuoteBlock {block} /> +``` + +Design-Regeln aus dem Starter (`api/config.yml`, `meta.agent.designGuide`): Svelte-5-Runes (`$props`, nie `block` destrukturieren), Tailwind v4 kanonisch, i18n per `$_`, Bilder nur über `MedialibImage`. + +## Fehler + +### Editor-Overlay (`PagebuilderOverlay.svelte`) + +Der Klick auf einen Block öffnet einen Fullscreen-Split-Editor auf dunklem Hintergrund (`backdrop-blur-md`, eigenes Layer per `pushLayer`, `focusTrap`, `role="dialog"` mit `aria-label` aus `admin.pagebuilder.editorAria`). + +| Bereich | Inhalt | +|---|---| +| Links | Formular-Karte (`FieldRenderer` mit `subFields` des Blocktyps) | +| Rechts | Live-Vorschau (`RowPreview`) im skalierten Rahmen, passt sich automatisch an Breite und Höhe an | +| Toolbar links | Block-Label mit Farbpunkt plus Blocknummer (`#1`, `#2`, …) | +| Toolbar Mitte | Modus-Umschalter: **Nur Formular** (`viewForm`), **Formular und Vorschau** (`viewBoth`), **Nur Vorschau** (`viewPreview`) | +| Toolbar rechts | **OK** mit `ESC`-Badge, Titel **Schließen (ESC)** (`closeTitle`) | + +Verhalten: + +- **Speichern** gibt es im Overlay nicht — jede Eingabe schreibt per `onchange` sofort in die Zeile. **OK** und `ESC` schließen nur. `ESC` löst vorher `blur` aus; die eigentliche Prüfung läuft beim Verlassen der Drilldown-Ebene und vor dem Speichern (`entry:before-save`) über `validateAllFields`. +- **Validierung:** Beim Verlassen einer Drilldown-Ebene und vor dem Speichern (`entry:before-save`) prüft `validateAllFields` den aktuellen Pfad-Scope. +- **Breadcrumbs:** `DrawerBreadcrumb` (Layer-Stapel) oben, `DrillDownBreadcrumb` im Formular bei verschachtelten Objekten. `ESC` geht zuerst eine Drilldown-Ebene zurück und schließt erst am Root. +- **Schmal (< 768 px):** `both` entfällt, der Editor fällt auf **Nur Formular** zurück. + +### Viewport-Steuerung (`PagebuilderViewportControl.svelte`) + +Sit-observer unter der Vorschau (Editor) bzw. in der Übersichts-Toolbar. Sie simuliert die Seitenbreite, damit `@container`-Queries wie auf der echten Seite greifen. + +| Preset | Breite | +|---|---| +| **Desktop** (`viewportDesktop`) | 1280 px | +| **Tablet** (`viewportTablet`) | 768 px | +| **Mobil** (`viewportPhone`) | 375 px | +| Freier Slider | 320–1920 px, Anzeige in `px`, Skalierung in `%` bei Verkleinerung | + +Startwert ist `defaultViewport` (Feld-`meta.pagebuilder.defaultViewport` → Collection → `1280`); Preset-Namen oder Zahlen sind erlaubt. + +### Übersichts-Overlay und `drillDown` (`PagebuilderOverviewOverlay.svelte`, `PagebuilderWidget.svelte`) + +| Modus | Wann | Darstellung | +|---|---|---| +| `overlay` (Standard) | `meta.drillDown` gesetzt oder fehlt | Kompakt-Thumbnail (`PagebuilderThumbnail`) im Formular; Klick öffnet das Fullscreen-Übersichts-Overlay mit Blockliste, **Block hinzufügen**-Knopf und Viewport-Steuerung | +| `inline` | `meta.drillDown: false` am Feld | Blockliste rendert direkt im Formular, kein Thumbnail, kein Overlay | + +Der Block-Editor (`PagebuilderOverlay`) öffnet sich in beiden Modi identisch obendrauf. + +Block-Management in der Übersicht: + +| Aktion | Wie | +|---|---| +| Hinzufügen | **Block hinzufügen** → Typ im Picker wählen — der neue Block öffnet sofort im Editor | +| Öffnen | Klick auf die Block-Vorschau | +| Sortieren | Drag-Handle (**Ziehen zum Sortieren**) oder Menü (**Aktionen**): **Nach oben**, **Nach unten** | +| Duplizieren / Löschen | Gleiches Menü: **Duplizieren**, **Löschen** | +| Schließen | **OK** oder `ESC` (oberstes Layer schließt zuerst) | + +Leere Liste zeigt **Keine Inhaltsblöcke vorhanden**; die Toolbar zählt **Keine Blöcke** bzw. **N Blöcke** (`noBlocks`, `blocks`). + +### BlueprintCard-Fallback (`BlueprintCard.svelte`) + +Liefert `render()` `false` (Typ fehlt in der Registry) oder schlägt der Registry-Import fehl, zeigt `RowPreview` statt der Vorschau eine Schema-Karte: Block-Label als Badge, bis zu vier befüllte Felder als kompakte Werte (Text gekürzt, Richtext ohne HTML, Datei als Pfad, Farbe als Swatch), Rest als **+N weitere** (`blueprintMoreFields`), Kinder-Zähler (`blueprintChildren`), ohne Werte **Keine Daten** (`blueprintNoData`). Kein Fehlerzustand — nur keine Grafik. + +| Symptom | Ursache | Lösung | +|---|---|---| +| Blueprint-Karte statt Vorschau | Registry-Pfad falsch oder Typ fehlt in der Map | `blockRegistry.file` prüfen, Schlüssel = `type`-Wert | +| CSS „blutet" in den Editor | `cssTransform: false` oder Parse-Fehler (Warnung in der Konsole) | Warnung mit Zeile/Spalte lesen, CSS fixen | +| Bild leer in der Vorschau | Lookup-ID ohne Ziel oder Ziel ohne `active:true` | Medialib-Eintrag prüfen, anonyme Abfrage gegenlesen | +| Altes Thumbnail | Screenshot-Regel fehlt oder `fileField` falsch | `meta.pagebuilder.screenshot` in `content.yml` prüfen | +| Felder erscheinen nicht | `dependsOn`-Eval auf `$parent.type` fehlt | Eval wie oben setzen, Typ-Schreibweise exakt | + +Verifiziert am 2b091d89 2026-10-16 (tibi-admin-nova: PagebuilderOverlay, PagebuilderViewportControl, PagebuilderOverviewOverlay, BlueprintCard, PagebuilderWidget, de.json admin.pagebuilder.*), am e3f92eb 2026-10-14 (tibi-svelte-starter: content.yml, BlockRenderer, config.yml designGuide). diff --git a/src/content/docs/projekt/rechte-tokens.md b/src/content/docs/projekt/rechte-tokens.md new file mode 100644 index 0000000..843e50c --- /dev/null +++ b/src/content/docs/projekt/rechte-tokens.md @@ -0,0 +1,154 @@ +--- +title: 'Rechte und Tokens' +description: 'Permissions, Token-Köpfe, active:true-Falle, Orgs und Teams im Überblick.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Wer lesen und schreiben darf, steht in jeder Sammlung unter `permissions`. +Welchen Kopf du mitschickst, entscheidet, welche Rolle du bist. +Beispiele stammen aus `content.yml`, `comment.yml`, `api/hooks/config.js` und `filter_public.js`. + +## Permission-Blöcke + +```yaml title="content.yml — öffentlich lesen, Rest für Nutzer und Token" +# aus content.yml — öffentlich lesen, Rest für angemeldete Nutzer und Token +permissions: + public: + methods: + get: true + user: + methods: + get: true + post: true + put: true + delete: true + "token:${ADMIN_TOKEN}": + methods: + get: true + post: true + put: true + delete: true +``` + +| Block | Wer ist das | Beispiel | +|---|---|---| +| `public` | Anonyme Anfragen ohne Kopf | `content`, `navigation`: `get: true` | +| `user` | Angemeldet per JWT (`X-Auth-Token`) | `content`, `comment`: volles CRUD | +| `"token:${ADMIN_TOKEN}"` | Skript mit statischem Token (`Token`-Kopf) | alle Starter-Sammlungen: volles CRUD | + +- `methods` kennt `get`, `post`, `put`, `delete`. +- Fehlt ein Block, darf die Rolle nichts. +- `tag.yml` hat zusätzlich `post`/`put`/`delete`-Hooks (`clear_cache.js`), aber keinen Lese-Hook. + +## Token-Köpfe + +Vier Köpfe, vier Zwecke. Verwechsle sie nicht. + +| Kopf | Wert | Wofür | +|---|---|---| +| `Token` | `ADMIN_TOKEN` aus `api/config.yml.env` | Sammlungs-CRUD, wenn der Permission-Schlüssel `token:${ADMIN_TOKEN}` heißt | +| `X-Auth-Token` | JWT nach Login | Nutzer-Aktionen (`user:`-Rechte) | +| `X-Admin-Token` | Server-Admin-Token | System-Ebene: Projekte, Reload, Server-Ops | +| `Authorization: Bearer …` | `ADMIN_TOKEN` | Reverse-Proxy-Reload auf `LIVE_URL`/`STAGING_URL` (projektlokal, kein Server-API-Kopf) | + +<Tabs> +<TabItem label="Lesen (öffentlich)"> + +```text title="Lesen ohne Kopf (public.get)" +GET /api/v1/_/<namespace>/content?filter={"lang":"de"} +# kein Kopf nötig — public.get ist true +``` + +</TabItem> +<TabItem label="Schreiben (Token)"> + +```text title="Schreiben mit Token (comment)" +POST /api/v1/_/<namespace>/comment +Token: <ADMIN_TOKEN> +{"contentId": "<id>", "author": "Demo", "message": "Hallo", "active": true} +``` + +</TabItem> +<TabItem label="Schreiben (Nutzer)"> + +```text title="Schreiben als Nutzer (JWT)" +PUT /api/v1/_/<namespace>/content/<id> +X-Auth-Token: <jwt> +{"name": "Startseite"} +``` + +</TabItem> +</Tabs> + +<Aside type="caution"> +`ADMIN_TOKEN` kann **keine** Projekte anlegen. +Er gilt nur für Sammlungen mit passendem `token:`-Eintrag. +Projekte und Reload brauchen `X-Admin-Token` auf System-Ebene. +</Aside> + +## active:true-Falle + +Anonyme Leser bekommen automatisch einen Zusatzfilter. +`filter_public.js` hängt ihn an jede Abfrage ohne Login: + +```js title="api/hooks/filter_public.js — nur ohne Login aktiv" +// api/hooks/filter_public.js — nur ohne Login aktiv +hookResponse.filter = publishedFilter; // bzw. $and mit deinem filter +``` + +```js title="api/hooks/config.js — der Filter im Kern" +// api/hooks/config.js — der Filter im Kern +const publishedFilter = { + active: true, + $or: [ + { publication: { $exists: false } }, + { publication: null }, + // … plus Fenster publication.from <= jetzt <= publication.to + ], +} +``` + +Das heißt: **öffentlich sichtbar ist nur `active: true` innerhalb des Veröffentlichungsfensters.** + +| Sammlung | Falle | Folge ohne `active:true` | +|---|---|---| +| `content` | Feld `active` existiert, Hook filtert | Seite öffentlich unsichtbar | +| `navigation` | Feld `active` existiert **nicht** im Schema, Hook filtert trotzdem | Header/Footer öffentlich leer (`count 0`), SSR-Cache ohne Navigation | +| `medialib` | Feld `active` existiert **nicht** im Schema, Hook filtert trotzdem | Lookups öffentlich unaufgelöst (nur IDs, kein `_lookup`), Hero zeigt Verlauf, Richtext-Bilder fehlen | +| `tag` | Kein Lese-Hook | Keine Falle — `active` unnötig | +| `comment` | Feld `active` existiert, Hook filtert | Nur freigeschaltete Kommentare sind öffentlich | + +Regel: Lege auf **jedem** `content`-, `navigation`-, `medialib`- und `comment`-Dokument `active: true` ab. +Mit Token oder JWT siehst du alles — prüfe Anonymes daher immer ohne Kopf (z. B. Inkognito-Fenster). + +## Orgs und Teams im Überblick + +Größere Installationen gruppieren Nutzer und Projekte: + +- **Org**: Mandant oben (`matrixorga`, `matrixorgb` im Test). +- **Team**: Gruppe in einer Org, mit oder ohne Rechte (z. B. `teama1` mit `editor`). +- **Projekt**: hängt an einer Org (`orgId`) und kennt seine Teams. +- **Org-Admin**: Rolle `admin` in einer Org — darf org-eigene Projekte, aber nichts in fremden Orgs. + +```text title="Org-, Team- und Projekt-Struktur (Beispiel)" +Org A ─┬─ Team A1 (editor) ─┬─ Projekt A + └─ Team A2 (ohne) ─┘ +Org B ─── Team B1 (editor) ─── Projekt B +``` + +Mitglieder von Team A1 kommen in Projekt A, aber nicht in Projekt B. +Ohne Org-Zugehörigkeit geht gar nichts. +Details regelt der Server-Code (`access_control_matrix_test.go`) — für normale Projekte reicht: ein Projekt, ein Team, `ADMIN_TOKEN` für Skripte. + +## Fehlerbilder + +| Antwort | Ursache | Lösung | +|---|---|---| +| `permission denied` | Rolle darf die Methode nicht oder Projektion ist fremd | `permissions`-Block und gesendeten Kopf prüfen | +| `project not found` | Namespace falsch oder Projekt nicht registriert | [Neues Projekt](/einstieg/neues-projekt/) Schritt 5 | +| `lookup permission denied` | Leserecht auf der Ziel-Sammlung fehlt | Ziel-Sammlung braucht `public.get` oder gleichen Kopf | +| Öffentlich leer, mit Token voll | `active:true` fehlt oder `publication`-Fenster liegt in der Zukunft/Vergangenheit | `active:true` setzen, `publication.from`/`publication.to` prüfen | +| Falscher Kopf, richtige Rolle | z. B. `Token:` statt `X-Auth-Token:` bei Nutzer-Rechten | Tabelle oben: Kopf an Rolle anpassen | + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter, Hooks und Permissions), am 68b42785 2026-10-15 (tibi-server, access_control_matrix_test.go, Lookup-/Projektions-Prüfung). diff --git a/src/content/docs/projekt/sammlungen-anlegen.md b/src/content/docs/projekt/sammlungen-anlegen.md new file mode 100644 index 0000000..bf07311 --- /dev/null +++ b/src/content/docs/projekt/sammlungen-anlegen.md @@ -0,0 +1,166 @@ +--- +title: 'Sammlungen anlegen' +description: 'Eigene Collection in api/collections definieren: Schema, Meta, Indizes, Suche.' +--- + +import { Aside, Steps, FileTree } from '@astrojs/starlight/components'; + +Eine **Sammlung** (Collection) ist eine Tabelle deines Projekts. +Du legst sie als YAML-Datei in `api/collections/` an. +Der Dateiname ist frei, entscheidend ist das Feld `name`. +Beispiel-Sammlungen zum Abschauen: `content`, `navigation`, `medialib`, `tag`, `comment`. + +<FileTree> + +- api/ + - collections/ + - content.yml + - navigation.yml + - medialib.yml + - tag.yml + - comment.yml + +</FileTree> + +## Minimal-Beispiel + +Die kleinste Sammlung braucht `name` **und `permissions`** (beides Pflicht laut Schema) — `fields` ist dagegen optional. +Abgeschaut von `tag.yml` (vereinfacht): + +```yaml title="api/collections/notiz.yml — Minimal-Beispiel (vereinfacht aus tag.yml)" +# api/collections/notiz.yml +# yaml-language-server: $schema=../../tibi-types/schemas/config/collection.schema.json +name: notiz +uploadPath: ../media/notiz +audit: + enabled: true +permissions: + public: + methods: + get: true + user: + methods: + get: true + post: true + put: true + delete: true +indexes: + - name: name_unique + key: + - name + unique: true + background: true +search: + - name: default + mode: regex + fields: [name, text] +fields: + - name: name + type: string + meta: + label: { de: "Name", en: "Name" } + - name: text + type: string + meta: + label: { de: "Text", en: "Text" } +``` + +<Steps> + +1. Datei `api/collections/<name>.yml` anlegen, Schema-Zeile aus dem Beispiel kopieren. +2. `name` kleinschreiben, keine Umlaute und keine Leerzeichen (`content`, `tag`, `comment` als Vorbild). +3. `permissions` setzen — sonst liest niemand die Daten (Details: [Rechte und Tokens](/projekt/rechte-tokens/)). +4. `uploadPath` setzen, auch wenn die Sammlung keine Dateien enthält (`../media/<name>` wie in allen Starter-Sammlungen). +5. Projekt neu laden, damit der tibi-server die Datei einliest. +6. Testen: `POST` anlegen, doppelten Wert schicken → `409` bei Unique-Index. + +</Steps> + +## Meta: Label, Gruppe, Icon, Vorschau + +`meta` steuert, wie tibi-admin die Sammlung anzeigt. +Pflicht ist nichts davon — aber ohne `label` rätst du im Admin. + +| Schlüssel | Wirkung | Beispiel aus dem Starter | +|---|---|---| +| `label` | Anzeigename (`de`/`en`) | `tag.yml`: `{ de: "Schlagwörter", en: "Tags" }` | +| `group` | Gruppierung in der Navigation | `content`, `content`, `community` (`comment.yml`) | +| `muiIcon` | Icon im Admin | `label`, `menu`, `chat`, `folder-multiple-image` | +| `imageUrl` | Vorschaubild für Karten | Unsplash-URL in `content.yml` | +| `preview` | Listenvorschau: `label`, `secondary`, `tertiary`, `image` | `content.yml`: `label: name`, `secondary: path`, `tertiary: lang` | +| `viewHint` | Darstellungsart im Admin | siehe unten | +| `sidebar` | Eigene Seitenleiste mit Gruppen | `content.yml`: `publishing`, `seo` | +| `i18n.entry` | Übersetzungs-Kopplung | `content.yml`: `languageField: lang`, `groupField: translationKey` | + +Felder positionierst du mit `meta.position`: `main`, `sidebar:<gruppe>` oder `sidebar:settings`. +Beispiel: `lang` liegt in `content.yml` auf `sidebar:settings`, `active` auf `sidebar:publishing`. + +`viewHint` aus dem Starter (geprüft, alle drei Varianten): + +- `viewHint: cards` — Kartenansicht (`content.yml`). +- `viewHint.media` — Medienansicht mit Upload und KI-Alt-Text (`medialib.yml`). +- `viewHint.navigation` — Baumansicht mit `nodesField` und `declaredTrees` (`navigation.yml`, Bäume: Header/Footer je Sprache). + +## Indizes und Suche + +### Indizes + +Jeder Eintrag in `indexes` braucht nur `key` (`name` ist freiwillig). +`key` ist eine Liste von Feldnamen, Text-Index mit `"$text:$**"`. + +```yaml title="content.yml — Text-Index plus zwei Unique-Indizes" +# aus content.yml — Text-Index plus zwei Unique-Indizes +indexes: + - name: content_text + key: + - "$text:$**" + defaultLanguage: none + background: true + - name: path_lang + key: + - path + - lang + unique: true + background: true + - name: translation + key: + - translationKey + - lang + unique: true + background: true +``` + +`unique: true` schützt vor Doppelten: der zweite `POST` mit gleichem `path` + `lang` scheitert — modern mit `409`, im Legacy-Default (Standard) mit `500` (siehe [Fehlerbilder](/reference/fehlercodes/)). +So erzwingt der Starter auch einzelne Navigationsbäume (`type_language` in `navigation.yml`) und einzelne Tag-Namen (`name_unique` in `tag.yml`). + +### Suche + +Jeder Eintrag in `search` braucht nur `name` und `mode` (`fields` ist freiwillig). +Vier Modi kommen im Starter vor: + +| Modus | Wofür | Beispiel | +|---|---|---| +| `regex` | Einfache Teilstringsuche | `tag.yml`, `navigation.yml`, `comment.yml`: `default` | +| `ngram` | Fehlertolerante Fuzzy-Suche | `content.yml`: `fuzzy` mit `autoRegenerate: true` | +| `vector` | Semantische Vektorsuche | `content.yml`: `semantic` mit `vector: { provider: bge_m3 }` | +| `combined` | Hybrid aus semantisch + fuzzy (RRF) | `content.yml`: `combined` mit `rrf: { k: 60, topK: 100 }` | + +Abfrage dazu: `GET …/content?q=…&qName=combined`. +Details stehen unter [Lesen und suchen](/projekt/abfragen-lesen/). + +## Häufige Fehler + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| `409` beim Anlegen | `unique`-Index verletzt (`path`+`lang`, `translationKey`+`lang`, Tag-`name`) | Vor `POST` per `filter` prüfen, ob der Datensatz schon existiert | +| `project not found` | Projekt nicht registriert oder Namespace falsch | Siehe [Neues Projekt](/einstieg/neues-projekt/) Schritt 5 | +| Validierung schlägt fehl | Pflichtfeld fehlt oder `pattern` verletzt (z. B. `path` ohne führenden `/`) | Feldregeln stehen unter [Felder und Widgets](/projekt/felder-widgets/) | +| Öffentlich leere Liste, mit Token voll | `active:true` fehlt — der `filter_public`-Hook filtert alles weg | Siehe [Rechte und Tokens](/projekt/rechte-tokens/) | +| Datei-Upload landet falsch | `uploadPath` fehlt oder zeigt ins falsche Verzeichnis | `../media/<name>` wie in allen Starter-Sammlungen setzen | + +<Aside type="tip"> +Lege neue Felder zuerst in einer Test-Sammlung an, nicht in `content`. +`content` hat Pagebuilder-Blöcke und drei Such-Indizes — Fehler dort tun mehr weh. +</Aside> + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter), am 4c55f82 2026-10-12 (tibi-types). diff --git a/src/content/docs/projekt/ssr-website.md b/src/content/docs/projekt/ssr-website.md new file mode 100644 index 0000000..bfb5b4f --- /dev/null +++ b/src/content/docs/projekt/ssr-website.md @@ -0,0 +1,178 @@ +--- +title: 'Website mit SSR' +description: 'Routen, Daten-Lookups, Blöcke, SSR-Bundle, Cache und Invalidierung im Starter.' +--- + +import { Aside, Tabs, TabItem, Steps, FileTree } from '@astrojs/starlight/components'; + +Deine Website ist eine Svelte-5-App mit Server-Side-Rendering. +Der **tibi-server** rendert sie pro URL vor und legt das HTML in der Sammlung `ssr` ab. +Container: Seiten-Routen, Daten-Lookups, Blöcke, SSR-Bundle, Cache. + +<FileTree> + +- frontend/src/ + - App.svelte + - ssr.ts + - blocks/ +- api/hooks/ + - lib/app.server.js + +</FileTree> + +## Routen + +| URL | Was passiert | +|---|---| +| `/` | Leitet auf die Browser-Sprache um (`/de/` oder `/en/`) | +| `/:lang/*` | z. B. `/de/`, `/de/ueber-uns` — Sprache plus Seitenpfad | +| Unbekannter Pfad | `NotFound.svelte` (404) | + +- `content.path` steht **ohne** Sprachpräfix in der Datenbank (`/`, nicht `/de/`). +- Pfad-Regel: `^/[a-z0-9-/]*$` — klein, keine Umlaute. +- `translationKey` + `lang` und `path` + `lang` sind je eindeutig. Setze immer `translationKey`, sonst kollidiert die zweite Seite auf `null/de`. +- Sprache steckt im Pfad (`extractLanguageFromPath`), Titel und Meta kommen aus `contentEntry.meta`. + +## Daten laden und Lookups + +`App.svelte` lädt pro Seite drei Dinge über `getCachedEntries`: + +```ts title="frontend/src/App.svelte — die drei Abfragen" +const CONTENT_MEDIA_LOOKUP = ["blocks.heroImage.image:medialib", "blocks.image:medialib"].join(",") +const NAVIGATION_CONTENT_LOOKUP = "elements.page:content" + +// Inhalt: genau ein Treffer (limit 1), nur aktiv, mit Medien-Lookup und Kommentar-Zähler +getCachedEntries("content", { + filter: { lang, path: routePath, active: true }, + limit: 1, sort: "sort", + aggregate: { collection: "comment", foreignField: "contentId", op: "count", + filter: { active: true }, as: "commentCount" }, + lookup: CONTENT_MEDIA_LOOKUP, +}) +// Navigation: je ein Eintrag header/footer mit aufgelösten Seitenpfaden +getCachedEntries("navigation", { + filter: { type: "header", language: lang }, lookup: NAVIGATION_CONTENT_LOOKUP, ... +}) +``` + +| Lookup | Wirkung | +|---|---| +| `blocks.heroImage.image:medialib`, `blocks.image:medialib` | Bild-IDs werden zu `_lookup`-Objekten mit `file.src` | +| `elements.page:content` | Navigations-Elemente bekommen den Zielpfad (`_lookup.page.path`) | +| Kommentar-Aggregat | `commentCount` ohne zweite Abfrage | + +<Aside type="caution"> +Öffentlich sichtbar ist nur `active: true` — das gilt auch für `navigation` und `medialib`, obwohl deren Schema gar kein `active`-Feld kennt. +Ohne das Flag: Header/Footer leer (`count 0`), Bild-Lookups unaufgelöst (nur IDs). +Details unter [Rechte und Tokens](/projekt/rechte-tokens/). +</Aside> + +## Blöcke + +`BlockRenderer.svelte` mappt `content.blocks` auf Komponenten: + +| `type` | Komponente | Hinweis | +|---|---|---| +| `hero` | `HeroBlock.svelte` | Ohne Bild: Verlauf (Gradient-Fallback) | +| `features` | `FeaturesBlock.svelte` | Icons über `FeatureIcon.svelte` | +| `richtext` | `RichtextBlock.svelte` | Bilder nur bei aufgelöstem `_lookup.image.file.src` | +| `accordion` | `AccordionBlock.svelte` | Aufklapp-Sektionen | +| `contact-form` | `ContactFormBlock.svelte` | Formular aus `widgets/` (`Form`, `Input`, `Select`, `Button`) | + +- `hide: true` blendet einen Block aus. +- Unbekannte Typen werden still übersprungen — nur auf `localhost` erscheint ein gelber Hinweis. +- Bilder laufen ausschließlich über `MedialibImage.svelte` (`file.src` oder Data-URI, kein `?filter` auf Data-URIs). + +## Eigener Block + +<Steps> + +1. Feld in `api/collections/content.yml` unter `blocks` ergänzen: `type` plus Felder mit `dependsOn: $parent.type` — so zeigt der Editor nur passende Felder. +2. Komponente in `frontend/src/blocks/` anlegen, z. B. `QuoteBlock.svelte`: + - Props per Runen: `let { block } = $props()` — `block` nie destrukturieren. + - Abgeleitete Werte mit `$derived`, Zustand mit `$state`. + - SSR-sicher schreiben: jeder `window`-Zugriff braucht einen Guard (`typeof window !== "undefined"`). + - Texte über `svelte-i18n` (`$_`), Styling Tailwind v4 (`bg-linear-to-*`, `aspect-video`, wichtiges `!` hinten: `bg-brand-600!`). +3. Fall in `BlockRenderer.svelte` ergänzen: + ```svelte title="BlockRenderer.svelte — neuen Fall einhängen" + {:else if block.type === "quote"} + <QuoteBlock {block} /> + ``` +4. Seite mit dem neuen Block anlegen und anonym prüfen (nächster Abschnitt). + +</Steps> + +## SSR-Bundle + +Der Server ruft `app.default.render({ url })` auf. Den Wrapper liefert `frontend/src/ssr.ts` (Svelte-5-`render` aus `svelte/server`, i18n-Nachrichten synchron geladen, Sprache aus der URL). + +```text title="SSR-Bundle: bauen, nie von Hand anfassen" +frontend/src/ssr.ts ── esbuild (esbuild.config.server.js) ──▶ api/hooks/lib/app.server.js + Svelte 5, generate: "server" gebaut, nie von Hand anfassen +``` + +| Befehl | Wirkung | +|---|---| +| `yarn build` | Frontend-Bundle (`frontend/dist`) | +| `yarn build:server` | SSR-Bundle nach `api/hooks/lib/app.server.js` (Ziel `esnext`, goja-kompatibel) | + +Beide Builds schreiben `buildInfo` — der Server-Build überschreibt sie nie, sonst löst `checkBuildVersion` einen Schein-Reload aus. +Nach jedem Frontend-Build: `yarn build:server` erneut laufen lassen und deployen (siehe [Veröffentlichen](/projekt/deploy/)). + +## Cache und Invalidierung + +`api/hooks/ssr/get_read.js` rendert jede anonyme Anfrage — außer Tracking (`x-ssr-skip`) und Admins: + +<Steps> + +1. URL normieren (Query ab, Schrägstrich ab, `/index` → `/`), per `ssrValidatePath` prüfen (404 oder kein Rendering). +2. Cache in der Sammlung `ssr` suchen (`path` ist eindeutig). Treffer mit `X-SSR-Cache: true` ausliefern; abgelaufene (`validUntil`) löschen. +3. Neu rendern, `window.__SSR_CACHE__` mit den gelesenen Einträgen einbetten, Abhängigkeiten als `col:id` (Detail) oder `col:*` (Liste) speichern. Gibt es `col:*`, fallen die `col:id` derselben Sammlung weg. +4. Parallel geschriebene Duplikate (`duplicate key` auf `path`) werden geschluckt — der Eintrag existiert dann schon. + +</Steps> + +Invalidierung übernimmt `api/hooks/lib/utils.js` (`clearSSRCache`), verdrahtet über `clear_cache.js` als `return`-Hook (u. a. `content`, `navigation`, `medialib`, `comment`, `tag`): + +| Methode | Was gelöscht wird | +|---|---| +| `POST` (neuer Eintrag) | Nur Seiten mit `col:*` (Listen) | +| `PUT` / `DELETE` | Seiten mit `col:<id>` **oder** `col:*` | +| `POST /api/ssr?clear=1` | Alles (manueller Komplett-Wisch) | + +Jede andere `POST`-Anfrage an `ssr` antwortet **500** (`ssr is only a dummy collection`). +Antwort-Köpfe `X-SSR-Cleared` und `X-SSR-Cleared-Collection` sagen, was flog. + +## Abnahme + +<Tabs> +<TabItem label="Anonym prüfen"> + +```bash title="SSR-HTML ohne Login lesen" +curl -s http://localhost:8080/de/ | grep -o 'window.__SSR_CACHE__ = .*' | head -c 600 +# Erwartung: navigation count > 0, heroImage/image mit _lookup +curl -sI http://localhost:8080/de/ | grep -i x-ssr-cache +# Zweiter Aufruf: X-SSR-Cache: true +``` + +</TabItem> +<TabItem label="Nach Änderung"> + +```bash title="Cache-Verhalten nach PUT/DELETE" +# PUT/DELETE auf einen Eintrag → betroffene Seiten neu gerendert (kein X-SSR-Cache: true beim nächsten Aufruf) +# POST (neu) → nur Listen-Seiten neu +# Zweifel? POST /api/ssr?clear=1 wischt alles +curl -s "http://localhost:8080/de/?noCache=1" | head -c 300 +``` + +</TabItem> +</Tabs> + +| Fehlerbild | Ursache | Lösung | +|---|---|---| +| Öffentlich leer, mit Token voll | `active:true` fehlt (auch auf Navigation/Medien) | Flag setzen, anonym erneut prüfen | +| `X-SSR-Cache: true` trotz neuer Daten | Abhängigkeit fehlt (z. B. Liste ohne `col:*`) | `?clear=1` oder `?noCache=1`, Hook-Verdrahtung prüfen | +| 500 `ssr is only a dummy collection` | `POST` an `ssr` ohne `?clear=1` | Query-Parameter ergänzen | +| PAT reicht, anonym fehlt Lookup | `lookup permission denied` — Ziel-Sammlung ohne Leserecht | [Rechte und Tokens](/projekt/rechte-tokens/) | + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter). diff --git a/src/content/docs/projekt/suche.md b/src/content/docs/projekt/suche.md new file mode 100644 index 0000000..28cfeef --- /dev/null +++ b/src/content/docs/projekt/suche.md @@ -0,0 +1,103 @@ +--- +title: 'Suche' +description: 'Textindex, search-Blöcke, Hybrid-Suche, Neuaufbau des Index aus Projektsicht.' +--- + +import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Die Suche läuft über `search`-Blöcke in der Sammlungs-YAML plus Abfrage per `q` und `qName`. +Suche-Begriffe: Volltextsuche, Hybrid-Suche, Suchindex neu aufbauen. + +## Index anlegen + +`content.yml` definiert drei Indexe: + +| Index | Schlüssel | Zweck | +|---|---|---| +| `content_text` | `$text:$**`, `defaultLanguage: none` | Volltext über alle Felder | +| `path_lang` | `path` + `lang`, unique | Pfad je Sprache eindeutig | +| `translation` | `translationKey` + `lang`, unique | Übersetzung je Sprache eindeutig | + +`navigation.yml` und `medialib.yml` nutzen nur einen `default`-Index im Modus `regex` (kein Textindex nötig). + +## search-Blöcke + +```yaml title="content.yml — search-Blöcke (gekürzt)" +# content.yml — search (gekürzt) +search: + - name: combined # Hybrid aus semantic + fuzzy + mode: combined + rrf: { k: 60, topK: 100, weights: { semantic: 1.5, fuzzy: 1.0 } } + - name: fuzzy + mode: ngram + autoRegenerate: true + fields: [name, path, meta.title, meta.description, blocks.headline, blocks.subline, + blocks.text, blocks.items.title, blocks.items.text, blocks.items.question, blocks.items.answer] + - name: semantic + mode: vector + autoRegenerate: true + fields: [name, meta.title, meta.description, blocks.headline, blocks.subline, + blocks.text, blocks.items.title, blocks.items.text, blocks.items.question, blocks.items.answer] + vector: { provider: bge_m3 } +``` + +| `qName` | Sammlung | Modus | +|---|---|---| +| `combined` | `content` | Hybrid (RRF aus `semantic` + `fuzzy`) | +| `fuzzy` | `content` | n-gram, fehlertolerant | +| `semantic` | `content` | Vektor (`bge_m3`) | +| `default` | `tag`, `navigation`, `comment`, `medialib` | regex | + +## Lesen mit q + +Grundlagen (Filter, Lookup, Facetten) stehen unter [Lesen und suchen](/projekt/abfragen-lesen/). Hier nur die Suche: + +```text title="Suche per q und qName" +GET …/content?q=kontakt&qName=combined +GET …/tag?q=hero +GET …/content?q=kontakt&qName=combined&qExplain=1 +``` + +- `q` ist der Suchtext, `qName` wählt den Block (ohne `qName` greift der Standard). +- `qExplain=1` zeigt die Gewichtung — nützlich beim Debuggen. +- Suche mit und ohne `lookup` testen: `?q=…&qName=combined&lookup=blocks.heroImage.image:medialib,blocks.image:medialib` löst Treffer-Bilder gleich auf. + +## Hybrid-Kurzüberblick + +`combined` mischt Vektor- und n-gram-Treffer per Reciprocal Rank Fusion (`internal/rankfusion`, tibi-server): + +```text title="RRF-Formel (combined)" +score(doc) += weight / (k + rank) # k = 60, weights: semantic 1.5, fuzzy 1.0 +``` + +- `topK: 100` begrenzt die Kandidaten je Quelle **und** kappt das Fusionsergebnis (`MergeRRF`). +- Weitere Strategien (`score_rrf`, `score_sum`, `rank_score`, `hybrid`), Normierung (`minmax`, `zscore`), Gewichte (`scoreWeight`) und Quellen-Config (`sourceConfig`) existieren im Code **und** sind als `rrf`-Block in der Projekt-YAML einstellbar — aus Projektsicht reicht `combined` mit den Starter-Gewichten. +- Alte Score-Beispiele aus Erzähl-Docs nicht übernehmen — nur diese Formel gilt. + +## Neuaufbau + +<Steps> + +1. Bearbeite Einträge normal — `fuzzy` und `semantic` haben `autoRegenerate: true` und bauen sich selbst nach. +2. Beobachte im tibi-admin den Hinweis `SearchIndexBuildNotice`: Er erscheint im Projekt-Header (Summe offener `_queue`-Einträge aller `ngram`-/`vector`-Sammlungen) und im Sammlungs-Header der betroffenen Sammlung. +3. Warte, bis der Hinweis nach dem nächsten Polling von selbst verschwindet (`_queue` = 0). Der `regex`-Modus (`default`) hat keine Queue und keinen Hinweis. + +</Steps> + +<Aside type="note" title="Regenerate auslösen"> +Den Neuaufbau stößt du im tibi-admin über den Regenerate-Flow an (Test-Plan `41-search-index-status`). +Aus Projektsicht musst du nichts einrichten — nur `autoRegenerate: true` in der YAML stehen lassen. +</Aside> + +## Fehlerbilder + +| Symptom | Ursache | Lösung | +|---|---|---| +| Leere Scores / keine Treffer trotz Daten | Index fehlt oder `_queue` noch > 0 | Hinweis im Admin abwarten, dann erneut suchen | +| `combined` findet nichts, `fuzzy` schon | Vektor-Anteil ohne Embeddings | `semantic`-Felder und Provider (`bge_m3`) prüfen | +| Suche über `tag`/`navigation` unscharf | `default` ist `regex`, kein Fuzzy | Erwartung anpassen oder `content`-Indexe nutzen | +| `?facet=` an der Suche wirkungslos | Facetten sind eigene Route (`…/_facet`) | [Lesen und suchen](/projekt/abfragen-lesen/) beachten | + +Weiter: [Lesen und suchen](/projekt/abfragen-lesen/), [Sammlungen anlegen](/projekt/sammlungen-anlegen/), [Felder und Widgets](/projekt/felder-widgets/). + +Verifiziert am e3f92ebf 2026-10-14 (tibi-svelte-starter), am 68b42785 2026-10-15 (tibi-server, rankfusion), am 2b091d89 2026-10-13 (tibi-admin-nova, Test-Plan 41-search-index-status) diff --git a/src/content/docs/reference/fehlercodes.md b/src/content/docs/reference/fehlercodes.md new file mode 100644 index 0000000..3110239 --- /dev/null +++ b/src/content/docs/reference/fehlercodes.md @@ -0,0 +1,54 @@ +--- +title: 'Fehlerbilder' +description: 'Typische Antworten und was sie bedeuten: project not found, permission denied, 409, Validierung.' +--- + +import { Aside } from '@astrojs/starlight/components'; + +Jede Antwort folgt dem Muster `{"error": "<text>"}`. 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 + +| Status | Antwort | Ursache | Fix | +| --- | --- | --- | --- | +| 404 | `project not found` | Projekt läuft auf diesem Server nicht (nicht registriert oder falscher Namespace) | Projekt per JWT registrieren, dann Reload (siehe Token-Köpfe) | +| 404 | `document not found` / `not found` | Datensatz-ID existiert nicht in dieser Collection | ID und Collection-Namen prüfen | +| 403 | `permission denied` | Kopf fehlt, Wert falsch oder Methode nicht erlaubt | Header-Namen, Token-Wert und `permissions`-Block prüfen | +| 403 | `permission denied: …` | Detail steht nach dem Doppelpunkt, z. B. fehlender Scope oder Bulk-Recht | Text nach dem Doppelpunkt lesen: Scope nachtragen oder Einzel- statt Bulk-Route nutzen | +| 403 | `aggregate permission denied` / `lookup permission denied` | Aggregation oder Lookup ohne Recht | `permissions`-Eintrag für diese Operation ergänzen | +| 403 | `permission denied for given projection` | Angeforderte Projektion nicht erlaubt | Projektion aus der Anfrage entfernen oder freigeben | +| 409 / 500 | Doppelter Schlüssel (Konflikt) | Eindeutiger Index verletzt, z. B. `path+lang` doppelt. **Achtung Default:** Standard ist Legacy-Modus (`legacy.httpCodes`), dort antwortet der Server **500** statt 409; 409 gibt es nur im modernen Modus | Eindeutiges Feld ändern; bei 500 denselben Fall annehmen | +| 400 / 422 | `validation failed` + Feldliste | Datensatz verstößt gegen Feld-Validatoren. Legacy-Default: **400**; modern: **422** | `code` je Feld aus der zweiten Tabelle lesen | +| 400 | `invalid data type for data in return of … hook` | Hook gab falschen Typ zurück | Hook-Rückgabe auf Objekt bzw. erwarteten Typ fixen | + +## Validierungs-Codes je Feld + +Der Server liefert zu jedem Feld `{"code": "…", "message": "…"}`. Alle Codes aus `validator.go`: + +| Code | Bedeutung | Typisches Beispiel | +| --- | --- | --- | +| `required` | Pflichtfeld fehlt oder leer | Leerer Titel bei Pflichtfeld | +| `type` | Falscher Datentyp | Array statt String; Zahl statt Bool | +| `format` | Format falsch | `email`, `url`, `uuid`, `slug` verletzt | +| `pattern` | Regulärer Ausdruck passt nicht | `validator.pattern` greift nicht | +| `min_length` / `max_length` | String zu kurz oder zu lang | Titel über dem Limit | +| `min` / `max` | Zahl zu klein oder zu groß | Preis unter Minimum | +| `min_date` / `max_date` | Datum außerhalb des Fensters | Datum vor `minDate` | +| `min_items` / `max_items` | Array hat zu wenige oder zu viele Einträge | Leere Liste bei `minItems: 1` | +| `in` | Wert nicht in der Allow-Liste | Status nicht in `validator.in` | +| `eval` | Eigene JS-Prüfung schlägt fehl | `message` enthält den Hook-Text | +| `unknown_field` | Feld steht nicht im Schema (nur bei `strictFields`) | Tippfehler im Feldnamen | +| `internal` | Validator selbst defekt, z. B. `eval` nicht kompiliert | Config und Server-Logs prüfen | + +<Aside type="caution" title="Legacy ist Default"> +Ohne `legacy.httpCodes: false` in der Projekt-Config gelten die alten Codes: Konflikt = **500** (nicht 409), Validierung = **400** (nicht 422). Wenn du 500 siehst, wo du 409 erwartest, ist das kein Bug — das ist der Default (`internal/controller/http_status.go`). +</Aside> + +```text title="Fehlerbild einordnen" +400/422 validation failed ──▶ code lesen ──▶ Feld fixen ──▶ erneut senden +403 permission denied ──▶ Doppelpunkt-Text lesen ──▶ Kopf oder Recht fixen +404 project not found ──▶ registrieren + Reload ──▶ erneut senden +409/500 Konflikt ──▶ eindeutiges Feld ändern ──▶ erneut senden +``` + +Verifiziert am 68b42785 2026-10-15 (tibi-server) diff --git a/src/content/docs/reference/hook-kontexte.md b/src/content/docs/reference/hook-kontexte.md new file mode 100644 index 0000000..b5a46ee --- /dev/null +++ b/src/content/docs/reference/hook-kontexte.md @@ -0,0 +1,75 @@ +--- +title: 'Hook-Kontexte (Code-Stand)' +description: 'Verbindliche Hook-Kontext-Liste aus internal/hook: alle Pakete und wofür sie gut sind.' +--- + +import { Aside, Card, CardGrid } from '@astrojs/starlight/components'; + +In Hooks rufst du Helfer über Pakete auf, z. B. `db.find(...)` oder `http.fetch(...)`. Diese Liste stammt aus `internal/hook/context_*.go` im tibi-server (jeweils `RegisterPackageFunctions`). Sie ist verbindlich — nicht die Paket-Zahl aus älteren Erzähl-Docs. + +Die Detail-Doku wächst kapitelweise: Jedes Paket verlinkt unten auf sein Referenz-Kapitel. + +<CardGrid stagger> + <Card title="Daten"> + db, cache, request, response, fs. [Lesen](/reference/hooks-daten/). + </Card> + <Card title="Netze und Nachrichten"> + http, smtp, channel, ratelimit. [Lesen](/reference/hooks-netze/). + </Card> + <Card title="Sicherheit und Identität"> + jwt, user, bcrypt, crypto, cookie, exec, config. [Lesen](/reference/hooks-sicherheit/). + </Card> + <Card title="Templates und Medien"> + tpl, image, pdf. [Lesen](/reference/hooks-medien/). + </Card> + <Card title="Formate und Diagnose"> + base64, json, xml, charset, debug. [Lesen](/reference/hooks-meta/). + </Card> +</CardGrid> + +## Tiefenstufen: was „abgedeckt" heißt + +`npm run coverage` misst pro Symbol (`db.find`, `cache.get`, `request` …) die Tiefe auf seiner Map-Seite: Stufe 1 = Symbol fehlt, Stufe 2 = nur Erwähnung, Stufe 3 = Erwähnung plus Codeblock mit dem Symbol (Start höchstens 30 Zeilen danach), Stufe 4 = zusätzlich ein Fehler-Token (Error-Text oder Status-Code) im selben `##`-Abschnitt. Ziel pro Kapitel: alle eigenen Symbole auf Stufe 4. + +## Tabelle: Kontext zu Wofür + +| Paket | Wofür | Beispiel | Kapitel | +| --- | --- | --- | --- | +| `db` | Lesen und schreiben in Collections | `db.find`, `db.create`, `db.update`, `db.delete`, `db.count`, `db.updateMany`, `db.deleteMany` | [Hook-Referenz: Daten](/reference/hooks-daten/) | +| `http` | Externe HTTP-Aufrufe | `http.fetch`, `http.fetchStream` | [Hook-Referenz: Netze](/reference/hooks-netze/) | +| `tpl` | Templates rendern | `tpl.execute` | [Hook-Referenz: Templates und Medien](/reference/hooks-medien/) | +| `jwt` | Tokens erzeugen und parsen | `jwt.create`, `jwt.parse` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `user` | Aktuelle Anmeldung lesen | `user.auth` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `smtp` | E-Mails senden | `smtp.sendMail` | [Hook-Referenz: Netze](/reference/hooks-netze/) | +| `exec` | Systemkommando ausführen | `exec.command` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `config` | Projekt-, Namespace-, Server-Config lesen | `config.namespace`, `config.project`, `config.server` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `request` | Aktuellen Request lesen (kein Paket, sondern Funktion) | `request()` → Methode, URL, Header | [Hook-Referenz: Daten](/reference/hooks-daten/) | +| `response` | Antwort steuern (Header, SSE) | `response.header`, `response.write`, `response.writeSSE` | [Hook-Referenz: Daten](/reference/hooks-daten/) | +| `fs` | Dateien im Config-Verzeichnis | `fs.readFile`, `fs.writeFile`, `fs.stat`, `fs.readDir`, `fs.mkDir`, `fs.remove`, `fs.copy`, `fs.configDir` | [Hook-Referenz: Daten](/reference/hooks-daten/) | +| `image` | Bildfilter anwenden | `image.filter` | [Hook-Referenz: Templates und Medien](/reference/hooks-medien/) | +| `pdf` | PDF erzeugen | `pdf.fromHTML`, `pdf.cpu` | [Hook-Referenz: Templates und Medien](/reference/hooks-medien/) | +| `cache` | Hook-lokaler Zwischenspeicher | `cache.set`, `cache.get`, `cache.has`, `cache.delete`, `cache.clear`, `cache.count` | [Hook-Referenz: Daten](/reference/hooks-daten/) | +| `crypto` | Hashes bilden | `crypto.sha256`, `crypto.md5` (plus weitere) | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `base64` | Kodieren und Dekodieren | `base64.encode`, `base64.decode` | [Hook-Referenz: Formate und Diagnose](/reference/hooks-meta/) | +| `bcrypt` | Passwörter hashen und prüfen | `bcrypt.hash`, `bcrypt.check` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `channel` | Nachrichten senden und abonnieren | `channel.send`, `channel.subscribe` | [Hook-Referenz: Netze](/reference/hooks-netze/) | +| `cookie` | Cookies lesen und setzen | `cookie.get`, `cookie.set` | [Hook-Referenz: Sicherheit und Identität](/reference/hooks-sicherheit/) | +| `json` | JSON-Helfer | siehe `context_json.go` | [Hook-Referenz: Formate und Diagnose](/reference/hooks-meta/) | +| `xml` | XML-Helfer | siehe `context_xml.go` | [Hook-Referenz: Formate und Diagnose](/reference/hooks-meta/) | +| `charset` | Zeichensätze umwandeln | `charset`-Funktionen, z. B. ISO-8859 nach UTF-8 | [Hook-Referenz: Formate und Diagnose](/reference/hooks-meta/) | +| `debug` | Debug-Ausgaben, Sleep, Trace-ID | `debug.dump`, `debug.sleep`, `debug.sentryTraceId` | [Hook-Referenz: Formate und Diagnose](/reference/hooks-meta/) | +| `ratelimit` | Aufrufe begrenzen | siehe `context_ratelimit.go` | [Hook-Referenz: Netze](/reference/hooks-netze/) | + +## Fehlende oder veraltete Einträge melden + +Die Hülle nannte nur: db, http, tpl, jwt, bcrypt, cache, channel, crypto, fs, image, pdf, smtp, exec, config, request, response, user, xml, base64. Im Code gibt es **zusätzlich**: + +- `charset`, `cookie`, `json`, `debug`, `ratelimit` + +Wenn du eine Doku-Stelle findest, die eine kleinere Paket-Zahl nennt, ist sie veraltet. Melde sie als Issue mit dem Dateinamen und dem Stand dieser Seite. + +<Aside type="tip" title="Schnell nachschlagen"> +Paketname = Dateiname ohne `context_` und ohne `.go`. Die Funktionen stehen jeweils im `RegisterPackageFunctions`-Block am Dateianfang. +</Aside> + +Verifiziert am 68b42785 2026-10-15 (tibi-server) diff --git a/src/content/docs/reference/hooks-daten.md b/src/content/docs/reference/hooks-daten.md new file mode 100644 index 0000000..4e3e4e7 --- /dev/null +++ b/src/content/docs/reference/hooks-daten.md @@ -0,0 +1,413 @@ +--- +title: 'Hook-Referenz: Daten' +description: 'db, cache, request, response und fs im Hook-JS: Signaturen aus internal/hook, je ein Beispiel und je ein belegter Fehlerfall.' +--- + +In Hooks sprichst du diese fünf Pakete über `context` an, z. B. `context.db.find(...)` oder `context.request()`. Die Signaturen stammen aus den `// args:`- bzw. `// JS signature:`-Kommentaren in `internal/hook/context_*.go` im tibi-server; wo so ein Kommentar fehlt, ist die Signatur aus Funktionsrumpf und `_test`-Datei abgeleitet und entsprechend markiert. Jede Funktion zeigt genau einen Fehlerfall mit dem originalen Error-Text aus Code oder Tests (Status-Code aus den Hook-Tests, meist `500`). + +## db – Collections lesen und schreiben + +Quelle: `context_db.go`, registriert per `RegisterPackageFunctions("db", ...)` mit `find`, `count`, `create`, `update`, `delete`, `deleteMany`, `updateMany`. + +### db.find + +**Signatur:** `db.find(collectionName: string, options?: object): Array` — aus `// args: collectionName:string, options:map[string]interface{}` (`context_db.go:42`). `options` kennt `filter`, `selector` (oder `projection`), `offset`, `limit` und `sort`. + +Leeres Ergebnis ist kein Fehler: `db.find` liefert dann ein leeres Array. + +```js title="db.find – Beispiel" +;(function () { + const rows = context.db.find("content", { + filter: { active: true }, + sort: ["-publishAt"], + limit: 10 + }) + throw { status: 200, json: { count: rows.length, rows: rows } } +})() +``` + +**Fehlerfall (Error):** Ohne Collection-Namen brichst du mit `missing collection name argument in db.find` ab (`context_db.go:53`); eine unbekannte Collection liefert den Config-Error und endet im Hook-Test mit Status `500` (`error - find invalid collection`, `context_db_test.go:228`). + +### db.count + +**Signatur:** `db.count(collectionName: string, options?: { filter?: object }): number` — aus `// args: collectionName:string, options:map[string]interface{}` (`context_db.go:186`). + +```js title="db.count – Beispiel" +;(function () { + const n = context.db.count("content", { filter: { active: true } }) + throw { status: 200, json: { count: n } } +})() +``` + +**Fehlerfall (Error):** Ein `filter` vom falschen Typ (z. B. String statt Objekt) scheitert mit `invalid type for options.filter in db.count` (`context_db.go:222`). + +### db.create + +**Signatur:** `db.create(collectionName: string, data: object): object` — aus `// args: collectionName:string, data:map[string]interface{}` (`context_db.go:260`). Gibt das gespeicherte Dokument inklusive `id` zurück. + +```js title="db.create – Beispiel" +;(function () { + const doc = context.db.create("content", { title: "Neu", active: false }) + throw { status: 200, json: { id: doc.id, title: doc.title } } +})() +``` + +**Fehlerfall (Error):** Fehlende `data` melden die Tests belegt: `missing collection name and/or data argument in db.create`, Status `500` (`error - create missing data`, `context_db_test.go:239`). + +### db.update + +**Signatur:** `db.update(collectionName: string, id: string, data: object, options?: { raw?: boolean }): object` — aus `// args: collectionName:string, id:string(ObjectID hex), data:map[string]interface{}` (`context_db.go:313`). `data` versteht Feld-Operatoren wie `{"price": {"$inc": 10}}`; mit `{ raw: true }` übergibst du ein rohes Mongo-Update-Dokument. + +```js title="db.update – Beispiel" +;(function () { + const id = context.request().query("id") + const doc = context.db.update("content", id, { title: "Korrigiert" }) + throw { status: 200, json: { id: doc.id, title: doc.title } } +})() +``` + +**Fehlerfall (Error):** Eine ID, die kein ObjectID-Hex ist, liefert `invalid object id string in db.update` (`context_db.go:365`). + +### db.delete + +**Signatur:** `db.delete(collectionName: string, id: string): object` — aus `// args: collectionName:string, id:string(ObjectId Hex)` (`context_db.go:453`). Gibt `{ message: "ok" }` zurück und räumt Datei-Felder des Dokuments weg. + +```js title="db.delete – Beispiel" +;(function () { + const id = context.request().query("id") + const res = context.db.delete("content", id) + throw { status: 200, json: { deleted: id, message: res.message } } +})() +``` + +**Fehlerfall (Error):** Ungültige ID: `invalid object id string in db.delete` (`context_db.go:479`); fehlende Argumente: `missing collection name and/or id in db.delete`. + +### db.deleteMany + +**Signatur:** `db.deleteMany(collectionName: string, options?: { filter?: object }): object` — aus `// args: collectionName:string, options:map[string]interface{}` (`context_db.go:533`). Antwortet mit `{ message: "ok", removed: <Anzahl> }`. + +```js title="db.deleteMany – Beispiel" +;(function () { + const res = context.db.deleteMany("content", { filter: { active: false } }) + throw { status: 200, json: { removed: res.removed } } +})() +``` + +**Fehlerfall (Error):** `options` als String statt Objekt scheitert mit `options must be object in db.deleteMany` (`context_db.go:552`). + +### db.updateMany + +**Signatur:** `db.updateMany(collectionName: string, options: { filter?: object, changes?: object, update?: object }): object` — aus `// args: collectionName:string, options:map[string]interface{}` (`context_db.go:628`). Entweder `changes` (einfache Werte, werden `$set`) oder `update` (rohe Operatoren wie `$inc`, `$unset`) ist Pflicht; `update` gewinnt bei beiden. + +```js title="db.updateMany – Beispiel" +;(function () { + const res = context.db.updateMany("content", { + filter: { active: false }, + changes: { reviewed: true } + }) + throw { status: 200, json: { modified: res.modified } } +})() +``` + +**Fehlerfall (Error):** Ohne `changes` und ohne `update`: `options.changes or options.update is required in db.updateMany` (`context_db.go:711`). + +## cache – Hook-lokaler Zwischenspeicher + +Quelle: `context_cache.go`, registriert per `RegisterPackageFunctions("cache", ...)` mit `set`, `get`, `has`, `delete`, `clear`, `count`. Der Cache ist projektweit (project-scoped), nicht pro Request. + +### cache.set + +**Signatur:** `cache.set(key: string, value: any, ttlMs?: number): void` — aus `// JS signature: cache.set(key: string, value: any, ttlMs?: number): void` (`context_cache.go:23`). + +```js title="cache.set – Beispiel" +;(function () { + context.cache.set("content:teaser", { title: "Start" }, 60000) + throw { status: 200, json: { cached: true } } +})() +``` + +**Fehlerfall (Error):** Weniger als zwei Argumente: `cache.set requires at least key and value` (`context_cache.go:30`); leerer Schlüssel: `cache.set: key must be a non-empty string` (`context_cache.go:34`). + +### cache.get + +**Signatur:** `cache.get(key: string): any | null` — aus `// JS signature: cache.get(key: string): any | null` (`context_cache.go:48`). Unbekannte Schlüssel liefern `null`, keinen Error. + +```js title="cache.get – Beispiel" +;(function () { + const teaser = context.cache.get("content:teaser") + throw { status: 200, json: { hit: teaser !== null, teaser: teaser } } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Schlüssel: `cache.get requires a key` (`context_cache.go:55`). + +### cache.has + +**Signatur:** `cache.has(key: string): boolean` — aus `// JS signature: cache.has(key: string): boolean` (`context_cache.go:70`). + +```js title="cache.has – Beispiel" +;(function () { + const hit = context.cache.has("content:teaser") + throw { status: 200, json: { hit: hit } } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Schlüssel: `cache.has requires a key` (`context_cache.go:77`). + +### cache.delete + +**Signatur:** `cache.delete(key: string): boolean` — aus `// JS signature: cache.delete(key: string): boolean` (`context_cache.go:88`). Gibt zurück, ob der Schlüssel existierte. + +```js title="cache.delete – Beispiel" +;(function () { + const gone = context.cache.delete("content:teaser") + throw { status: 200, json: { deleted: gone } } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Schlüssel: `cache.delete requires a key` (`context_cache.go:95`). + +### cache.clear + +**Signatur:** `cache.clear(): void` — aus `// JS signature: cache.clear(): void` (`context_cache.go:106`). Räumt alle Einträge des Projekt-Caches weg. + +```js title="cache.clear – Beispiel" +;(function () { + context.cache.clear() + throw { status: 200, json: { cleared: true } } +})() +``` + +**Fehlerfall (Error):** Ohne initialisierten Projekt-Cache meldet der Code `cache.clear: cache not available` (`context_cache.go:110`). + +### cache.count + +**Signatur:** `cache.count(): number` — aus `// JS signature: cache.count(): number` (`context_cache.go:118`). Zählt nur lebende (nicht abgelaufene) Einträge. + +```js title="cache.count – Beispiel" +;(function () { + const n = context.cache.count() + throw { status: 200, json: { entries: n } } +})() +``` + +**Fehlerfall (Error):** Ohne initialisierten Projekt-Cache meldet der Code `cache.count: cache not available` (`context_cache.go:122`). + +## request – Aktuellen Request lesen + +`request` ist kein Paket, sondern eine direkt registrierte Funktion (`Register("request", ...)` in `context_request.go:12`). **Signatur aus Code und Tests abgeleitet** (kein `args:`-Kommentar, `context_request.go:15`): `request(): { method, remoteAddr, clientIp, host, url, path, param(), query(), header(), bodyBytes(), body() }`. `method` ist kleingeschrieben, `query`, `header` und `param` sind Funktionen. + +### request + +**Signatur (abgeleitet):** `request(): object` — Felder und Helfer siehe oben, belegt durch `FuncRequest` (`context_request.go:16`) und `test_request.js` (Methode, Pfad, Query, Header, Host, URL, Remote-Adresse). + +```js title="request – Beispiel" +;(function () { + const req = context.request() + const out = { + method: req.method, + path: req.path, + filter: req.query("filter"), + token: req.header("X-Custom-Test") + } + throw { status: 200, json: out } +})() +``` + +**Fehlerfall (Error):** Außerhalb von Hooks (kein HTTP-Kontext, z. B. in Jobs ohne Request) scheitert der Aufruf mit `request functions only valid in hooks` (`context_request.go:19`). + +## response – Antwort steuern + +Quelle: `context_response.go`, registriert per `RegisterPackageFunctions("response", ...)` mit `header`, `writeHeader`, `write`, `flush`, `writeSSE`. Alle Funktionen brauchen einen Hook-HTTP-Kontext. Muster: `test_response.js` im tibi-server. + +### response.header + +**Signatur aus Kommentar** (`context_response.go:21`, `// header:string content:string`): `response.header(name: string, content: string): void` — setzt einen Antwort-Header. + +```js title="response.header – Beispiel" +;(function () { + context.response.header("X-SSR-Cache", "hit") + context.response.header("Cache-Control", "public, max-age=60") + throw { status: 200, json: { headers: "set" } } +})() +``` + +**Fehlerfall (Error):** Weniger als zwei Argumente: `missing header name and/or value in reponse.header function` — so wörtlich im Code, inklusive Tippfehler (`context_response.go:29`). + +### response.writeHeader + +**Signatur:** `response.writeHeader(status: number): void` — aus `// args: status:int` (`context_response.go:43`). Muss vor `write` kommen; belegt durch `write_header_and_body` in `test_response.js` (Status `201`). + +```js title="response.writeHeader – Beispiel" +;(function () { + context.response.header("Content-Type", "text/plain") + context.response.writeHeader(201) + context.response.write("Angelegt") + return { stop: true } +})() +``` + +**Fehlerfall (Error):** Nicht-numerischer Status: `status must be a number in response.writeHeader function` (`context_response.go:61`); ohne `writeHeader` sendet das erste `write` implizit Status `200` (`context_response.go:68`). + +### response.write + +**Signatur:** `response.write(data: string | []byte): void` — aus `// args: data:string|[]byte` (`context_response.go:70`). Schreibt direkt in den Antwort-Body. + +```js title="response.write – Beispiel" +;(function () { + context.response.header("Content-Type", "application/json") + context.response.writeHeader(200) + context.response.write(JSON.stringify({ custom: true })) + return { stop: true } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Daten: `missing data in response.write function` (`context_response.go:78`). + +### response.flush + +**Signatur ohne `args:`-Kommentar, aus Rumpf und Tests abgeleitet** (`context_response.go:101`): `response.flush(): void` — schiebt gepufferte Daten sofort zum Client, wichtig für Streaming. + +```js title="response.flush – Beispiel" +;(function () { + context.response.header("Content-Type", "text/plain") + context.response.writeHeader(200) + context.response.write("part1") + context.response.flush() + context.response.write("part2") + return { stop: true } +})() +``` + +**Fehlerfall (Error):** Außerhalb von Hooks (ohne HTTP-Kontext) scheitert der Aufruf mit `response functions only valid in hooks` (`context_response.go:104`); kann der Writer nicht flushen, ist `flush` still wirkungslos. + +### response.writeSSE + +**Signatur:** `response.writeSSE(event: string, data: string): void` — aus `// args: event:string, data:string` (`context_response.go:115`). Schreibt `event: {event}\ndata: {data}\n\n` und flusht sofort; mit nur einem Argument wird es als `data` ohne Event-Name gesendet. + +```js title="response.writeSSE – Beispiel" +;(function () { + context.response.header("Content-Type", "text/event-stream") + context.response.writeHeader(200) + context.response.writeSSE("tick", "event-data-1") + return { stop: true } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Argumente: `missing data in response.writeSSE function` (`context_response.go:129`). + +## fs – Dateien im Config-Verzeichnis + +Quelle: `context_fs.go`, registriert per `RegisterPackageFunctions("fs", ...)` mit `configDir`, `readFile`, `writeFile`, `stat`, `readDir`, `mkDir`, `remove`, `copy`. Alle Pfade sind relativ und werden per `CleanFilePath` gegen das Config-Verzeichnis aufgelöst. Muster: `test_fs.js` im tibi-server. + +### fs.configDir + +**Signatur ohne `args:`-Kommentar, aus dem Rumpf abgeleitet** (`context_fs.go:27`): `fs.configDir(): string` — liefert das Config-Verzeichnis, nimmt keine Argumente. + +```js title="fs.configDir – Beispiel" +;(function () { + const dir = context.fs.configDir() + throw { status: 200, json: { hasDir: dir !== null && dir !== undefined } } +})() +``` + +**Fehlerfall:** Kein Fehlerfall — `configDir` nimmt keine Argumente und wirft keinen Pfad-Fehler (dokumentierte Abwesenheit, kein Versäumnis). + +### fs.readFile + +**Signatur:** `fs.readFile(path: string, options?: { bytes?: boolean }): string` — aus `// args: path:string` (`context_fs.go:31`); mit `{ bytes: true }` kommen Bytes statt String zurück. + +```js title="fs.readFile – Beispiel" +;(function () { + const content = context.fs.readFile("snippets/hint.txt") + throw { status: 200, json: { content: content } } +})() +``` + +**Fehlerfall (Error):** Ohne Pfad: `missing path in fs.readFile function` mit Status `500`; eine fehlende Datei liefert ebenfalls Status `500` mit `$.error` — beides belegt in `context_fs_test.go:109` („error - missing path"). + +### fs.writeFile + +**Signatur:** `fs.writeFile(path: string, data: string | []byte): void` — aus `// args: path:string data:[]bytes|string` (`context_fs.go:79`). + +```js title="fs.writeFile – Beispiel" +;(function () { + context.fs.writeFile("tmp/note.txt", "Hallo Hook") + const back = context.fs.readFile("tmp/note.txt") + context.fs.remove("tmp/note.txt") + throw { status: 200, json: { content: back } } +})() +``` + +**Fehlerfall (Error):** Ohne Daten: `missing data in fs.writeFile function` (`context_fs.go:85`); ein Pfad außerhalb des Config-Verzeichnisses scheitert in `CleanFilePath` mit einem Error `... in fs.writeFile`. + +### fs.stat + +**Signatur:** `fs.stat(path: string): object` — aus `// args: path:string` (`context_fs.go:120`). Antwortet mit `{ name, isDir, size, modTime }`. + +```js title="fs.stat – Beispiel" +;(function () { + const info = context.fs.stat("tmp/note.txt") + throw { status: 200, json: { name: info.name, size: info.size } } +})() +``` + +**Fehlerfall (Error):** Fehlende Datei: Error `... in fs.stat` aus `os.Stat` (`context_fs.go:147`); ohne Pfad: `missing path in fs.stat function`. + +### fs.readDir + +**Signatur:** `fs.readDir(path: string): Array` — aus `// args: path:string` (`context_fs.go:158`). Liefert pro Eintrag `{ name, isDir, size, modTime }`. + +```js title="fs.readDir – Beispiel" +;(function () { + const files = context.fs.readDir("tmp") + throw { status: 200, json: { count: files.length, files: files } } +})() +``` + +**Fehlerfall (Error):** Unbekanntes Verzeichnis: Error `... in fs.readDir` aus `os.ReadDir` (`context_fs.go:182`); ohne Pfad: `missing path in fs.readDir function`. + +### fs.mkDir + +**Signatur:** `fs.mkDir(path: string): void` — aus `// args: path:string` (`context_fs.go:203`). Nutzt `MkdirAll`, legt also auch fehlende Elternverzeichnisse an. + +```js title="fs.mkDir – Beispiel" +;(function () { + context.fs.mkDir("tmp/export") + context.fs.writeFile("tmp/export/a.txt", "eins") + throw { status: 200, json: { created: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Pfad: `missing path in fs.mkDir function` (`context_fs.go:206`). + +### fs.remove + +**Signatur:** `fs.remove(path: string): void` — aus `// args: path:string` (`context_fs.go:230`). + +```js title="fs.remove – Beispiel" +;(function () { + context.fs.writeFile("tmp/alt.txt", "weg") + context.fs.remove("tmp/alt.txt") + throw { status: 200, json: { removed: true } } +})() +``` + +**Fehlerfall (Error):** Fehlende Datei: Error `... in fs.remove` aus `os.Remove` (`context_fs.go:251`); ohne Pfad: `missing path in fs.remove function`. + +### fs.copy + +**Signatur:** `fs.copy(src: string, dest: string): void` — aus `// args: src:string dest:string` (`context_fs.go:257`). + +```js title="fs.copy – Beispiel" +;(function () { + context.fs.copy("tmp/export/a.txt", "tmp/export/b.txt") + throw { status: 200, json: { copied: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Quelle: `missing src in fs.copy function`, ohne Ziel: `missing dest in fs.copy function` (`context_fs.go:260`). + +Weiter: [Hook-Kontexte](/reference/hook-kontexte/) als Paket-Index, [Hooks schreiben](/projekt/hooks-schreiben/) für Lifecycle und Starter-Muster. + +Verifiziert am 68b42785 2026-10-16 (tibi-server) diff --git a/src/content/docs/reference/hooks-medien.md b/src/content/docs/reference/hooks-medien.md new file mode 100644 index 0000000..a996ca5 --- /dev/null +++ b/src/content/docs/reference/hooks-medien.md @@ -0,0 +1,84 @@ +--- +title: 'Hook-Referenz: Templates und Medien' +description: 'tpl, image und pdf im Hook-JS: Signaturen aus internal/hook, je ein Beispiel und je ein belegter Fehlerfall.' +--- + +In Hooks sprichst du diese drei Pakete über `context` an, z. B. `context.tpl.execute(...)` oder `context.pdf.fromHTML(...)`. Die Signaturen stammen aus den `// args:`- bzw. `// JS signature:`-Kommentaren in `internal/hook/context_*.go` im tibi-server; wo so ein Kommentar fehlt, ist die Signatur aus Funktionsrumpf und Options-Auswertung abgeleitet und entsprechend markiert. Jede Funktion zeigt genau einen Fehlerfall mit dem originalen Error-Text aus dem Code (Status-Code aus den Hook-Tests, meist `500`). + +## tpl – Templates rendern + +Quelle: `context_tpl.go`, registriert per `RegisterPackageFunctions("tpl", ...)` mit `execute`. Rendert Pongo2-Templates (Django/Jinja2-Syntax); übergebene Funktionen in `contextData` bleiben aufrufbar (`WrapFunctions`). + +### tpl.execute + +**Signatur:** `tpl.execute(code: string, contextData?: object): string` — aus `// args: code:string, contextData:map[string]interface{}` (`context_tpl.go:17`). `contextData` ist optional; ohne Daten renderst du statischen Text. + +```js title="tpl.execute – Beispiel" +;(function () { + const html = context.tpl.execute("Hallo {{ name }}! Du hast {{ count }} Nachrichten.", { + name: "John", + count: 5 + }) + throw { status: 200, json: { html: html } } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Code brichst du mit `missing code in tpl.execute function` ab (`context_tpl.go:20`); ein `contextData` vom falschen Typ meldet `contextData must be object in tpl.execute function` (`context_tpl.go:34`). Der erste Fall ist durch Tests belegt und endet mit Status `500` (`error - missing code`, `context_tpl_test.go:78`). + +## image – Bilder verarbeiten + +Quelle: `context_image.go`, registriert per `RegisterPackageFunctions("image", ...)` mit `filter`. Beide Pfade werden per `CleanFilePath` gegen das Config-Verzeichnis aufgelöst. Die Funktion gibt nichts zurück (`nil`). + +### image.filter + +**Signatur:** `image.filter(sourceFilename: string, targetFilename: string, filters: Array<object>): void` — aus `// args: sourceFilename:string targetFilename:string filters:[]interface{}` (`context_image.go:18`). Jedes Filter-Objekt ist optional bestückt: `width`, `height`, `fit`, `fill`, `resampling`, `anchor`, `brightness`, `saturation`, `contrast`, `gamma`, `blur`, `sharpen`, `invert`, `grayscale`, `quality`, `lossless`, `skipLargerDimension`, `skipLargerFilesize`, `outputType`. + +```js title="image.filter – Beispiel" +;(function () { + context.image.filter("uploads/foto.jpg", "uploads/foto-klein.webp", [ + { width: 800, fit: true, quality: 80, outputType: "webp" } + ]) + throw { status: 200, json: { filtered: true } } +})() +``` + +**Fehlerfall (Error):** Weniger als drei Argumente: `missing sourceFile, targetFile and filters in image.filter function` (`context_image.go:43`); ein leeres Filter-Array: `filters is empty array in image.filter function` (`context_image.go:73`); ein Filter-Eintrag, der kein Objekt ist: `filter index %d is not an object in image.filter function` (`context_image.go:236`). + +## pdf – PDFs erzeugen und bearbeiten + +Quelle: `context_pdf.go`, registriert per `RegisterPackageFunctions("pdf", ...)` mit `fromHTML`, `cpu`. Beide Funktionen liefern PDF-Bytes zurück. + +### pdf.fromHTML + +**Signatur (abgeleitet):** `pdf.fromHTML(html: string, options?: object): bytes` — kein `args:`-Kommentar (nur `// get request object`, `context_pdf.go:28`), abgeleitet aus dem Rumpf (`context_pdf.go:29`): `html` ist Pflicht, `options` optional. `options` kennt unter anderem `orientation` (`Portrait` oder `Landscape`), `marginTop`, `marginBottom`, `marginLeft`, `marginRight`, `dpi`, `title`, `headerHTML`, `footerHTML` und `printMediaType`. + +```js title="pdf.fromHTML – Beispiel" +;(function () { + const pdfBytes = context.pdf.fromHTML("<html><body><h1>Report</h1></body></html>", { + orientation: "Portrait", + marginTop: 10, + title: "Report" + }) + throw { status: 200, bytes: pdfBytes } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne HTML: `missing html in pdf.fromHTML` (`context_pdf.go:31`); ein `orientation`-Wert ungleich `Portrait`/`Landscape`: `orientation is not Portrait or Landscape` (`context_pdf.go:152`). + +### pdf.cpu + +**Signatur (abgeleitet):** `pdf.cpu(command: string, pdfData: bytes | Array<bytes> | object, options?: object): bytes` — kein `args:`-Kommentar, abgeleitet aus dem Rumpf (`context_pdf.go:249`). Kommandos: `create`, `rotate`, `merge`, `stamp`, `watermark`; `merge` nimmt ein Byte-Array, `create` zusätzlich ein JSON-Objekt als Bauplan. Wichtige `options`: `rotation` (Integer-Literal, für `rotate` — goja übergibt Ganzzahlen als `int64`, Fließkomma wie `90.0` scheitert mit `rotation option must be integer in pdf.cpu`), `pages` (Array), `mode` (`text`, `image` oder `pdf` für `stamp`/`watermark`), `text`, `bytes`, `file`, `description`. + +```js title="pdf.cpu – Beispiel" +;(function () { + const base = context.pdf.fromHTML("<html><body><h1>Hi</h1></body></html>") + const rotated = context.pdf.cpu("rotate", base, { rotation: 90 }) + throw { status: 200, bytes: rotated } +})() +``` + +**Fehlerfall (Error):** Aufruf ohne Kommando: `missing command in pdf.cpu` (`context_pdf.go:251`); ohne PDF-Daten: `missing pdf input in pdf.cpu` (`context_pdf.go:254`); ein unbekanntes Kommando meldet `<command> is unkown command in pdf.cpu` — so wörtlich im Code, inklusive Tippfehler (`context_pdf.go:446`). + +Weiter: [Hook-Kontexte](/reference/hook-kontexte/) als Paket-Index, [Hooks schreiben](/projekt/hooks-schreiben/) für Lifecycle und Starter-Muster. + +Verifiziert am 68b42785 2026-10-16 (tibi-server) diff --git a/src/content/docs/reference/hooks-meta.md b/src/content/docs/reference/hooks-meta.md new file mode 100644 index 0000000..30410cb --- /dev/null +++ b/src/content/docs/reference/hooks-meta.md @@ -0,0 +1,173 @@ +--- +title: 'Hook-Referenz: Formate und Diagnose' +description: 'base64, json, xml, charset und debug im Hook-JS: Signaturen aus internal/hook, je ein Beispiel und je ein belegter Fehlerfall.' +--- + +In Hooks sprichst du diese fünf Pakete über `context` an, z. B. `context.base64.encode(...)` oder `context.json.parse(...)`. Die Signaturen stammen aus den `// args:`-Kommentaren in `internal/hook/context_*.go` im tibi-server; wo so ein Kommentar fehlt, ist die Signatur aus Funktionsrumpf und `_test`-Datei abgeleitet und entsprechend markiert. Jede Funktion zeigt genau einen Fehlerfall mit dem originalen Error-Text aus Code oder Tests (Status-Code aus den Hook-Tests, meist `500`). + +## base64 – Binärdaten als Text + +Quelle: `context_base64.go`, registriert per `RegisterPackageFunctions("base64", ...)` mit `encode`, `decode`. + +### base64.encode + +**Signatur:** `base64.encode(data: string | []byte | []interface{}): string` — aus `// args: data:string|[]byte|[]interface{}` (`context_base64.go:17`). Nimmt einen String, Bytes oder ein JS-Zahlenarray und liefert Standard-Base64. + +```js title="base64.encode – Beispiel" +;(function () { + const encoded = context.base64.encode("Hallo Welt") + throw { status: 200, json: { encoded: encoded } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument brichst du mit `missing data in base64.encode function` ab (`context_base64.go:20`), belegt mit Status `500` (`error - missing data in encode`, `context_base64_test.go:94`). + +### base64.decode + +**Signatur:** `base64.decode(encoded: string, options?: { returnBytes?: boolean }): string | []byte` — aus `// args: encoded:string, options:map[string]interface{}` mit `returnBytes:bool` (`context_base64.go:53`). Ohne Option kommt ein String zurück, mit `{ returnBytes: true }` Bytes. + +```js title="base64.decode – Beispiel" +;(function () { + const text = context.base64.decode("SGVsbG8gV2VsdA==") + throw { status: 200, json: { text: text } } +})() +``` + +**Fehlerfall (Error):** Ein ungültiger Base64-String scheitert mit `invalid base64 string in base64.decode function` (`context_base64.go:86`), belegt mit Status `500` (`error - invalid base64 string`, `context_base64_test.go:105`). + +## json – Parsen und Erzeugen + +Quelle: `context_json.go`, registriert per `RegisterPackageFunctions("json", ...)` mit `parse`, `stringify`. + +### json.parse + +**Signatur:** `json.parse(str: string): any` — aus `// args: str:string` (`context_json.go:17`). Wandelt einen JSON-String in ein JS-Objekt um. + +```js title="json.parse – Beispiel" +;(function () { + const obj = context.json.parse('{"name":"Test","wert":42}') + throw { status: 200, json: { name: obj.name, wert: obj.wert } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument meldet der Code `invalid number of arguments` (`context_json.go:20`), belegt mit Status `500` (`error - parse missing argument`, `context_json_test.go:104`). + +### json.stringify + +**Signatur:** `json.stringify(obj: any): string` — aus `// args: obj:any` (`context_json.go:35`). Wandelt ein JS-Objekt in einen JSON-String um. + +```js title="json.stringify – Beispiel" +;(function () { + const str = context.json.stringify({ name: "Test", wert: 42 }) + throw { status: 200, json: { str: str } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument meldet der Code `invalid number of arguments` (`context_json.go:38`); ein nicht serialisierbares Objekt reicht den Marshal-Error durch. + +## xml – Erzeugen und Parsen + +Quelle: `context_xml.go`, registriert per `RegisterPackageFunctions("xml", ...)` mit `create`, `parse`. + +### xml.create + +**Signatur:** `xml.create(data: object, options?: { rootElement?: string, includeHeader?: boolean }): string` — aus dem `// args:`-Block mit `data: map`, `rootElement: string` und `includeHeader: bool` (`context_xml.go:19`). Mit `includeHeader: true` stellst du `<?xml version="1.0" encoding="UTF-8"?>` voran. + +```js title="xml.create – Beispiel" +;(function () { + const out = context.xml.create({ user: { name: "Anna", ort: "Berlin" } }) + throw { status: 200, json: { xml: out } } +})() +``` + +**Fehlerfall (Error):** Ohne Daten brichst du mit `missing data in xml.create function` ab (`context_xml.go:27`), belegt mit Status `500` (`xml creation error - missing data`, `context_xml_test.go:61`). + +### xml.parse + +**Signatur:** `xml.parse(xml: string, options?: object): object` — aus `// args: xml:string options:map[string]interface{}` (`context_xml.go:110`). Attribute landen unter `-`-Präfix (z. B. `"-id"`). + +```js title="xml.parse – Beispiel" +;(function () { + const obj = context.xml.parse("<root><name>Anna</name></root>") + throw { status: 200, json: { name: obj.root.name } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument brichst du mit `missing xml string in xml.parse function` ab (`context_xml.go:113`), belegt mit Status `500` (`xml parsing error - missing xml`, `context_xml_test.go:190`). + +## charset – Fremde Zeichensätze dekodieren + +Quelle: `context_charset.go`, registriert per `RegisterPackageFunctions("charset", ...)` mit `decode`, `iso8859ToUtf8`. + +### charset.decode + +**Signatur:** `charset.decode(input: string | []byte | []int64, encoding: string): string` — aus `// args: input:string|[]byte|[]int64, encoding:string` (`context_charset.go:118`). Versteht `utf-8`, `iso-8859-1`/`latin1` sowie alle Labels aus `htmlindex` (z. B. `windows-1252`, `shift_jis`); UTF-8 mit BOM wird entstückt. + +```js title="charset.decode – Beispiel" +;(function () { + const text = context.charset.decode([228, 246, 252], "iso-8859-1") + throw { status: 200, json: { text: text } } +})() +``` + +**Fehlerfall (Error):** Ungültige UTF-8-Bytes scheitern mit `invalid utf-8 bytes in charset.decode` (Error-String `invalid utf-8 bytes` in `context_charset.go:86`), belegt mit Status `500` (`decode utf8 invalid bytes`, `context_charset_test.go:133`). + +### charset.iso8859ToUtf8 + +**Signatur:** `charset.iso8859ToUtf8(iso8859: string | []byte | []int64): string` — aus `// args: iso8859:string` (`context_charset.go:60`). Kurzform für den häufigsten Altbestand-Fall (entspricht `decode` mit `iso-8859-1`). + +```js title="charset.iso8859ToUtf8 – Beispiel" +;(function () { + const text = context.charset.iso8859ToUtf8([72, 228]) + throw { status: 200, json: { text: text } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument brichst du mit `missing iso8859 string in charset.iso8859ToUtf8` ab (`context_charset.go:63`), belegt mit Status `500` (`error missing arg`, `context_charset_test.go:155`). + +## debug – Dump, Trace und Pause + +Quelle: `context_debug.go`, registriert per `RegisterPackageFunctions("debug", ...)` mit `dump`, `sentryTraceId`, `sleep`. + +### debug.dump + +**Signatur:** `debug.dump(toDump?: any): void` — aus `// args: toDump:any` (`context_debug.go:21`). Schreibt die Argumente per `spew` auf die Server-Konsole und gibt immer `null` zurück. + +```js title="debug.dump – Beispiel" +;(function () { + context.debug.dump({ hinweis: "Stand prüfen", wert: 42 }) + throw { status: 200, json: { message: "dump completed" } } +})() +``` + +**Fehlerfall:** Kein Fehlerfall — `dump` nimmt beliebige (auch keine) Argumente und liefert stets ohne Beanstandung zurück (`context_debug.go:49`, dokumentierte Abwesenheit, kein Versäumnis). + +### debug.sentryTraceId + +**Signatur (abgeleitet):** `debug.sentryTraceId(): string` — kein `args:`-Kommentar, nur `// get sentry trace_id` (`context_debug.go:52`); aus Rumpf (`FuncDebugSentryTraceId`, `context_debug.go:53`) und Hook-Kontext abgeleitet. Liefert die Sentry-Trace-ID der laufenden Transaktion oder einen leeren String ohne Transaktion. + +```js title="debug.sentryTraceId – Beispiel" +;(function () { + const traceId = context.debug.sentryTraceId() + throw { status: 200, json: { traceId: traceId } } +})() +``` + +**Fehlerfall (Error):** Außerhalb von Hooks (kein Hook-Kontext) scheitert der Aufruf mit `sentry functions are only valid in hooks` (`context_debug.go:55`). + +### debug.sleep + +**Signatur:** `debug.sleep(duration: int): void` — aus `// args: duration:int` (`context_debug.go:68`). Hält den Hook für `duration` Millisekunden an; nur für Diagnose gedacht. + +```js title="debug.sleep – Beispiel" +;(function () { + context.debug.sleep(50) + throw { status: 200, json: { slept: true } } +})() +``` + +**Fehlerfall (Error):** Ohne genau ein Argument meldet der Code `sleep function requires 1 argument` (`context_debug.go:71`), belegt mit Status `500` (`error - sleep missing argument`, `context_debug_test.go:44`). + +Weiter: [Hook-Kontexte](/reference/hook-kontexte/) als Paket-Index, [Hook-Referenz: Daten](/reference/hooks-daten/) für db, cache, request, response und fs. + +Verifiziert am 68b42785 2026-10-16 (tibi-server) diff --git a/src/content/docs/reference/hooks-netze.md b/src/content/docs/reference/hooks-netze.md new file mode 100644 index 0000000..c6aa5bf --- /dev/null +++ b/src/content/docs/reference/hooks-netze.md @@ -0,0 +1,191 @@ +--- +title: 'Hook-Referenz: Netze und Nachrichten' +description: 'http, smtp, channel und ratelimit im Hook-JS: Signaturen aus internal/hook, je ein Beispiel und je ein belegter Fehlerfall.' +--- + +In Hooks sprichst du diese vier Pakete über `context` an, z. B. für einen Fetch-Request oder den Mail-Versand. Die Signaturen stammen aus den `// args:`- bzw. `// JS signature:`-Kommentaren in `internal/hook/context_*.go` im tibi-server; alle vier Pakete sind dort lückenlos kommentiert, keine Signatur musste abgeleitet werden. Jede Funktion zeigt genau einen Fehlerfall mit dem originalen Error-Text aus Code oder Tests. + +## http – Externe Requests absetzen + +Quelle: `context_http.go`, registriert per `RegisterPackageFunctions("http", ...)` mit `fetch`, `fetchStream`. Beide teilen sich die Argumentprüfung in `parseHTTPArgs`; `fetch` liest den Body vollständig ein (Timeout-Default `10000` ms), `fetchStream` liefert einen zeilenweisen Reader für SSE und Streaming (Timeout-Default `0`, also kein Timeout). + +### http.fetch + +**Signatur:** `http.fetch(url: string, options?: { method?: string, headers?: object, body?: string, timeout?: number }): object` — aus `// args: url:string, options:map[string]interface{}` (`context_http.go:124`). Antwortet mit `{ headers, status, statusText, trailer, url, body: { text(), json() } }`; `body.json()` wirft bei ungültigem JSON den Parser-Error als JS-Exception. + +```js title="http.fetch – Beispiel" +;(function () { + const res = context.http.fetch("https://api.example.com/content", { + method: "GET", + headers: { Accept: "application/json" }, + timeout: 5000 + }) + throw { status: 200, json: { status: res.status, data: res.body.json() } } +})() +``` + +**Fehlerfall (Error):** Ohne URL brichst du mit `missing url in http.fetch function` ab (`context_http.go:37`); eine URL vom falschen Typ liefert `url must be string in http.fetch function` (`context_http.go:45`), belegt durch die Test-Assertions auf beide Texte (`context_http_test.go:432`, `context_http_test.go:442`). + +### http.fetchStream + +**Signatur:** `http.fetchStream(url: string, options?: { method?: string, headers?: object, body?: string, timeout?: number }): object` — aus `// args: url:string, options:map[string]interface{}` (`context_http.go:186`). Antwortet mit `{ headers, status, statusText, body: { read(), close() } }`; `read()` liefert die nächste Zeile als String oder `null` bei EOF und schließt dann automatisch. + +```js title="http.fetchStream – Beispiel" +;(function () { + const res = context.http.fetchStream("https://api.example.com/events", { + headers: { Accept: "text/event-stream" } + }) + const first = res.body.read() + res.body.close() + throw { status: 200, json: { status: res.status, first: first } } +})() +``` + +**Fehlerfall (Error):** Ohne URL brichst du mit `missing url in http.fetchStream function` ab (`context_http.go:37`); `options` als String statt Objekt scheitert mit `options must be object in http.fetchStream function` (`context_http.go:52`), belegt durch die Test-Assertion auf diesen Text (`context_http_test.go:452`). + +## smtp – Mails versenden + +Quelle: `context_smtp.go`, registriert per `RegisterPackageFunctions("smtp", ...)` mit `sendMail`. Der Versand nutzt den Server-Mail-Host aus der Config oder einen per `host`, `username` und `password` übergebenen Host. Beachte: Die Error-Texte nennen wörtlich `mail.send`, obwohl das Paket in JS `smtp` heißt — Altlast-Namensrest im Server-Code, kein Alias. + +### smtp.sendMail + +**Signatur:** `smtp.sendMail(options: { to: string | Array, cc?: string | Array, bcc?: string | Array, from: string, fromName?: string, replyTo?: string, subject?: string, plain?: string, html?: string, attach?: string | Array, host?: string, username?: string, password?: string }): void` — aus `// args: options:map[string]interface{}` (`context_smtp.go:23`). Gibt bei Erfolg `null` zurück; Anhänge sind Pfade im Config-Verzeichnis. + +```js title="smtp.sendMail – Beispiel" +;(function () { + context.smtp.sendMail({ + to: "redaktion@example.com", + from: "noreply@example.com", + fromName: "Tibi CMS", + subject: "Neuer Beitrag", + plain: "Ein neuer Beitrag wartet auf Freigabe." + }) + throw { status: 200, json: { sent: true } } +})() +``` + +**Fehlerfall (Error):** Ohne `options` scheitert der Aufruf mit `missing options in mail.send function` (`context_smtp.go:37`); ohne Empfänger meldet der Code `missing or invalid to in options of mail.send function` (`context_smtp.go:76`), ohne Absender `missing or invalid from in options of mail.send function` (`context_smtp.go:117`) — beides belegt in `context_smtp_test.go:77` („error - missing options") und `context_smtp_test.go:88` („error - missing from"). + +## channel – Realtime-Nachrichten + +Quelle: `context_channel.go`, registriert per `RegisterPackageFunctions("channel", ...)` mit `subscribe`, `send`. `subscribe` blockiert per `receive()`, bis eine Nachricht eintrifft, der Client trennt (`null`) oder die Subscription geschlossen wird (Exception mit Code `channel_closed`); der Hook-Timeout wird dafür deaktiviert. + +### channel.subscribe + +**Signatur:** `channel.subscribe(name: string, options?: { bufferSize?: number, onFull?: string, messageTTL?: number, lastN?: number, maxAge?: number }): { receive(), close() }` — aus `// JS signature: channel.subscribe(name: string, options?: object): Subscription` (`context_channel.go:21`). + +```js title="channel.subscribe – Beispiel" +;(function () { + const sub = context.channel.subscribe("news", { lastN: 10 }) + const msg = sub.receive() + sub.close() + throw { status: 200, json: { message: msg } } +})() +``` + +**Fehlerfall (Error):** Außerhalb von Hooks (in Jobs) scheitert der Aufruf mit `channel.subscribe is only available in hooks, not in jobs` (`context_channel.go:29`); ohne Kanalnamen meldet der Code `channel.subscribe requires a channel name` (`context_channel.go:38`). + +### channel.send + +**Signatur:** `channel.send(name: string, data: any): void` — aus `// JS signature: channel.send(name: string, data: any): void` (`context_channel.go:109`). Publiziert an alle Subscriber des Kanals. + +```js title="channel.send – Beispiel" +;(function () { + context.channel.send("news", { title: "Eilmeldung", active: true }) + throw { status: 200, json: { sent: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Kanalnamen und Daten scheitert der Aufruf mit `channel.send requires a channel name and data` (`context_channel.go:117`); ein leerer Kanalname liefert `channel.send: channel name must be a non-empty string` (`context_channel.go:121`). + +## ratelimit – Backoff und Sliding Window + +Quelle: `context_ratelimit.go`, registriert per `RegisterPackageFunctions("ratelimit", ...)` mit `backoffCheck`, `backoffRecord`, `backoffReset`, `windowCheck`, `windowReset`, `windowCount`. Alle sechs Funktionen brauchen denselben `key` (nicht-leerer String) und einen verfügbaren Limiter. + +### ratelimit.backoffCheck + +**Signatur:** `ratelimit.backoffCheck(key: string): { blocked: boolean, retryAfterMs: number }` — aus `// JS signature: ratelimit.backoffCheck(key: string): { blocked: boolean, retryAfterMs: number }` (`context_ratelimit.go:41`). + +```js title="ratelimit.backoffCheck – Beispiel" +;(function () { + const state = context.ratelimit.backoffCheck("login:mailer@example.com") + if (state.blocked) { + throw { status: 429, json: { retryAfterMs: state.retryAfterMs } } + } + throw { status: 200, json: { blocked: false } } +})() +``` + +**Fehlerfall (Error):** Ohne Schlüssel scheitert der Aufruf mit `ratelimit: key argument required` (`context_ratelimit.go:30`); ohne verfügbaren Limiter meldet der Code `ratelimit: limiter not available` (`context_ratelimit.go:23`). + +### ratelimit.backoffRecord + +**Signatur:** `ratelimit.backoffRecord(key: string): void` — aus `// JS signature: ratelimit.backoffRecord(key: string): void` (`context_ratelimit.go:59`). Zeichnet einen Fehlversuch auf und verschärft das exponentielle Backoff. + +```js title="ratelimit.backoffRecord – Beispiel" +;(function () { + context.ratelimit.backoffRecord("login:mailer@example.com") + throw { status: 200, json: { recorded: true } } +})() +``` + +**Fehlerfall (Error):** Ein leerer Schlüssel scheitert mit `ratelimit: key must be a non-empty string` (`context_ratelimit.go:34`). + +### ratelimit.backoffReset + +**Signatur:** `ratelimit.backoffReset(key: string): void` — aus `// JS signature: ratelimit.backoffReset(key: string): void` (`context_ratelimit.go:74`). Setzt den Backoff-Zähler zurück, z. B. nach erfolgreichem Login. + +```js title="ratelimit.backoffReset – Beispiel" +;(function () { + context.ratelimit.backoffReset("login:mailer@example.com") + throw { status: 200, json: { reset: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Schlüssel scheitert der Aufruf mit `ratelimit: key argument required` (`context_ratelimit.go:30`). + +### ratelimit.windowCheck + +**Signatur:** `ratelimit.windowCheck(key: string): { allowed: boolean, retryAfterMs: number }` — aus `// JS signature: ratelimit.windowCheck(key: string): { allowed: boolean, retryAfterMs: number }` (`context_ratelimit.go:89`). Zählt den Aufruf als Hit und prüft das Sliding Window in einem Schritt. + +```js title="ratelimit.windowCheck – Beispiel" +;(function () { + const check = context.ratelimit.windowCheck("api:mailer@example.com") + if (!check.allowed) { + throw { status: 429, json: { retryAfterMs: check.retryAfterMs } } + } + throw { status: 200, json: { allowed: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Schlüssel scheitert der Aufruf mit `ratelimit: key argument required` (`context_ratelimit.go:30`); ohne verfügbaren Limiter meldet der Code `ratelimit: limiter not available` (`context_ratelimit.go:23`). + +### ratelimit.windowReset + +**Signatur:** `ratelimit.windowReset(key: string): void` — aus `// JS signature: ratelimit.windowReset(key: string): void` (`context_ratelimit.go:107`). Setzt das Sliding Window für den Schlüssel zurück. + +```js title="ratelimit.windowReset – Beispiel" +;(function () { + context.ratelimit.windowReset("api:mailer@example.com") + throw { status: 200, json: { reset: true } } +})() +``` + +**Fehlerfall (Error):** Ohne Schlüssel scheitert der Aufruf mit `ratelimit: key argument required` (`context_ratelimit.go:30`). + +### ratelimit.windowCount + +**Signatur:** `ratelimit.windowCount(key: string): number` — aus `// JS signature: ratelimit.windowCount(key: string): number` (`context_ratelimit.go:122`). Liefert die aktuelle Trefferzahl im Fenster, ohne zu zählen. + +```js title="ratelimit.windowCount – Beispiel" +;(function () { + const n = context.ratelimit.windowCount("api:mailer@example.com") + throw { status: 200, json: { hits: n } } +})() +``` + +**Fehlerfall (Error):** Ohne Schlüssel scheitert der Aufruf mit `ratelimit: key argument required` (`context_ratelimit.go:30`). + +Weiter: [Hook-Kontexte](/reference/hook-kontexte/) als Paket-Index, [Hooks schreiben](/projekt/hooks-schreiben/) für Lifecycle und Starter-Muster. + +Verifiziert am 68b42785 2026-10-16 (tibi-server) diff --git a/src/content/docs/reference/hooks-sicherheit.md b/src/content/docs/reference/hooks-sicherheit.md new file mode 100644 index 0000000..f4ee664 --- /dev/null +++ b/src/content/docs/reference/hooks-sicherheit.md @@ -0,0 +1,209 @@ +--- +title: 'Hook-Referenz: Sicherheit und Identität' +description: 'jwt, user, bcrypt, crypto, cookie, exec und config im Hook-JS: Signaturen aus internal/hook, je ein Beispiel und je ein belegter Fehlerfall.' +--- + +In Hooks sprichst du diese sieben Pakete über `context` an, zum Beispiel zum Token-Erstellen, Passwort-Hashen oder Cookie-Setzen. Die Signaturen stammen aus den `// args:`-Kommentaren in `internal/hook/context_*.go` im tibi-server; wo so ein Kommentar fehlt, ist die Signatur aus dem Funktionsrumpf abgeleitet und entsprechend markiert. Jede Funktion zeigt genau einen Fehlerfall mit dem originalen Error-Text aus Code oder Tests (Hook-Fehler enden im Test mit Status `500`). + +## jwt – Tokens erstellen und prüfen + +Quelle: `context_jwt.go`, registriert per `RegisterPackageFunctions("jwt", ...)` mit `create` und `parse`. Ohne `secret`-Option nutzt der Server ein zufälliges Temporär-Secret (`jwtTempSecret`, `context_jwt.go:21`). + +### jwt.create + +**Signatur:** `jwt.create(claims: object, options?: { validityDuration?: number, secret?: string }): string` — aus `// args: claims:map[string]interface{}, options:map[string]interface{}` (`context_jwt.go:27`). `validityDuration` setzt `exp` auf jetzt plus Sekunden. + +```js title="jwt.create – Beispiel" +;(function () { + const token = context.jwt.create({ sub: "user123", role: "admin" }, { validityDuration: 3600 }) + throw { status: 200, json: { token: token } } +})() +``` + +**Fehlerfall (Error):** Ohne Claims brichst du mit `missing claims in jwt.create function` ab, Status `500` (`error - missing claims`, `context_jwt_test.go:109`); Claims als String statt Objekt: `claims must be object in jwt.create function` (`context_jwt.go:42`). + +### jwt.parse + +**Signatur:** `jwt.parse(token: string, options?: { secret?: string }): object` — aus `// args: token:string, options:map[string]interface{}` (`context_jwt.go:84`). Antwortet mit `{ valid, claims, header, method, error? }` und wirft bei ungültigen Tokens keinen Error: falsches Secret oder abgelaufenes Token liefern `valid: false` plus `error`-Text bei Status `200`. + +```js title="jwt.parse – Beispiel" +;(function () { + const token = context.jwt.create({ sub: "user123" }, { secret: "s3cr3t" }) + const res = context.jwt.parse(token, { secret: "s3cr3t" }) + throw { status: 200, json: { valid: res.valid } } +})() +``` + +**Fehlerfall (Error):** Ohne Token: `missing token in jwt.parse function`, Status `500` (`error - missing token`, `context_jwt_test.go:120`); Token als Nicht-String: `token must be string in jwt.parse function` (`context_jwt.go:96`). + +## user – Aktuellen Login lesen + +Quelle: `context_user.go`, registriert per `RegisterPackageFunctions("user", ...)` mit `auth`. Liefert `{ id, username, role, permissions }` oder `null` ohne Login. + +### user.auth + +**Signatur (abgeleitet):** `user.auth(): object | null` — kein `args:`-Kommentar, abgeleitet aus dem Rumpf `FuncUserAuth` (`context_user.go:16`): nimmt keine Argumente und liest den API-Kontext. + +```js title="user.auth – Beispiel" +;(function () { + const me = context.user.auth() + throw { status: 200, json: { login: me !== null, name: me && me.username } } +})() +``` + +**Fehlerfall (Error):** Außerhalb von Hooks (ohne API-Kontext) scheitert der Aufruf mit `user.auth is only valid in hooks` (`context_user.go:19`); ohne Login bekommst du `null` zurück, keinen Error (`auth not logged in`, `context_user_test.go:44`). + +## bcrypt – Passwörter hashen und prüfen + +Quelle: `context_bcrypt.go`, registriert per `RegisterPackageFunctions("bcrypt", ...)` mit `hash` und `check`. + +### bcrypt.hash + +**Signatur:** `bcrypt.hash(password: string, options?: { cost?: number }): string` — aus `// args: password:string, options:map[string]interface{}` (`context_bcrypt.go:18`); Standard-`cost` ist `14`. + +```js title="bcrypt.hash – Beispiel" +;(function () { + const hash = context.bcrypt.hash("s3cr3t-pw") + throw { status: 200, json: { hash: hash } } +})() +``` + +**Fehlerfall (Error):** Ohne Passwort: `missing password in bcrypt.hash function`, Status `500` (`error - missing password`, `context_bcrypt_test.go:91`); falscher `cost`-Typ: `invalid type for costs in bcrypt.hash function` — so wörtlich im Code, mit Plural-s (`context_bcrypt.go:42`). + +### bcrypt.check + +**Signatur:** `bcrypt.check(password: string, hash: string): boolean` — aus `// args: password:string, hash:string` (`context_bcrypt.go:56`). Ein falsches Passwort liefert `false`, keinen Error. + +```js title="bcrypt.check – Beispiel" +;(function () { + const hash = context.bcrypt.hash("s3cr3t-pw") + const ok = context.bcrypt.check("s3cr3t-pw", hash) + throw { status: 200, json: { match: ok } } +})() +``` + +**Fehlerfall (Error):** Weniger als zwei Argumente: `missing password and/or hash in bcrypt.check function`, Status `500` (`error - missing args in check`, `context_bcrypt_test.go:102`). + +## crypto – Hashes bilden + +Quelle: `context_crypto.go`, registriert per `RegisterPackageFunctions("crypto", ...)` mit `sha256` und `md5`. Das sind Einweg-Hashes für Prüfsummen, kein Passwort-Hashing — dafür nimmst du das bcrypt-Paket. + +### crypto.sha256 + +**Signatur:** `crypto.sha256(text: string): string` — aus `// args: string:string` (`context_crypto.go:19`). Liefert Hex, belegt mit `"hello"` → `2cf24dba…9824` in `context_crypto_test.go:22`. + +```js title="crypto.sha256 – Beispiel" +;(function () { + const sum = context.crypto.sha256("hello") + throw { status: 200, json: { sha256: sum } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument: `missing string in crypto.sha256 function`, Status `500` (`error - sha256 missing argument`, `context_crypto_test.go:77`). + +### crypto.md5 + +**Signatur:** `crypto.md5(text: string): string` — aus `// args: string:string` (`context_crypto.go:33`). Liefert Hex, belegt mit `"hello"` → `5d41402a…c592` in `context_crypto_test.go:44`. + +```js title="crypto.md5 – Beispiel" +;(function () { + const sum = context.crypto.md5("hello") + throw { status: 200, json: { md5: sum } } +})() +``` + +**Fehlerfall (Error):** Ohne Argument: `missing string in crypto.md5 function`, Status `500` (`error - md5 missing argument`, `context_crypto_test.go:88`). + +## cookie – Cookies lesen und setzen + +Quelle: `context_cookie.go`, registriert per `RegisterPackageFunctions("cookie", ...)` mit `get` und `set`. Beide brauchen einen Hook-HTTP-Kontext. + +### cookie.get + +**Signatur:** `cookie.get(name: string): string` — aus `// args: name:string` (`context_cookie.go:17`). Unbekannte Cookies liefern `""`, keinen Error. + +```js title="cookie.get – Beispiel" +;(function () { + const session = context.cookie.get("session") + throw { status: 200, json: { hasSession: session !== "" } } +})() +``` + +**Fehlerfall (Error):** Ohne Namen: `missing cookie name in cookie.get`, Status `500` (`error - missing cookie name`, `context_cookie_test.go:55`); außerhalb von Hooks: `cookie functions only valid in hooks` (`context_cookie.go:20`). + +### cookie.set + +**Signatur:** `cookie.set(name: string, data: string, options?: object): void` — aus `// args: name:string options:map[string]interface{}` (`context_cookie.go:40`). `options` kennt `maxAge`, `path`, `domain`, `httpOnly`, `secure` und `sameSite` (`strict`, `lax` oder `none`). + +```js title="cookie.set – Beispiel" +;(function () { + context.cookie.set("session", "abc123", { maxAge: 3600, path: "/", httpOnly: true, sameSite: "lax" }) + throw { status: 200, json: { set: true } } +})() +``` + +**Fehlerfall (Error):** Weniger als zwei Argumente: `missing cookie name and/or data in cookie.set`, Status `500` (`error - missing cookie data`, `context_cookie_test.go:66`); unbekanntes `sameSite`: `invalid value for sameSite in cookie.set function` (`context_cookie.go:136`). + +## exec – Kommandos ausführen + +Quelle: `context_exec.go`, registriert per `RegisterPackageFunctions("exec", ...)` mit `command`. Läuft mit Timeout (Standard `10000` ms) im Projektverzeichnis und unter der Config-UID. + +### exec.command + +**Signatur:** `exec.command(command: string, options?: { args?: Array, stdin?: string, dir?: string, env?: Array, timeout?: number, returnObject?: boolean, combineOutput?: boolean }): string | object` — aus `// args: command:string, options:map[string]interface{}` (`context_exec.go:22`). Ohne `returnObject` kommt stdout als String; mit `returnObject: true` antwortet `{ stdout, stderr, exitCode }` (bzw. `{ output, exitCode }` mit `combineOutput`). + +```js title="exec.command – Beispiel" +;(function () { + const out = context.exec.command("echo", { args: ["Hallo Hook"] }) + throw { status: 200, json: { result: out } } +})() +``` + +**Fehlerfall (Error):** Ohne Kommando: `missing command in exec.command function` (`context_exec.go:38`); Exit-Code ungleich 0 ohne `returnObject`: `exec.command failed with exit code 1`, Status `500` (`test exec command error case`, `context_exec_test.go:65`); bei Timeout: `exec.command timed out after ... ms` (`context_exec.go:183`). + +## config – Server- und Projekt-Config lesen + +Quelle: `context_config.go`, registriert per `RegisterPackageFunctions("config", ...)` mit `namespace`, `project` und `server`. Alle drei ohne `args:`-Kommentar — Signaturen aus den Rümpfen abgeleitet (`context_config.go:19`, `:23`, `:27`). + +### config.namespace + +**Signatur (abgeleitet):** `config.namespace(): string` — liefert den Namespace, nimmt keine Argumente. + +```js title="config.namespace – Beispiel" +;(function () { + const ns = context.config.namespace() + throw { status: 200, json: { namespace: ns } } +})() +``` + +**Fehlerfall:** Kein Fehlerfall — `namespace` liest nur ein Feld und kennt keinen Error-Pfad (dokumentierte Abwesenheit, kein Versäumnis). + +### config.project + +**Signatur (abgeleitet):** `config.project(): object` — liefert die Projekt-Config als Map, nimmt keine Argumente. + +```js title="config.project – Beispiel" +;(function () { + const project = context.config.project() + throw { status: 200, json: { name: project.name } } +})() +``` + +**Fehlerfall:** Kein Fehlerfall — `project` mappt nur die Config und kennt keinen Error-Pfad (dokumentierte Abwesenheit, kein Versäumnis). + +### config.server + +**Signatur (abgeleitet):** `config.server(): object` — liefert die Server-Config als Map, nimmt keine Argumente. + +```js title="config.server – Beispiel" +;(function () { + const server = context.config.server() + throw { status: 200, json: { port: server.api && server.api.port } } +})() +``` + +**Fehlerfall (Error):** Kein fixer Error-String im Code — nur interne JSON-Marshal-Fehler werden durchgereicht (`context_config.go:30`); im Test läuft der Aufruf fehlerfrei mit Status `200` (`context_config_test.go:19`). + +Weiter: [Hook-Kontexte](/reference/hook-kontexte/) als Paket-Index, [Hooks schreiben](/projekt/hooks-schreiben/) für Lifecycle und Starter-Muster. + +Verifiziert am 68b42785 2026-10-16 (tibi-server) diff --git a/src/content/docs/reference/openapi.md b/src/content/docs/reference/openapi.md new file mode 100644 index 0000000..331a5ce --- /dev/null +++ b/src/content/docs/reference/openapi.md @@ -0,0 +1,5 @@ +--- +title: 'OpenAPI (generiert)' +--- + +> Stand: Platzhalter · Quelle: `TIBI_API_URL/openapi.json` — nicht von Hand editieren. Erzeugen mit `npm run sync:openapi`. diff --git a/src/content/docs/reference/schemas.md b/src/content/docs/reference/schemas.md new file mode 100644 index 0000000..cb04928 --- /dev/null +++ b/src/content/docs/reference/schemas.md @@ -0,0 +1,81 @@ +--- +title: 'Schemas als Quelle' +description: 'Welche tibi-types-Schemas wofür gelten und wie du sie liest.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Deine `api/*.yml`-Dateien sind durch JSON-Schemas geprüft. Die Schemas liegen in `tibi-types/schemas/config/`. Jede YML-Datei verweist oben per `$schema`-Zeile auf ihr Schema. + +## Schema-Liste + +Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten): + +| Schema | Gilt für | Pflichtfelder | +| --- | --- | --- | +| `project.schema.json` | `api/config.yml` | `namespace` | +| `collection.schema.json` | `api/collections/*.yml` | `name`, `permissions` | +| `field.schema.json` | einzelnes Feld | Typ-abhängig | +| `field-list.schema.json` | Feld-Listen | — | +| `field-meta.schema.json` | `meta:` an Feldern | keine (alle optional) | +| `collection-meta.schema.json` | `meta:` an Collections | keine (alle optional) | +| `permissions.schema.json` | `permissions:`-Block | `public`, `user` | +| `hooks.schema.json` | `hooks:`-Block | keine (`get`, `post`, `put`, `delete`, `audit` optional) | +| `job.schema.json` | Jobs in `config.yml` | `type`, `file` | +| `action.schema.json` | Actions in `config.yml` | `name` | +| `asset.schema.json` | Assets in `config.yml` | `name`, `path` | +| `image-filter.schema.json` | `imageFilter:` an Collections | — | +| `projections.schema.json` | `projections:`-Block | — | +| `snapshot.schema.json` | Snapshots in `config.yml` | `name` | +| `openapi.schema.json` | OpenAPI-Metadaten je Collection | keine | +| `defs.schema.json` | nur `$ref`-Bausteine, kein eigenes Ziel | — | + +## Lesart + +<Tabs> +<TabItem label="Kopfzeile"> + +```yaml title="api/collections/content.yml" +# yaml-language-server: $schema=../../tibi-types/schemas/config/collection.schema.json +name: content +permissions: + public: + methods: + get: true +``` + +Der Editor prüft live gegen das Schema. Tippfehler in Schlüsseln meldet er sofort. +</TabItem> +<TabItem label="Pflicht gegen Code prüfen"> + +Das Schema prüft die **Form**. Ob der Server die Werte so versteht, steht im Code: + +- `collection.schema.json` verlangt `permissions` — was `public` und `user` dürfen, entscheidet `internal/models/permission.go` im tibi-server. +- `field.schema.json` kennt Typen wie `string`, `number`, `date` — was davon wirklich validiert wird, steht in `internal/controller/validator.go`. +- `project.schema.json` kennt `admin.tokens` — was diese Tokens dürfen, steht in `internal/config/admin_token.go`. +</TabItem> +</Tabs> + +<Aside type="caution" title="Schema deckt nicht alles ab"> +Ein grünes Schema heißt nur: die Datei ist wohlgeformt. Falsche Token-Namen oder fehlende Berechtigungen meldet erst der Server zur Laufzeit. Lies dazu die Seiten zu Token-Köpfen und Fehlerbildern. +</Aside> + +## Text-Diagramm: Wo was geprüft wird + +```text title="Prüfebenen im Überblick" +api/config.yml ──$schema──▶ project.schema.json (Form) + │ + ▼ +tibi-server beim Reload (Bedeutung) + ├── permission.go → wer darf was? + ├── validator.go → ist der Datensatz gültig? + └── admin_token.go → welches Token gilt wofür? +``` + +## Nächste Schritte + +- Lege ein neues Projekt an: Einstieg Neues Projekt. +- Schlage einen Hook-Kontext nach: Hook-Kontexte. +- Verstehe Fehlermeldungen: Fehlerbilder. + +Verifiziert am 4c55f82 2026-10-12 (tibi-types) diff --git a/src/content/docs/reference/tastatur-kurzbefehle.md b/src/content/docs/reference/tastatur-kurzbefehle.md new file mode 100644 index 0000000..faae2b8 --- /dev/null +++ b/src/content/docs/reference/tastatur-kurzbefehle.md @@ -0,0 +1,82 @@ +--- +title: 'Tastatur und Schnellsuche' +description: 'Alle Tastenkürzel, die Befehlspalette und die Breadcrumb-Navigation im tibi-admin.' +--- + +import { Aside } from '@astrojs/starlight/components'; + +Du musst die Maus nicht anfassen: Fast alles im **tibi-admin** erreichst du per Taste oder über die Befehlspalette. +`?` zeigt die Kürzel-Übersicht direkt im Admin. Alle Bezeichnungen unten stehen wörtlich so in der Oberfläche (`de.json`). +Suchbegriffe: Shortcuts, Hotkeys, Command Palette, Schnellsuche, Brotkrumen. + +## Regeln zuerst + +- Einzel-Tasten (`s`, `n`, `/` …) wirken **nur außerhalb von Eingabefeldern** — sobald du in Input, Textarea oder Editor stehst, tippen sie Text. +- `Ctrl`-Kombinationen (`Ctrl+S`, `Ctrl+F`, `Ctrl+L`) wirken **auch in Eingabefeldern**. +- `Esc` schließt Hilfe-Overlay, Befehlspalette und offene Dialoge. +- Akkorde (`g → p`, `p → 1`) tippst du nacheinander, nicht gleichzeitig. Nach dem ersten Buchstaben hast du etwa eine halbe Sekunde Zeit; ein Hinweis-Chip unten zeigt den wartenden Buchstaben. + +## Kürzel-Tabelle + +| Taste | Wo | Was | +|---|---|---| +| `s` | Liste | „Suche fokussieren“ — springt ins Suchfeld der Liste (siehe [Ansichten und Listen](/admin/ansichten-listen/)) | +| `f` | Liste | „Filter öffnen“ — öffnet den Filter-Dialog | +| `x` | Liste | „Filter zurücksetzen“ — löscht alle Filter | +| `o` | Liste | „Sortierung öffnen“ — öffnet die Sortier-Auswahl | +| `v` | Liste | „Ansicht umschalten“ — wechselt zwischen „Tabellenansicht“ und „Kartenansicht“ | +| `[` / `]` | Liste | „Vorherige Seite“ / „Nächste Seite“ — blättert seitenweise | +| `p → 1` … `p → 9` | Liste | „Zu Seite springen“ — springt direkt auf Seite 1 bis 9 | +| `p → 0` | Liste | „Seitengröße wählen“ — öffnet die Palette mit der Suche „pro seite“ (10 / 25 / 50 pro Seite) | +| `↑` `↓` | Liste | „Einträge navigieren“ — bewegt den Fokus durch die Zeilen (Listen-eigen) | +| `Enter` | Liste | „Eintrag öffnen“ — öffnet den fokussierten Eintrag (Listen-eigen) | +| `Leertaste` | Liste | „Eintrag auswählen/abwählen“ — setzt den Haken beim fokussierten Eintrag (Listen-eigen) | +| `a` | Liste | „Alle auswählen / aufheben“ — markiert alle Zeilen oder hebt die Auswahl auf | +| `n` | Liste | „Neues Element“ — legt einen Eintrag an (nur mit Anlege-Recht) | +| `e` | Liste | „Massenbearbeitung“ — öffnet die Bulk-Aktion (nur mit Änderungs-Recht) | +| `d` | Liste | „Eintrag/Einträge löschen“ — löscht Auswahl oder fokussierten Eintrag (nur mit Lösch-Recht) | +| `Shift+N` | Editor | „Eintrag duplizieren“ — legt eine Kopie des offenen Eintrags an | +| `Ctrl+S` | Editor | „Eintrag speichern" — speichert (Editor-eigen, siehe [Eintrags-Editor](/admin/eintrags-editor/)) | +| `Ctrl+Z` / `Ctrl+Shift+Z` / `Ctrl+Y` | Editor | Rückgängig / Wiederholen der letzten Änderung (nicht in nativen Eingabefeldern) | +| `Ctrl+F` | Editor / Liste | „Feld suchen / Suche fokussieren“ — im Editor öffnet es die Feldsuche, in der Liste fokussiert es die Suche | +| `Ctrl+Shift+F` | Liste | Wechselt den Suchmodus (wirkt nur, wenn die Sammlung mehrere Suchmodi hat) | +| `Ctrl+L` | Editor | „Inhaltssprache wechseln“ — rotiert die Bearbeitungs-Sprache | +| `j`, dann `1` … `9` | Seite | „Zur Sektion springen“ — springt zur n-ten registrierten Sektion | +| `j`, dann `0` | Seite | „Nach oben scrollen“ — springt zum Seitenanfang (wie `t`) | +| `j` allein | Seite | Öffnet die Befehlspalette mit der Suche „sektion“ zur Auswahl | +| `t` | Überall | „Nach oben“ — scrollt zum Seitenanfang | +| `g → p` | Überall | „Zu Projekte“ — zurück zur Projektliste | +| `g → u` | Überall | „Zur Benutzerverwaltung“ — öffnet `/admin/users` (nur mit Recht sichtbar) | +| `/` | Überall | „Befehlspalette“ — öffnet oder schließt die Palette | +| `?` | Überall | „Shortcuts anzeigen“ — öffnet diese Übersicht als Overlay | +| `c` | Überall | „Nova ein-/ausblenden“ — öffnet oder schließt den KI-Chat (nur wenn Nova eingeschaltet ist) | +| `Shift+C` | Überall | „Neuen Chat anfangen“ — startet einen frischen Nova-Chat (nur wenn Nova eingeschaltet ist) | +| `m` | Überall | „Spracheingabe im Chat“ — Diktat im offenen Chat (nur wenn Nova an ist und der Browser es kann) | +| `Shift+M` | Überall | „Spracheingabe in neuem Chat“ — Diktat mit neuem Chat (Bedingung wie `m`) | + +<Aside type="caution" title="Hilfe-Overlay zeigt „u“ allein — Taste tut nichts"> +Die Overlay-Zeile mit `u` hat keinen passenden Text in der Sprachdatei (Schlüssel `toggleUsers` fehlt) und keinen eigenen Handler. +Drücke stattdessen den Akkord `g → u` für „Zur Benutzerverwaltung“. +Ebenfalls nicht im Overlay, aber belegt: `Shift+N` („Eintrag duplizieren“). +</Aside> + +## Befehlspalette (`/`) + +Die Palette findet **Navigationsziele und Befehle**, keine Inhalte: Projekte, Sammlungen und Aktionen zum Anspringen, dazu Ansichts-, Sortier-, Seiten-, Darstellungs-, Sprach-, Nova-, System- und Debug-Befehle sowie „Springen zu“-Sektionen der aktuellen Seite. +Was sie **nicht** findet: Feldwerte oder Datensätze — dafür nimmst du die Listensuche (`s`) bzw. im Editor die Feldsuche (`Ctrl+F`). + +So benutzt du sie: `/` drücken, lostippen (unscharfe Suche über Name, Stichwort und Kategorie, mehrere Wörter mit Leerzeichen trennen), mit `↑` `↓` wählen, `Enter` startet den Befehl, `Esc` schließt. +Die Trefferliste ist kontextabhängig: In einer Liste kommen Ansichts- und Sortierbefehle dazu (Sortieren pro Feld nur für Text-, Zahl-, Datums- und Ja/Nein-Felder, Richtext ausgenommen), im Editor der Befehl „Eintrag als JSON bearbeiten“. +Manche Befehle erscheinen nur mit passendem Recht (z. B. „Massenbearbeitung“, „Eintrag/Einträge löschen“, „Neues Element“) oder nur wenn Nova läuft. + +## Breadcrumb-Navigation + +Über der Ansicht zeigt der Pfad deinen Standort: Haus-Symbol (Projektliste), Projekt, Sammlung, Eintrag. +Jedes Segment außer dem aktuellen ist klickbar und navigiert ohne Neuladen innerhalb der App. +Das Haus-Symbol führt zurück zur Projektliste, das Sammlungs-Segment zurück in die Liste — dabei bleiben Suche, Filter und Seitennummer erhalten (gemerkte Rücksprung-Adresse). + +Der Browser-Zurück-Button gehört dazu: Nach dem Eintritt ins Projekt stellt „Zurück“ die vorige Ansicht wieder her, „Vorwärts“ die Sammlung. +Hat der Eintrag ungespeicherte Änderungen, blockiert erst ein Schutz-Dialog den Weggang — erst deine Bestätigung („Verwerfen“) setzt die Navigation fort. +In verschachtelten Seiten-Panels (Drawern) zeigt eine zweite, kompakte Pfadzeile den Ebenen-Pfad („Navigationspfad“); auf schmalen Bildschirmen klappt sie mittlere Ebenen zu „…“ zusammen, Antippen zeigt den vollen Pfad („Vollständigen Pfad anzeigen“). + +Verifiziert am 2b091d89 2026-10-13 (tibi-admin-nova: shortcuts.ts, KeyboardShortcuts-, CommandPalette-, Breadcrumb-, DrawerBreadcrumb-Komponenten, de.json, Test-Plan 02). diff --git a/src/content/docs/reference/token-koepfe.md b/src/content/docs/reference/token-koepfe.md new file mode 100644 index 0000000..92d85e4 --- /dev/null +++ b/src/content/docs/reference/token-koepfe.md @@ -0,0 +1,67 @@ +--- +title: 'Token-Köpfe' +description: 'Welcher Kopf wofür: Token, X-Auth-Token, X-Admin-Token, Bearer.' +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +Jeder Request braucht den passenden Kopf im passenden Header. Falscher Kopf heißt fast immer `permission denied` oder `project not found`. + +## Tabelle: Vier Köpfe + +| Header | Wert | Wofür | Woher | +| --- | --- | --- | --- | +| `Token` | `${ADMIN_TOKEN}` aus `api/config.yml.env` | Collection-Schreibzugriffe (z. B. Content anlegen) | Name `token` steht im Permission-Schlüssel `"token:${ADMIN_TOKEN}"` in `api/collections/*.yml` | +| `X-Auth-Token` | JWT aus Login | Projekt anlegen, Reload, User-Requests | `POST /api/v1/login` mit `admin` / `admin` (lokaler Starter-Stack) | +| `X-Admin-Token` | Server-Admin-Token | System-APIs wie Projekt-CRUD, Reload | Server-Config des laufenden tibi-servers | +| `Authorization: Bearer …` | Gleicher Wert wie `X-Admin-Token` | Alias für Server-Admin-Token; Deploy-Skripte nutzen ihn am Reload-Endpunkt | Server-Config bzw. `api/config.yml.env` | + +<Tabs> +<TabItem label="Collection schreiben"> + +```sh title="Dokument anlegen" +curl -s -X POST "$URL/api/content" \ + -H "Token: $ADMIN_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"title":"Hallo"}' +``` + +Der Header-Name `Token` passt zum Schlüssel `"token:${ADMIN_TOKEN}"` in der Collection-YML (Groß-/Kleinschreibung egal). +</TabItem> +<TabItem label="Projekt registrieren"> + +```sh title="JWT holen und Projekt anlegen" +jwt=$(curl -s -X POST "$ADMIN_URL/api/login" \ + -H "Content-Type: application/json" \ + -d '{"username":"admin","password":"admin"}' | jq -r '.token') +curl -s -X POST "$SERVER_URL/api/v1/project" \ + -H "X-Auth-Token: $jwt" \ + -H "Content-Type: application/json" \ + -d '{"name":"meinprojekt","configFile":"/data/api/config.yml","enabled":true}' +``` +</TabItem> +</Tabs> + +<Aside type="note" title="Zwei Login-Pfade, ein Login"> +Direkt am Server heißt die Route `/api/v1/login` (`setup.go`: Gruppe `/api/v1` + `/login`). Im Starter-Stack proxyt der Admin-Host `/api/...` auf den Server — deshalb steht im Beispiel `$ADMIN_URL/api/login`. Beide meinen denselben Login, nur auf verschiedenen Wegen.</Aside> + +## Verwechslungs-Fallen + +- **Projekt-Token ist kein Admin-Token.** `Token: $ADMIN_TOKEN` schreibt Collections, registriert aber keine Projekte. `GET /api/v1/project` damit antwortet `permission denied`. +- **`ADMIN_TOKEN` kann keine Projekte anlegen.** Nur Sammlungs-Zugriffe plus Reload/Snapshot laut `admin.tokens` in `api/config.yml`. Für Projekt-CRUD brauchst du JWT oder Server-Admin-Token. +- **Reservierte Namen.** `x-auth-token`, `x-admin-token` und `authorization` dürfen nie als Collection-Token-Name in `permissions` stehen — der Server ignoriert sie dort fail-closed (`internal/models/permission.go`). +- **Query statt Header geht auch.** Collection-Token akzeptiert der Server zusätzlich als Query-Parameter mit gleichem Namen. Nutze das nur zum Testen, nie im Produktiv-Frontend. + +## Fehlermeldungen + +| Antwort | Ursache | Fix | +| --- | --- | --- | +| `permission denied: admin token lacks permission project.read` | Collection-Token an System-API gesendet | JWT via `X-Auth-Token` oder `X-Admin-Token` nehmen | +| `permission denied` (403) | Kopf fehlt oder Wert falsch | Header-Namen und `.env`-Wert prüfen | +| `project not found` (404) | Projekt im laufenden Server nicht registriert | Per JWT registrieren, dann Reload | + +<Aside type="caution" title="Nicht mischen"> +Ein funktionierender Collection-Token beweist keinen Projekt-Admin-Zugriff. Prüfe jeden Kopf an seinem eigenen Endpunkt. +</Aside> + +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter) und 68b42785 2026-10-15 (tibi-server) diff --git a/src/content/docs/server/betrieb.md b/src/content/docs/server/betrieb.md new file mode 100644 index 0000000..14d10d4 --- /dev/null +++ b/src/content/docs/server/betrieb.md @@ -0,0 +1,89 @@ +--- +title: 'Betrieb und Beobachtung' +description: 'Logs, Metriken, Suche neu aufbauen, Jobs und Audit aus Betreiber-Sicht.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du betreibst den **tibi-server** als Container. Diese Seite zeigt Startprofile, Gesundheit, Suche, Jobs und typische Störungen. Details zur Datei stehen unter [Server-Konfiguration](/server/konfiguration/). + +## Startprofile + +Der Starter (`docker-compose-local.yml`) kennt zwei Profile: + +<Badge text="tibi" variant="tip" /> <Badge text="tibi-dev" variant="note" /> + +| Profil | Service | Wofür | +|---|---|---| +| `tibi` | `tibiserver` (Image `tibi-server:nova`) | Normalbetrieb: fertiges Image, Projekt unter `./` als `/data` gemountet | +| `tibi-dev` | `tibiserver-dev` (Build aus `tibi-server/Dockerfile.air`) | Entwicklung am Server: Live-Reload, Server-Code gemountet | + +Dazu laufen `mongo` (MongoDB 7) und `maildev` (Mails auf `maildev:25`, Web-UI zum Lesen). + +```bash title="Starten und Logs ansehen" +docker compose --profile tibi up -d +docker compose logs -f tibiserver +``` + +Beim Start loggt der Server die wirksame Konfiguration (`using following server config:`). Prüfe dort zuerst `DB.Dial`, `DB.Prefix` und `API.Port`. + +## Gesundheit und Metriken + +| Signal | Adresse | Was du siehst | +|---|---|---| +| Version | `GET /api/v1/version` | `{"version":"…"}` — der Server lebt und die Config lädt | +| Prometheus | `GET /metrics` | u. a. `tibi_request_duration_seconds` je Methode, Status, Namespace, Collection | +| Sentry | nur bei gesetzter `sentry.dsn` | Fehler + Traces mit Client-IP und Transaktionsname | + +<Steps> +1. `curl http://localhost:8080/api/v1/version` — kommt JSON, läuft der Router. +2. `curl http://localhost:8080/metrics` — kommen `tibi_*`-Zeilen, läuft die Instrumentierung. +3. Antwortzeiten steigen? In `/metrics` nach `status`- und `col`-Labels filtern. +</Steps> + +<Aside type="note" title="Audit"> +`audit.enabled: true` schreibt System-Änderungen (User, Projekt, Login, Shutdown) mit TTL weg. Vorgabe sind 30 Tage (`720h` über `audit.defaultTTL`). Lies sie über `GET /api/v1/audit` (`audit.read`-Recht nötig). +</Aside> + +## Suche und Reload + +Die Volltextsuche läuft pro Projekt in einem Worker. Nach Config-Änderungen musst du neu laden: + +| Endpunkt | Wirkung | +|---|---| +| `POST /api/v1/_/:project/_/admin/reload` | Lädt Projekt-Config neu (Recht `project.reload`) | +| `POST /api/v1/_/:project/_/admin/regenerate-search` | Baut Suchindex neu auf (`project.regenerate-search`) | +| `GET /api/v1/_/:project/_/admin/search-worker/status` | Status des Such-Workers | +| `GET /api/v1/_/:project/_/admin/embedding/status` | Status der Embedding-Provider | + +```bash title="Nach Config-Änderung: Reload plus Suchindex neu aufbauen" +curl -X POST http://localhost:8080/api/v1/_/meinprojekt/_/admin/reload \ + -H "X-Admin-Token: $TOKEN" +curl -X POST http://localhost:8080/api/v1/_/meinprojekt/_/admin/regenerate-search \ + -H "X-Admin-Token: $TOKEN" +``` + +Backups und Snapshots meldet der Server per Fortschritts-Stream (SSE, `text/event-stream`). Bricht ein Download ab, hole zuerst die Analyse (`backup/analyze-download`), dann die Datei neu. + +## Jobs + +Jobs sind geplante Skripte je Projekt (Cron in der Projekt-`config.yml`, gleiche goja-Laufzeit wie Hooks): + +- Sie laufen im `JOB_CONTEXT` — ohne HTTP-Request, mit fast allen Hook-Paketen. +- Sie laufen unter der Projekt-UID (suexec-Isolation, siehe [Sicherheit](/server/sicherheit/)). +- Schlägt ein Job fehl, steht die Ursache im Server-Log; Quotas und Nutzung landen in der LLM-Nutzungsablage. + +## Störungen + +| Bild | Ursache (häufig) | Maßnahme | +|---|---|---| +| Start-Panic `invalid number in env API_PORT` | Port fehlt oder `<= 0` | `API_PORT` setzen, siehe [Server-Konfiguration](/server/konfiguration/) | +| `version` antwortet nicht | Container down, falscher Port | `docker compose ps`, Logs prüfen | +| Login wird immer langsamer | Ratelimit-Backoff nach Fehlversuchen | Warten (Retry-After), Zugangsdaten prüfen | +| Suche findet nichts Neues | Worker hängt oder Index alt | Worker-Status abfragen, `regenerate-search` | +| 413 bei Upload | Body-Limit erreicht (Server → Projekt → Collection) | `API_UPLOAD_MAX_BODY_SIZE` bzw. Collection-Limit erhöhen | +| Leere Seite trotz Daten | CORS blockt den Browser | Origins in der Collection-Config prüfen | + +Begriffe wie Collection, Hook oder Namespace klärt [Begriffe](/einstieg/begriffe/). Zum Einrichten siehe [Schnellstart](/einstieg/schnellstart/). + +Verifiziert am `68b42785` 2026-10-15 (tibi-server); Compose-Profile am `e3f92ebf` 2026-10-14 (tibi-svelte-starter). diff --git a/src/content/docs/server/konfiguration.md b/src/content/docs/server/konfiguration.md new file mode 100644 index 0000000..8b65f58 --- /dev/null +++ b/src/content/docs/server/konfiguration.md @@ -0,0 +1,140 @@ +--- +title: 'Server-Konfiguration' +description: 'config.yml und Env-Overrides des tibi-servers selbst (Betreiber-Sicht).' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du konfigurierst den **tibi-server** über eine `config.yml` plus Umgebungsvariablen. Env schlägt Datei. Die Wahrheit steht in `internal/config/server.go` (Struct-Tags). + +```text title="Config-Vorrang" +config.yml (Datei) < Umgebungsvariable (gewinnt immer) + \ / + v v + Server.Server (Speicher) +``` + +## Datei und Env-Regeln + +- Fehlt die Datei, startet der Server mit Notwerten: Port `8080`, Prefix `tibi`, Stacktraces an. +- `API_PORT` oder `PORT` sind Pflicht: Port `<= 0` beendet den Start per Panic. +- Namen mit Bindestrich werden in Env zu Unterstrich + Großschrift: `bge-m3` → `EMBEDDING_BGE-M3_*`. +- Listen in Env sind Komma-getrennt: `LLM_PROVIDERS=openai,lokal`. + +## Die Bereiche im Überblick + +| Bereich (`config.yml`) | Wichtigste Schlüssel | Env-Override | +|---|---|---| +| `db` | `dial`, `prefix`, `logging` | `DB_DIAL` (Fallback `MGO_DIAL`), `DB_PREFIX`, `DB_LOGGING` | +| `api` | `port`, `jwtSecret`, `upload.maxBodySize`, Token-Lifetimes | `API_PORT`/`PORT`, `API_JWTSECRET`, `API_UPLOAD_MAX_BODY_SIZE`, `API_ACCESS_TOKEN_LIFETIME`, `API_REFRESH_TOKEN_LIFETIME`, `API_SECURE_COOKIES` | +| `mail` | `host`, `username`, `password` | `MAIL_HOST` | +| `security` | `allowAbsolutePaths`, `allowUpperPaths` | `SECURITY_ALLOWABSOLUTEPATHS`, `SECURITY_ALLOWUPPERPATHS` | +| `response.error` | `stack`, `message` | `RESPONSE_ERROR_STACK`, `RESPONSE_ERROR_MESSAGE` | +| `audit` | `enabled`, `defaultTTL`, `defaultLimit`, `maxLimit` | `AUDIT_ENABLED`, `AUDIT_DEFAULT_TTL`, `AUDIT_DEFAULT_LIMIT`, `AUDIT_MAX_LIMIT` | +| `ratelimit` | `enabled`, `loginInitialDelay`, `loginMaxDelay`, `loginResetAfter` | `RATELIMIT_*` (gleiche Namen) | +| `hook` | `cache.*`, `ratelimit.*` | `HOOK_CACHE_*`, `HOOK_RATELIMIT_*` | +| `mcp` | `enabled`, `route`, `maxResultItems`, `allowAdminActions` | `MCP_ENABLED`, `MCP_ROUTE`, `MCP_MAX_RESULT_ITEMS`, `MCP_ALLOW_ADMIN_ACTIONS` | +| `sentry` | `dsn`, `environment`, `serverName`, `enableTracing`, `debug` | keine — nur Datei | +| `cors` | `allowOrigins`, `allowCredentials`, … | keine — wirksam ist die Projekt-/Collection-Ebene (siehe [Sicherheit](/server/sicherheit/)) | +| `llm` / `embedding` | Provider-Listen | dynamisch, siehe unten | + +<Aside type="caution" title="README lügt an zwei Stellen"> +Das README-Beispiel ist unvollständig und nennt <del>Go 1.23</del> <ins>go 1.25.0</ins> (Toolchain `go1.25.7`) laut `go.mod`. Verlasse dich nur auf die Struct-Tags in `server.go`. +</Aside> + +## Datenbank, API, Mail + +<Tabs> +<TabItem label="Minimal-Beispiel"> + +```yaml title="config.yml" +db: + dial: mongodb://mongo + prefix: meinprojekt +api: + port: 8080 + jwtSecret: mindestens-32-zufallszeichen +mail: + host: maildev:25 +``` + +</TabItem> +<TabItem label="Lokaler Dial (Starter)"> + +```yaml title="docker-compose-local.yml (Service tibiserver)" +environment: + DB_DIAL: mongodb://mongo + DB_PREFIX: ${TIBI_PREFIX} + MAIL_HOST: maildev:25 + SECURITY_ALLOWABSOLUTEPATHS: "true" + SECURITY_ALLOWUPPERPATHS: "true" + RESPONSE_ERROR_STACK: "true" +``` + +Der Starter nutzt `mongodb://mongo` (Compose-Netz). Lokal ohne Compose heißt der Dial `mongodb://localhost:27017`. Der Prefix trennt Projekte in einer MongoDB. + +</TabItem> +</Tabs> + +Defaults, die du kennen musst: + +- `secureCookies`: Standard `true`. Nur für reines HTTP-Lokalsetup auf `false` setzen. +- `accessTokenLifetime`: Standard `60m`. `refreshTokenLifetime`: Standard `10h`. Format ist Go-Duration (`30m`, `24h`). +- Ungültige Duration fällt still auf den Default zurück (Log-Warnung). + +## LLM und Embedding per Env + +Provider musst du nicht in die Datei schreiben. Diese Muster gelten: + +```bash title="LLM-Provider anmelden" +LLM_PROVIDERS=openai,lokal-llm +LLM_OPENAI_APIKEY=sk-... +LLM_OPENAI_TYPE=openai # Vorgabe, wenn leer +LLM_OPENAI_BASEURL=https://api.openai.com/v1 # Vorgabe für Typ openai +LLM_OPENAI_DEFAULTMODEL=gpt-4o +LLM_OPENAI_MODELS=gpt-4o,gpt-4o-mini +``` + +```bash title="Embedding-Provider anmelden (Starter-Beispiel)" +EMBEDDING_PROVIDERS=bge-m3 +EMBEDDING_BGE-M3_TYPE=native +EMBEDDING_BGE-M3_MODELPATH=/models/bge-m3 +EMBEDDING_BGE-M3_DIMENSIONS=1024 +EMBEDDING_BGE-M3_DOCUMENTPREFIX="search_document: " +EMBEDDING_BGE-M3_QUERYPREFIX="search_query: " +``` + +Gruppen gehen über `EMBEDDING_GROUPS=main` plus `EMBEDDING_GROUP_MAIN_MEMBERS=...`, `..._POLICY=...`, `..._TIMEOUT_TOTAL=...`. + +## Admin-Tokens + +Server-Admin-Tokens stehen unter `api.adminTokens`. Jedes Token hat `token`, `label` und `permissions`: + +```yaml title="config.yml" +api: + adminTokens: + - token: ersetze-mich-durch-zufall + label: backup-job + permissions: ["project.backup", "project.reload"] +``` + +- Syntax: `domain.action` (`project.read`, `user.create`, `server.shutdown`). +- Kurzform: `project` meint `project.*`. `*` matcht genau ein Segment (`namespace.*.articles.read`). +- Gültige Domänen: `user`, `project` (plus `reload`, `backup`, `regenerate-search`, `snapshot`), `team`, `org`, `audit.read`, `llm.chat`, `namespace…`. +- Header: `X-Admin-Token: …` oder `Authorization: Bearer …`. + +## Abnahme über den Version-Endpunkt + +<Steps> +1. Server starten und warten, bis das Config-Dump im Log steht. +2. Version abfragen — antwortet sie, stimmen Port und Prefix: + ```bash title="Version prüfen" + curl http://localhost:8080/api/v1/version + # {"version":"0.0.0"} + ``` +3. Bei Fehlern zuerst `DB_DIAL`, `DB_PREFIX` und `API_PORT` prüfen (Tabelle oben). +</Steps> + +Weiter: [Betrieb und Beobachtung](/server/betrieb/) zeigt Profile und Metriken. [Sicherheit](/server/sicherheit/) erklärt Token-Arten und Ratelimit. + +Verifiziert am `68b42785` 2026-10-15 (tibi-server); Starter-Compose am `e3f92ebf` 2026-10-14 (tibi-svelte-starter); Go-Version aus `go.mod`. diff --git a/src/content/docs/server/schnittstellen.md b/src/content/docs/server/schnittstellen.md new file mode 100644 index 0000000..f973672 --- /dev/null +++ b/src/content/docs/server/schnittstellen.md @@ -0,0 +1,104 @@ +--- +title: 'Schnittstellen im Überblick' +description: 'REST, SSE, MCP, OpenAPI: was wofür gilt und wo die Referenz liegt.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Der **tibi-server** spricht vier Sprachen: REST, SSE-Streams, MCP und OpenAPI. Alle hängen unter `/api/v1` (außer `/metrics`). Quelle: `internal/controller/setup.go`. + +```text title="API-Baum im Überblick" +/api/v1 +├── System: /login /token/_scopes /llm/* /audit /admin/* /version /mcp +├── Projekt: /_/:project/:collection … /_/:project/_actions/:action +│ /_/:project/_/assets/… /_/:project/_/admin/… +└── Schema: /_openapi/:project +/metrics (Prometheus, außerhalb) +``` + +## REST: System gegen Collection + +<Tabs> +<TabItem label="System-Endpunkte"> + +| Methode | Pfad | Wofür | +|---|---|---| +| `GET` | `/api/v1/version` | Lebenszeichen (`{"version":"…"}`) | +| `POST` | `/api/v1/login`, `/api/v1/login/impersonate` | JWT holen / als Admin schlüpfen | +| `GET` | `/api/v1/token/_scopes` | Gültige PAT-Scopes auflisten | +| `POST` / `GET` | `/api/v1/llm/chat`, `/api/v1/llm/providers` | Chat (ohne Secrets) / Provider-Namen | +| `GET` | `/api/v1/audit` | Audit-Logs (`audit.read`) | +| `GET` / `POST` | `/api/v1/admin/embedding/status`, `/api/v1/admin/shutdown` | Embedding-Status / Stop (`server.shutdown`) | + +</TabItem> +<TabItem label="Collection-Endpunkte"> + +| Methode | Pfad | Wofür | +|---|---|---| +| `GET` / `POST` | `/_/:project/:collection` | Suchen / anlegen | +| `GET` | `/_/:project/:collection/_count`, `/_facet`, `/_queue` | Zählen / Facetten / Warteschlange | +| `GET` / `PUT` / `DELETE` | `/_/:project/:collection/:id` | Lesen / ersetzen / löschen | +| `PUT` / `DELETE` | `/_/:project/:collection` (ohne ID) | Bulk-Update / Bulk-Delete | +| `GET` | `/_/:project/:collection/:id/:field`, `…/:field/*path` | Einzelnes Feld / Datei | +| `GET` / `POST` | `/_/:project/_actions/:action` | Hook-Aktion ohne Collection | +| `GET` | `/_/:project/_/assets/:name/*path` | Statische Assets | + +Trick für lange Filter: `POST` mit Header `X-HTTP-Method-Override: GET` — der Body wird zur Query. + +</TabItem> +<TabItem label="Projekt-Admin"> + +| Methode | Pfad | Recht | +|---|---|---| +| `POST` | `/_/:project/_/admin/reload` | `project.reload` | +| `POST` / `GET` | `/_/:project/_/admin/regenerate-search`, `…/search-worker/status` | `project.regenerate-search` | +| `GET` | `/_/:project/_/admin/embedding/status` | Projekt-Admin | +| `GET` / `POST` / `DELETE` | `/_/:project/_/admin/backup…` | `project.backup` | +| `GET` / `POST` / `DELETE` | `/_/:project/_/admin/snapshots…` | `project.snapshot` | + +</TabItem> +</Tabs> + +Alle Antworten sind gzip-komprimiert, Body-Limits kaskadieren (Server → Projekt → Collection). Erstellen meldet `201`, Löschen `204` — außer das Projekt will Legacy-Codes. + +## SSE (Echtzeit und Fortschritt) + +- Der Realtime-Hub ist ein In-Memory-Pub/Sub **je Projekt**: benannte Kanäle, fester Ringpuffer (Standard 256), Nachhol-Optionen (`LastN`, `MaxAge`, TTL). +- Volle Kanäle werfen wahlweise Alt oder Neu weg — langsame Leser blockieren nie den Server. +- **Kein fertiger Abo-Endpunkt:** Der Server liefert keine HTTP-Route für Collection-Abos. Du erreichst den Hub nur über Hooks (`channel.send` / `channel.subscribe`) — typisch als eigene Action (`/_/:project/_actions/:action`), die du selbst als SSE auslieferst. +- `text/event-stream` liefert der Server fertig nur an zwei Stellen: `POST /api/v1/llm/chat` (Chat-Streaming) und Backup-Analyse-Download (`.../admin/backup/analyze-download`). Snapshot-Streaming ist dagegen Datei-Download mit RAM-Begrenzung, kein SSE. +- Backup- und Snapshot-Läufe melden Fortschritt als Event-Stream. Bricht der Stream ab, war es das Netzwerk — der Lauf selbst geht weiter. + +## MCP (KI-Werkzeuge) + +| Fakt | Wert | +|---|---| +| Transport | Streamable-HTTP, JSON-RPC 2.0 | +| Route | fest `POST` + `GET /api/v1/mcp` — ein gesetztes `mcp.route`/`MCP_ROUTE` wird ignoriert (Routing hart in `setup.go`) | +| Auth | nur PAT via `X-Auth-Token` — kein JWT, kein Admin-Token | +| Rechte | jede Prüfung nutzt die gleichen Gates wie REST (nichts kopiert) | +| Ergebnis-Deckel | `mcp.maxResultItems` (Standard 100) | +| Admin-Werkzeuge | nur mit `mcp.allowAdminActions: true`, weiter pro Scope begrenzt | + +```bash title="MCP-Tools auflisten (describe)" +curl -X POST http://localhost:8080/api/v1/mcp \ + -H "X-Auth-Token: tibi_pat_..." \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' +``` + +## OpenAPI-Generator + +`GET /api/v1/_openapi/:project` erzeugt die Spezifikation **deines** Projekts frisch aus Config und Collections. Nutze sie für Client-Generierung und als Klick-Referenz. Die Version oben (`/api/v1/version`) sagt dir, ob Server und Spec zusammenpassen. + +## Welche Referenz wofür + +| Frage | Antwort liegt in | +|---|---| +| Wie heißt Config-Schlüssel X? | [Server-Konfiguration](/server/konfiguration/) | +| Wer darf Endpunkt Y? | [Sicherheit](/server/sicherheit/) (Tokens, Scopes) | +| Läuft der Server gesund? | [Betrieb und Beobachtung](/server/betrieb/) (Version, Metriken) | +| Wie frage ich Daten ab? | Projekt-Seiten ab [Begriffe](/einstieg/begriffe/) | +| Was ist Tibi überhaupt? | [Was ist Tibi?](/einstieg/was-ist-tibi/) | + +Verifiziert am `68b42785` 2026-10-15 (tibi-server). diff --git a/src/content/docs/server/sicherheit.md b/src/content/docs/server/sicherheit.md new file mode 100644 index 0000000..a641f8f --- /dev/null +++ b/src/content/docs/server/sicherheit.md @@ -0,0 +1,82 @@ +--- +title: 'Sicherheit' +description: 'Tokens, CORS-Kaskade, Ratelimit, Pfad-Regeln, Isolation als Betreiber-Überblick.' +--- + +import { Aside, Tabs, TabItem, Steps, Card, CardGrid, Badge, FileTree } from '@astrojs/starlight/components'; + +Du sicherst den **tibi-server** auf vier Ebenen: Tokens, CORS, Ratelimit und Dateipfade plus Prozess-Isolation. Quelle ist der Code (`internal/config`, `internal/ratelimit`, `internal/suexec`, `internal/controller/setup.go`). + +## Token-Arten + +<Badge text="X-Admin-Token" variant="danger" /> <Badge text="X-Auth-Token" variant="tip" /> <Badge text="Token" variant="note" /> <Badge text="Bearer" variant="caution" /> + +| Art | Header | Wofür | Scope-Syntax | +|---|---|---|---| +| Server-Admin-Token | `X-Admin-Token` oder `Authorization: Bearer` | Betrieb: Reload, Backup, Snapshots, Shutdown (`server.shutdown` nur für Stop) | `domain.action`, Kurzform (`project` = `project.*`), `*` je Segment | +| Benutzer-JWT | `X-Auth-Token` | Anmeldung per `/api/v1/login`; Lebensdauer via `API_ACCESS_TOKEN_LIFETIME` (Standard `60m`) | Rollen + Collection-Rechte | +| Personal Access Token (PAT) | `X-Auth-Token` (`tibi_pat_…`) | Dauerhafte Maschinen-Tokens, immer aktiv | gleiche Syntax wie Admin-Tokens; es gilt **Token-Recht UND Besitzer-Recht** | +| MCP | `X-Auth-Token` (nur PAT) | KI-Werkzeugzugriff über `/api/v1/mcp` | PAT-Scopes, Admin-Aktionen nur mit `mcp.allowAdminActions: true` | + +Gültige Domänen: `user`, `project` (`read/create/update/delete`, `reload`, `backup`, `regenerate-search`, `snapshot`), `team`, `org`, `audit.read`, `llm.chat`, `namespace.<ns>.<collection>.<aktion>`. + +```text title="Scope-Abgleich (Beispiel)" +Anfrage-Recht: namespace.shop.artikel.read +Token-Scope: namespace.shop → passt (Kurzform) +Token-Scope: namespace.*.artikel.read → passt (Wildcard) +Besitzer darf es nicht → trotzdem verboten (UND-Regel) +``` + +<Aside type="caution" title="Entfernt: TOKENS_ENABLED"> +Ein Flag `TOKENS_ENABLED` gibt es nicht mehr. PATs sind Kernfunktion und immer an. Wer alte Compose-Dateien mit diesem Flag findet, löscht es ersatzlos. +</Aside> + +## CORS-Kaskade + +Jeder Request bekommt genau eine CORS-Config — vom Spezifischen zum Allgemeinen: + +```text title="CORS-Kaskade" +/_actions/<name> → /<collection> → / → "" → keine (Browser blockt) +``` + +- Die Kaskade steht pro Projekt (`CORSMap`), nicht global. Der `cors:`-Abschnitt der Server-Config ist die **Basis**, Projekt- und Collection-Werte mergen feldweise dazu (`merge: true` hängt an, `merge: false` ersetzt). Globales CORS ist auskommentiert — ohne Projekt-Kontext greift gar kein CORS. +- Action-Endpunkte (`/_actions/…`) haben eigene Einträge — prüfe sie separat. +- Preflight ohne echte Route antwortet `404` (kein offenes `OPTIONS`-Loch). + +## Ratelimit (Login) + +Der Login-Limiter bremst Fehlversuche mit exponentiellem Backoff — je IP **und** je Benutzername: + +| Schlüssel | Standard | Env | +|---|---|---| +| Erste Verzögerung | `1s` | `RATELIMIT_LOGIN_INITIAL_DELAY` | +| Maximale Verzögerung | `60s` | `RATELIMIT_LOGIN_MAX_DELAY` | +| Zähler-Reset nach Ruhe | `15m` | `RATELIMIT_LOGIN_RESET_AFTER` | +| Ganz abschalten | an (`true`) | `RATELIMIT_ENABLED=false` (nur Notfall) | + +Erfolg setzt beide Zähler zurück. Gebremste Versuche antworten mit **429** plus `Retry-After`-Header (Sekunden) — warte sie ab statt zu hämmern. Das Limit gilt **nur für Login**, nicht global. + +## Pfade und suexec-Isolation + +| Schalter | Wirkung | +|---|---| +| `security.allowAbsolutePaths` (`SECURITY_ALLOWABSOLUTEPATHS`) | Absolute Dateipfade erlauben — sonst verboten | +| `security.allowUpperPaths` (`SECURITY_ALLOWUPPERPATHS`) | `..`-Pfade erlauben — sonst verboten | +| suexec (kein Schalter) | Hooks und Jobs laufen unter der Projekt-UID/GID in eigenen Thread-Pools | + +Der Starter setzt beide Pfad-Schalter lokal auf `"true"`. In Produktion lässt du sie aus, außer du weißt genau warum. + +## Checkliste für den Go-Live + +<Steps> +1. `jwtSecret` gesetzt (lang, zufällig) und `secureCookies: true` (HTTPS). +2. Admin-Tokens minimal vergeben: ein Token, ein Zweck, enge Scopes. +3. `RESPONSE_ERROR_STACK` aus — keine Stacktraces an Clients. +4. Pfad-Schalter aus, außer nötig. Ratelimit an. +5. `sentry.dsn` gesetzt, `/metrics` nur intern erreichbar. +6. CORS je Collection geprüft — keine `*`-Origins mit Credentials. +</Steps> + +Config-Schlüssel stehen unter [Server-Konfiguration](/server/konfiguration/). Laufende Kontrolle unter [Betrieb und Beobachtung](/server/betrieb/). + +Verifiziert am `68b42785` 2026-10-15 (tibi-server). diff --git a/src/content/docs/server/uebersicht.md b/src/content/docs/server/uebersicht.md new file mode 100644 index 0000000..0e19299 --- /dev/null +++ b/src/content/docs/server/uebersicht.md @@ -0,0 +1,40 @@ +--- +title: Server-Übersicht +description: Wie der Tibi-Server aufgebaut ist und wo welche Referenzseite hilft. +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; + +> **Handseite.** Wird vom Sync nie überschrieben (`keep`). Stand wird am Code verifiziert, nicht aus alten Docs übernommen. + +**Tibi-server** ist das Go-Backend (MongoDB, Gin, goja-Hooks, SSE, LLM, Jobs, Audit). Details stehen in den synchronisierten Referenzseiten daneben — diese Seite ordnet nur. + +:::note title="Projekt-Entwickler nutzen, nicht weiterentwickeln" +Als Projekt-Entwickler entwickelst du den Server nicht weiter. Du **nutzt** ihn: `api/config.yml` plus `api/collections/*.yml` und `api/hooks/*.js` in deinem geklonten Starter. Go-Code fasst du nicht an. +::: + +## Wo finde ich was? + +<CardGrid stagger> + <Card title="Server-Konfiguration"> + `config.yml`, Env-Overrides, Admin-Tokens (am Code verifiziert, inkl. Go-Version und Legacy-Default). [Lesen](/server/konfiguration/). + </Card> + <Card title="Betrieb und Beobachtung"> + Profile, Version/Metriken, Reload, Jobs, Störungen. [Lesen](/server/betrieb/). + </Card> + <Card title="Sicherheit"> + Token-Arten, CORS-Kaskade, Login-Ratelimit (429), Pfad-Schalter, suexec. [Lesen](/server/sicherheit/). + </Card> + <Card title="Schnittstellen"> + REST (System vs. Collection), SSE, MCP (`/api/v1/mcp` fest), OpenAPI-Generator. [Lesen](/server/schnittstellen/). + </Card> + <Card title="Projekt-Sicht"> + [Sammlungen](/projekt/sammlungen-anlegen/), [Hooks](/projekt/hooks-schreiben/), [Lesen und suchen](/projekt/abfragen-lesen/), [Rechte und Tokens](/projekt/rechte-tokens/). + </Card> +</CardGrid> + +Verifiziert am 68b42785 2026-10-15 (tibi-server). + +## Nächster Schritt + +- Neues Projekt? Siehe [Neues Projekt aufsetzen](/einstieg/neues-projekt/).