From 15c1976c606dd951f4f18a2494324f1f6520472c Mon Sep 17 00:00:00 2001 From: Sebastian Frank Date: Sun, 18 Oct 2026 09:36:37 +0000 Subject: [PATCH] Improve Tibi docs coverage and screenshot placement --- plans/audit-report.json | 63 +-- plans/coverage-map.json | 17 + plans/coverage-report.json | 481 +++++++++--------- plans/doku-ausbau.md | 33 +- plans/doku-pruefung-aktuell.md | 62 +++ plans/t-shots-arbeitsauftrag.md | 2 +- scripts/audit-docs.mjs | 19 +- scripts/coverage-inventory.mjs | 14 +- scripts/gen-schema-matrix.mjs | 7 +- src/content/docs/admin/aktionen.mdx | 2 +- src/content/docs/admin/ansichten-listen.mdx | 4 +- src/content/docs/admin/benutzer-rechte.mdx | 4 +- src/content/docs/admin/customizing.mdx | 6 +- src/content/docs/admin/eintrags-editor.mdx | 4 +- src/content/docs/admin/exporte.mdx | 4 +- src/content/docs/admin/ki-funktionen.mdx | 4 +- src/content/docs/admin/konzept.mdx | 4 +- src/content/docs/admin/medien.mdx | 4 +- src/content/docs/anwender/aktionen.mdx | 2 +- src/content/docs/index.mdx | 2 +- .../docs/reference/schema-properties.md | 23 +- src/content/docs/reference/schemas.mdx | 5 +- .../docs/reference/tastatur-kurzbefehle.mdx | 2 +- 23 files changed, 417 insertions(+), 351 deletions(-) create mode 100644 plans/doku-pruefung-aktuell.md diff --git a/plans/audit-report.json b/plans/audit-report.json index 2d7c16e..abda00a 100644 --- a/plans/audit-report.json +++ b/plans/audit-report.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-10-17T14:20:17.865Z", + "generatedAt": "2026-10-17T19:58:49.510Z", "stats": { "files": 70, "byDir": { @@ -35,15 +35,7 @@ "src/content/docs/projekt/ssr-website.mdx", "src/content/docs/reference/schema-properties.md" ], - "hollowMarkers": [ - "src/content/docs/admin/exporte.mdx:37 Platzhalter", - "src/content/docs/anwender/seiten-bauen.mdx:45 Platzhalter", - "src/content/docs/einstieg/neues-projekt.mdx:26 Platzhalter", - "src/content/docs/einstieg/schnellstart.mdx:48 noch nicht", - "src/content/docs/einstieg/schnellstart.mdx:21 Platzhalter", - "src/content/docs/einstieg/was-ist-tibi.mdx:11 Platzhalter", - "src/content/docs/projekt/deploy.mdx:26 Platzhalter" - ], + "hollowMarkers": [], "t1Refs": [ "src/content/docs/adr/0003-selbstlaeufer.md" ], @@ -90,54 +82,9 @@ "notInSidebar": [], "sidebarMissing": [] }, - "findings": [ - { - "file": "src/content/docs/admin/exporte.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": Stehen im Export-Dialog eigene Reiter **vor** dem Standard-Tab, hat das Projekt fertige Berichte in `collectio", - "line": 37 - }, - { - "file": "src/content/docs/anwender/seiten-bauen.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": Die kleine Vorschau benötigt nach der Bildauswahl einen Moment. Ein Platzhalterbild ist in dieser Phase normal", - "line": 45 - }, - { - "file": "src/content/docs/einstieg/neues-projekt.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": ## 2. Platzhalter und Starter-Reste", - "line": 26 - }, - { - "file": "src/content/docs/einstieg/schnellstart.mdx", - "kind": "hollow", - "msg": "Marker \"noch nicht\": - `project not found` → Projektdateien liegen da, aber das Projekt ist im laufenden tibi-server noch nicht reg", - "line": 48 - }, - { - "file": "src/content/docs/einstieg/schnellstart.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": ## 2. Platzhalter ersetzen", - "line": 21 - }, - { - "file": "src/content/docs/einstieg/was-ist-tibi.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": - **Projekt-Website (aus `tibi-svelte-starter` geklont):** eigenständige Website auf Tibi-Basis — normale klei", - "line": 11 - }, - { - "file": "src/content/docs/projekt/deploy.mdx", - "kind": "hollow", - "msg": "Marker \"Platzhalter\": Im Starter stehen Platzhalter (`__PROJECT_NAME__`, `_CUSTOMER_ID_`, `LIVE_URL=https://www`).", - "line": 26 - } - ], + "findings": [], "summary": { - "total": 7, - "byKind": { - "hollow": 7 - } + "total": 0, + "byKind": {} } } \ No newline at end of file diff --git a/plans/coverage-map.json b/plans/coverage-map.json index c2b76ca..3f84aa7 100644 --- a/plans/coverage-map.json +++ b/plans/coverage-map.json @@ -14,6 +14,22 @@ "/mcp": "projekt/mcp-nutzen", "/token/_scopes": "projekt/rechte-tokens", "/version": "server/schnittstellen", + "/user": "reference/rest-system", + "/user/:id": "reference/rest-system", + "/project": "reference/rest-system", + "/project/:id": "reference/rest-system", + "/org": "reference/rest-system", + "/org/:id": "reference/rest-system", + "/team": "reference/rest-system", + "/team/:id": "reference/rest-system", + "/token": "reference/rest-system", + "/token/:id": "reference/rest-system", + "/_meta": "reference/rest-system", + "/_meta/user": "reference/rest-system", + "/_meta/project": "reference/rest-system", + "/_meta/org": "reference/rest-system", + "/_meta/team": "reference/rest-system", + "/_meta/token": "reference/rest-system", "_/:project/_/admin/backup": "projekt/audit-backup", "_/:project/_/admin/snapshots": "projekt/audit-backup", "/_/:project/:collection/:id/:field": "projekt/abfragen-lesen", @@ -158,6 +174,7 @@ "field-list.schema.json": "reference/schemas", "field-meta.schema.json": "reference/schemas", "image-filter.schema.json": "reference/schemas", + "embedding.schema.json": "server/konfiguration", "openapi.schema.json": "reference/schemas", "projections.schema.json": "reference/schemas", "snapshot.schema.json": "reference/schemas" diff --git a/plans/coverage-report.json b/plans/coverage-report.json index 7073a94..109a18e 100644 --- a/plans/coverage-report.json +++ b/plans/coverage-report.json @@ -1,9 +1,9 @@ { - "generatedAt": "2026-10-17T02:32:47.546Z", + "generatedAt": "2026-10-17T19:48:49.848Z", "categories": { "routes": { - "total": 36, - "mapped": 36, + "total": 52, + "mapped": 52, "openCount": 0, "openItems": [] }, @@ -13,6 +13,195 @@ "openCount": 0, "openItems": [], "symbols": [ + { + "symbol": "cache.clear", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.count", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.delete", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.get", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.has", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "cache.set", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_cache.go", + "hasArgs": true + }, + { + "symbol": "db.count", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.create", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.delete", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.deleteMany", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.find", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.update", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "db.updateMany", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_db.go", + "hasArgs": true + }, + { + "symbol": "fs.configDir", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": false + }, + { + "symbol": "fs.copy", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.mkDir", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.readDir", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.readFile", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.remove", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.stat", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "fs.writeFile", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_fs.go", + "hasArgs": true + }, + { + "symbol": "request", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_request.go", + "hasArgs": false + }, + { + "symbol": "response.flush", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_response.go", + "hasArgs": false + }, + { + "symbol": "response.header", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_response.go", + "hasArgs": false + }, + { + "symbol": "response.write", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_response.go", + "hasArgs": true + }, + { + "symbol": "response.writeHeader", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_response.go", + "hasArgs": true + }, + { + "symbol": "response.writeSSE", + "page": "reference/hooks-daten", + "stufe": 1, + "goFile": "context_response.go", + "hasArgs": true + }, { "symbol": "base64.decode", "page": "reference/hooks-meta", @@ -41,48 +230,6 @@ "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", @@ -160,55 +307,6 @@ "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", @@ -237,62 +335,6 @@ "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", @@ -398,48 +440,6 @@ "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", @@ -486,188 +486,188 @@ { "symbol": "action_call", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "action_describe", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "actions_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "agent_guide_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "asset_read", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "assets_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "audit_query", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "backup_create", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "collection_describe", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "collections_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "document_create", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "document_delete", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "document_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "document_update", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "documents_count", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "documents_facet", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "documents_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "file_read", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "jobs_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "openapi_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "org_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "orgs_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "project_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "project_reload", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "projects_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "queue_status", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "regenerate_search", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "snapshots_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "system_meta_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "team_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "teams_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "user_create", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "user_delete", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "user_get", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "user_update", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 }, { "symbol": "users_list", "page": "projekt/mcp-nutzen", - "stufe": 2 + "stufe": 1 } ] }, "schemas": { - "total": 16, - "mapped": 16, + "total": 17, + "mapped": 17, "openCount": 0, "openItems": [] }, @@ -686,31 +686,31 @@ }, "depth": { "routes": { - "total": 36, + "total": 52, "stufe4": 0, "stufe3": 0, - "stufe2": 36, + "stufe2": 52, "stufe1": 0 }, "contexts": { "total": 66, - "stufe4": 66, + "stufe4": 39, "stufe3": 0, "stufe2": 0, - "stufe1": 0 + "stufe1": 27 }, "tools": { "total": 36, "stufe4": 0, "stufe3": 0, - "stufe2": 36, - "stufe1": 0 + "stufe2": 0, + "stufe1": 36 }, "schemas": { - "total": 16, + "total": 17, "stufe4": 0, "stufe3": 0, - "stufe2": 16, + "stufe2": 17, "stufe1": 0 }, "components": { @@ -784,6 +784,11 @@ "uploadPath" ], "defs.schema.json": [], + "embedding.schema.json": [ + "goldenPath", + "groups", + "providers" + ], "field-list.schema.json": [], "field-meta.schema.json": [ "addElementLabel", diff --git a/plans/doku-ausbau.md b/plans/doku-ausbau.md index 26724c9..079fcf3 100644 --- a/plans/doku-ausbau.md +++ b/plans/doku-ausbau.md @@ -1,6 +1,6 @@ # 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. +Lebendes Dokument. Der Orga-Agent aktualisiert Status, Sessions und Second-Opinion-Ergebnisse nach jedem Schritt. Stand: 2026-10-17. ## Regeln (kurz) @@ -23,22 +23,21 @@ Lebendes Dokument. Der Orga-Agent (Agent Warpfuchs) aktualisiert Status, Session | 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 — Stand 17.10.: 49 webp (40 Anwender, 9 Admin), <200 KB | ✅ Text-Abweichungen eingearbeitet (Live-Schalter, OK-Button, Reiter, Corporate-Blöcke) | Build + Links ✅ | +| T-SHOTS Screenshots | `src/assets/{anwender,admin}/*` NUR aus Mock-Projekt `corporate` (nie `t1`!), Auftrag: `plans/t-shots-arbeitsauftrag.md` | general ses_ebac0c7feffed3DYtWznC2bqzJ | ✅ fertig — Stand 17.10.: 66 WebP (49 Anwender, 17 Admin), <200 KB; 2 nicht darstellbare Motive kommentiert | ✅ 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 71 Seiten ✅ (Stand 17.10.) | | 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 | +| T-COV Coverage-Inventar | Skript + Map: Controller- und System-Routen, Kontexte, Tools, Schemas, Komponenten, Test-Pläne | general ses_eb9584ba6ffeUrQq7fowAHlPXO | ✅ 341/341 zugeordnet (Zuordnung ist kein Tiefennachweis) | ✅ Map v1; Tiefe siehe `plans/coverage-report.json` | `npm run coverage` grün | Legende: ⏳ offen · 🔄 läuft (Session-ID) · 👀 Review/SO läuft · ✅ fertig. -## Vollständigkeit: Was ist wo abgedeckt (100-%-Ziel) +Der T-REF-Eintrag hält den damaligen Second-Opinion-Stand fest (16 Schemas). Das nachträglich ergänzte `embedding.schema.json` ist inzwischen in der aktuellen Fähigkeitsmatrix enthalten; Gesamtbestand: 17 Schemas. -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. +## Fähigkeitszuordnung: Was ist wo abgedeckt + +Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Die Zuordnung zeigt den passenden Ort, beweist aber nicht, dass jedes Verhalten in voller Tiefe beschrieben ist. Dafür sind Coverage-Tiefenstufen und fachliche Reviews getrennt zu betrachten. ### tibi-server (`internal/*`) @@ -87,7 +86,7 @@ Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Der | Baustein | Dokustelle | Status | |---|---|---| -| 16 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, ...) | reference/schemas + je Projekt-Seite | ✅ | +| 17 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, embedding, ...) | 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) | ✅ | @@ -143,7 +142,7 @@ Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind - [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-COV Inventar + Map v1 erstellt; UI-Einträge waren zunächst Topic-Level, Tiefenstufen wurden danach ergänzt - [x] T-TON gestartet (alle 10 Anwender-Seiten) - [x] T-TON Ergebnis + Build + Second Opinion - [x] T-SHOTS-2 gestartet (Overlay + Viewport, corporate) @@ -157,14 +156,12 @@ Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind - [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] Lose 2-5 eingetroffen: Sidebar + Index-Links + Map-Umtrag (Orga), Build, SO-Spotcheck +- [x] 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 +- [x] Issue zu `reponse.header` im Server-Code angelegt: tibi-server #44 +- [x] Issue zum `toggleUsers`-Kürzel angelegt: tibi-admin-nova #5 ## Runde 4 — Audit und Umsetzung (2026-10-17) @@ -178,7 +175,7 @@ Vollständige Prüfung von Code und Doku, dann Abarbeitung in Wellen. Übersicht | C | P5 `reference/schema-properties.md` (generiert) + Starter-Kapitel + 5 neue Anwender-Seiten | ✅ | | D | P7 Stil, Starlight, Struktur, UI-Text-Treue, Kontrast | ✅ | | E | P6b Screenshots: 9 Admin- + 10 Anwender-Bilder aus `corporate` | ✅ | -| G | Screenshot-Nachtrag: restliche UI-Bereiche (8 Anwender + 9 Admin + Befehlspalette) | ✅ (65 Bilder gesamt) | +| G | Screenshot-Nachtrag: restliche UI-Bereiche (8 Anwender + 9 Admin + Befehlspalette) | ✅ (66 Bilder gesamt) | | F | P8 Meta (AGENTS.md, Werkzeuge, Issues) | ✅ | | — | P9 Repo-Hygiene: 5 Alt-Kopien gelöscht (~6,1 GB), 6 mit unpushed Commits behalten | ✅ | | H | Ton: Fehlerabschnitte auf Handbuch-Sprache (Regel in AGENTS.md §1, 12 Anwender-Seiten + 5 Stellen) | ✅ | @@ -189,6 +186,6 @@ Vollständige Prüfung von Code und Doku, dann Abarbeitung in Wellen. Übersicht `scripts/gen-schema-matrix.mjs` (`npm run gen:schemas` → `reference/schema-properties.md`). **Neue Seiten:** `projekt/feld-rechte`, `reference/rest-system`, `reference/schema-properties`, `projekt/tests`, `anwender/{verlauf-wiederherstellen,massenbearbeitung,aktionen,backup-einspielen,tastenkombinationen}`. -**Stand:** 70 Inhaltsseiten, 49 Screenshots, Build grün, Audit: 0 tote Links, 0 kaputte Tabellen. +**Stand:** 70 Inhaltsseiten, 66 Screenshots (49 Anwender, 17 Admin), Build grün, Audit: 0 tote Links, 0 kaputte Tabellen. **Offen:** Issues für die Nachbar-Repos (`plans/offene-issues.md`), Löschkandidaten `tibi-docs-legacy`, `tibi-docs-kaputt`, `tibi-admin.bak*`, `tibi-server.bak` (Freigabe), Coverage v2 (Funktionskörnung). diff --git a/plans/doku-pruefung-aktuell.md b/plans/doku-pruefung-aktuell.md new file mode 100644 index 0000000..fea0c75 --- /dev/null +++ b/plans/doku-pruefung-aktuell.md @@ -0,0 +1,62 @@ +# Aktuelle Doku-Prüfung: tibi-server und tibi-admin + +**Stand:** 2026-10-17 +**Umfang:** `tibi-server`, `tibi-admin-nova` und die dazugehörigen Seiten, Screenshots und Prüfpläne in `tibi-docs`. +**Ziel:** Restlücken, Darstellungsfehler und konkrete Verbesserungen nachvollziehbar prüfen und abarbeiten. + +## Ergebnis in Kürze + +Die Dokumentation ist umfangreich und deckt die zentralen Entwickler-, Betreiber-, Admin- und Anwenderabläufe ab. Die alten Auditlisten sind aber nicht überall auf dem aktuellen Stand: die Server-Systemrouten, Meta-Routen, Upload-Allowlist, Suchaggregate, Token-Scopes und Embedding-Gruppen sind inzwischen dokumentiert. Die Screenshots liegen überwiegend an der passenden Stelle. Zwei UI-Motive bleiben bewusst offen, weil sie sich mit dem erlaubten Mock-Projekt nicht erzeugen lassen. + +„Alles erfasst“ lässt sich aus dem Coverage-Inventar allein nicht ableiten: Das Inventar ordnet 341 Elemente einer Doku-Seite zu, misst aber keine vollständige Verhaltenstiefe. Im aktuellen Report erreichen die Hook-Funktionen Stufe 4; Routen, MCP-Werkzeuge, Schemas, Komponenten und Test-Pläne stehen auf Zuordnungsstufe 2. + +## Befunde und Abarbeitung + +### Sprache und UI-Bezeichnungen + +- [x] **Startseite verwendete die unpersönliche „man“-Form.** `src/content/docs/index.mdx` sagt jetzt „wie du damit baust“. +- [x] **„Schnellsuche“ als UI-Name entfernt.** Seitentitel, Überschrift und Querverweis heißen jetzt „Befehlspalette“. Der Suchbegriff bleibt nur als Alias in der Referenz. + +### Struktur und Prüfbarkeit + +- [x] **Lebenden Ausbauplan aktualisiert.** Veraltete Screenshot-/Coverage-Zahlen, doppelte offene Pakete und alte Abschluss-Checkboxen wurden bereinigt; Umfang und Tiefenhinweis sind aktualisiert. +- [x] **Struktur-Auditor präzisiert.** Er sucht jetzt nach konkreten redaktionellen Markern, nicht nach legitimen Begriffen wie „Platzhalter“ oder „noch nicht“. +- [x] **Coverage-Zuordnung als Zuordnung gekennzeichnet.** `plans/doku-ausbau.md` trennt Mapping von vollständiger Verhaltenstiefe. +- [x] **Embedding-Schema ergänzt.** `embedding.schema.json` ist im Coverage-Inventar zugeordnet, in die generierte Property-Referenz aufgenommen und in der Schema-Liste als Serverkonfiguration eingetragen. +- [x] **Schema-Zähler berichtigt.** Der Generator und die ausgegebene Referenz nannten noch 16 statt 17 Schemas; beide Angaben sind nun konsistent. +- [x] **Schema-Zähler in der Fähigkeitsmatrix berichtigt.** Die aktuelle Liste nennt 17 Schemas einschließlich `embedding`; die historische Prüfnachricht vermerkt den alten Stand 16. +- [x] **Stand des Ausbauplans aktualisiert.** Die Kopfzeile nennt jetzt den aktuellen Prüftag. + +### Screenshots und Oberflächen + +- [x] **Bestand geprüft:** Bilder unter `assets/admin/` und `assets/anwender/` liegen in den passenden Ordnern, haben Alt-Texte und sind kleiner als 200 KB. Keine UI-Aufnahme ist verwaist; Branding-Dateien sind keine Screenshots. +- [x] **Platzierung korrigiert:** Sieben Admin-Screenshots standen erst nach Fehlerabschnitten oder am Seitenende. Die sieben unterschiedlichen Dateien stehen jetzt bei ihren Themen: `admin-filter-voice` (Listenfilter/Mikrofon), `admin-medien` (Bildeditor), `admin-exporte` (Export-Dialog), `admin-eintrags-editor` (Pagebuilder-Editor), `admin-ki-funktionen` (Mikrofon im Chat), `admin-benutzer-rechte` (Benutzerverwaltung) und `admin-customizing` (eigene Exporte). +- [x] **Offene Motive bewertet:** Sitzungshinweis und Suchindex-Hinweisbanner bleiben als redaktionelle Notiz stehen, weil sie im erlaubten Mock-Projekt `corporate` nicht erzeugbar sind. Es gibt keinen Ersatz durch `t1` oder erfundene UI-Zustände. +- [x] **Mock-Änderungen berücksichtigt:** Die Referenzseiten für Aktionen und Custom-Exporte nennen den `corporate`-Mock-Commit `bff84be6`. Die uncommittete Änderung an der Suchindex-Anzeige blieb unangetastet. + +### Abgleich mit den Quell-Repositories + +- [x] **Veraltete Audit-Befunde gegen den aktuellen Seitenbestand geprüft.** REST-Systemrouten, `_meta`, Upload-MIME-Allowlist, Aggregation, Token-Scopes und Embedding-Gruppen haben aktuelle Dokustellen. +- [x] **Aktuelle Arbeitskopie des Admin-Repos beachtet.** `SearchIndexBuildNotice.svelte` ist lokal geändert. Die Änderung betrifft das Polling bei nicht verfügbaren Sammlungen; sie ist nicht Teil des Commits und wurde nicht überschrieben. + +## Arbeitsprotokoll + +| Punkt | Ergebnis / Beleg | +|---|---| +| Quellstände | `tibi-server` HEAD `88118b8e`; `tibi-admin-nova` HEAD `bff84be6`. Admin-Arbeitskopie hat zusätzlich eine uncommittete Änderung an `SearchIndexBuildNotice.svelte`. | +| Coverage | Inventar um die 16 unterschiedlichen System-CRUD- und Meta-Pfadformen erweitert; das bisherige `setup.go`-Inventar ließ die DB-API-Routen aus. | +| Coverage-Schema | `embedding.schema.json` war das einzige nicht zugeordnete Schema; es ist nun `server/konfiguration` zugeordnet. | +| Abschlusstests | Coverage 341/341, Schema-Generator 17 Schemas/167 Properties und idempotent, Build 71 Seiten, Doku-Audit 0 Findings. | +| Review | Erstreview fand einen kosmetischen P2 zum Schema-Zähler; Generator und Ausgabe wurden korrigiert. Finalreview bestätigte danach keine offenen P1-/P2-Befunde sowie Screenshot-, Quellen- und Coverage-Angaben. | +| Server-Lücken gegengeprüft | System-CRUD und `_meta`: `reference/rest-system.mdx`; Upload-MIME-Regeln: `server/konfiguration.mdx`; Aggregation: `projekt/abfragen-lesen.mdx`; Token-Scopes: `projekt/rechte-tokens.mdx`; Embedding-Gruppen: `server/konfiguration.mdx` und `server/betrieb.mdx`. | +| Screenshot-Bestand | 67 Bildplatzierungen, 66 eindeutige WebP-Dateien: 17 Admin- und 49 Anwender-Bilder. Alle liegen im passenden Unterordner, haben Alt-Text und sind kleiner als 200 KB. `favicon.svg` und `admin-nova.png` sind keine UI-Screenshots. `seiten-bloecke.webp` wird in zwei passenden Abschnitten derselben Anwender-Seite wiederverwendet. | +| Screenshot-Platzierung | Sieben unterschiedliche Admin-Bilder an die thematisch passenden Abschnitte verschoben. Listen-Mikrofon (`admin-filter-voice`) und Chat-Mikrofon (`admin-ki-funktionen`) sind getrennte Screenshots; Anwender-Bilder standen bereits neben den zugehörigen Schritten. | +| Offene Screenshot-Motive | `anwender/anmelden.mdx`: Inaktivitätsdialog im Mock deaktiviert. `anwender/lesen-suchen-filtern.mdx`: Corporate-Mock hat keine Suchkonfiguration, die das Queue-Banner auslösen könnte. Beides bleibt als Kommentar markiert. | + +## Abschluss + +- [x] `npm run coverage` weist alle 341 inventarisierten Elemente zu. +- [x] `npm run gen:schemas` erzeugt 17 Schemas mit 167 Properties idempotent. +- [x] `npm run build` ist erfolgreich (71 Seiten). +- [x] `node scripts/audit-docs.mjs` meldet 0 Findings, keine defekten Links, Anker, Bilder, Tabellen oder MDX-Komponenten. +- [x] Änderungen wurden von einem unabhängigen Reviewer geprüft; keine P1-/P2-Befunde. diff --git a/plans/t-shots-arbeitsauftrag.md b/plans/t-shots-arbeitsauftrag.md index 465ce5c..6c80296 100644 --- a/plans/t-shots-arbeitsauftrag.md +++ b/plans/t-shots-arbeitsauftrag.md @@ -41,7 +41,7 @@ Verbindlich für den Agenten, der T-SHOTS ausführt. Stand: 2026-10-16. ## Bewusst offene Motive (Hinweise für spätere Runden) Stand 2026-10-17: Alle Anwender- und Admin-Seiten haben mindestens ein Bild (66 Bilder, alle aus -`corporate`). Zwei Motive sind **im Mock nicht darstellbar** und bleiben als Kommentar-Hinweis in der +`corporate`; Aktionen/Exporte im Mock seit `tibi-admin-nova` bff84be6). Zwei Motive sind **im Mock nicht darstellbar** und bleiben als Kommentar-Hinweis in der jeweiligen Seite stehen — bitte nicht „irgendwie" aus `t1` oder einem anderen Projekt erzeugen: | Seite | Motiv | Grund (am Code belegt) | diff --git a/scripts/audit-docs.mjs b/scripts/audit-docs.mjs index f1d2f67..7615798 100644 --- a/scripts/audit-docs.mjs +++ b/scripts/audit-docs.mjs @@ -234,7 +234,8 @@ for (const f of files) { stats.asciiUmlauts.push(rel(f)); if (/(?:waehl|einstell(?:ung)?en?|benutz(?:er)?|sc(?:h)luessel)/i.test('') ) {} // noop - // Hüllen-Reste (nur Fließtext — in Codeblöcken sind „Platzhalter"/„TODO" legitime Beispieltexte) + // Hüllen-Reste (nur konkrete Redaktionsmarker; Fachbegriffe wie „Platzhalter" + // und gültige Zustandsbeschreibungen wie „noch nicht registriert" sind kein Befund.) const proseText = (() => { const out = []; let f = false; @@ -244,14 +245,20 @@ for (const f of files) { } return out.join('\n'); })(); - ['Für spätere Agenten', 'TODO', 'FIXME', 'noch nicht', 'Hülle', 'Platzhalter', 'TBD', 'WIP'] - .forEach((k) => { - const idx = proseText.indexOf(k); + [ + { label: 'Für spätere Agenten', pattern: /Für spätere Agenten/i }, + { label: 'TODO/FIXME/TBD/WIP', pattern: /\b(?:TODO|FIXME|TBD|WIP)\b/i }, + { label: 'Hülle', pattern: /\bHülle\b/i }, + { label: 'unersetzter Platzhalter-Vermerk', pattern: /\bStand\s*:\s*Platzhalter\b/i }, + ].forEach(({ label, pattern }) => { + const match = pattern.exec(proseText); + if (!match) return; + const idx = match.index; if (idx < 0) return; const line = proseText.slice(0, idx).split(/\r?\n/).length; const ctx = proseText.split(/\r?\n/)[line - 1]?.trim().slice(0, 110) ?? ''; - add(f, 'hollow', `Marker "${k}": ${ctx}`, line); - stats.hollowMarkers.push(`${rel(f)}:${line} ${k}`); + add(f, 'hollow', `Marker "${label}": ${ctx}`, line); + stats.hollowMarkers.push(`${rel(f)}:${line} ${label}`); }); // Verbotene Namen diff --git a/scripts/coverage-inventory.mjs b/scripts/coverage-inventory.mjs index b22e078..ce669b1 100644 --- a/scripts/coverage-inventory.mjs +++ b/scripts/coverage-inventory.mjs @@ -43,7 +43,7 @@ function warn(msg) { console.error(`WARN: ${msg}`); } -/** 1. Routen: apiGroup.GET/POST/PUT/DELETE("pfad") + adm.* + OPTIONS aus setup.go, Duplikate raus. */ +/** 1. Routen: Controller-Routen aus setup.go plus System-CRUD/Meta-Routen aus dbapi/register.go. */ function collectRoutes() { const file = path.join(SERVER_ROOT, "internal", "controller", "setup.go"); if (!existsSync(file)) { @@ -60,6 +60,18 @@ function collectRoutes() { let m; while ((m = re.exec(src)) !== null) found.add(m[m.length - 1]); } + + // RegisterModel erzeugt für diese Modelle GET/POST auf der Collection-Route + // sowie GET/PUT/DELETE auf der :id-Route. AddMetaRoute erzeugt _meta und + // eine /_meta/-Route je registriertem Modell. Diese Routen liegen + // in dbapi/register.go und waren im bisherigen setup.go-only-Inventar weg. + const models = ['user', 'project', 'org', 'team', 'token']; + for (const model of models) { + found.add(`/${model}`); + found.add(`/${model}/:id`); + } + found.add('/_meta'); + for (const model of models) found.add(`/_meta/${model}`); return [...found].sort(); } diff --git a/scripts/gen-schema-matrix.mjs b/scripts/gen-schema-matrix.mjs index 9b53ad0..a00164e 100644 --- a/scripts/gen-schema-matrix.mjs +++ b/scripts/gen-schema-matrix.mjs @@ -36,13 +36,14 @@ function sourceStamp() { } } -// Feste Liste: genau diese 16 Schemas erwartet der Generator. +// Feste Liste: genau diese 17 Schemas erwartet der Generator. const SCHEMAS = [ 'action.schema.json', 'asset.schema.json', 'collection-meta.schema.json', 'collection.schema.json', 'defs.schema.json', + 'embedding.schema.json', 'field-list.schema.json', 'field-meta.schema.json', 'field.schema.json', @@ -239,10 +240,10 @@ function effectiveSchema(file, schema) { const out = []; out.push('---'); out.push("title: 'Schema-Properties (generiert)'"); -out.push("description: 'Alle Properties aller 16 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'"); +out.push("description: 'Alle Properties aller 17 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'"); out.push('---'); out.push(''); -out.push('Diese Seite listet die Properties aller 16 Config-Schemas aus `tibi-types/schemas/config/`.'); +out.push('Diese Seite listet die Properties aller 17 Config-Schemas aus `tibi-types/schemas/config/`.'); out.push(''); out.push('> Generiert, nicht von Hand editieren — neu erzeugen mit `npm run gen:schemas`.'); out.push(''); diff --git a/src/content/docs/admin/aktionen.mdx b/src/content/docs/admin/aktionen.mdx index b8d5bf9..8066b0c 100644 --- a/src/content/docs/admin/aktionen.mdx +++ b/src/content/docs/admin/aktionen.mdx @@ -120,4 +120,4 @@ Klick-Abläufe dazu stehen im Test-Plan `docs/test-plans/40-actions.md` (Methode Anwender-Sicht zum Starten einer Aktion: [Aktionen ausführen](/anwender/aktionen/). -Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `execution`-Abschnitt verifiziert am 4c55f82 (tibi-types: action.schema.json:274-288, 401-403), am 2b091d8 (ActionView.svelte:260-295, 350-382) +Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `execution`-Abschnitt verifiziert am 4c55f82 (tibi-types: action.schema.json:274-288, 401-403), am 2b091d8 (ActionView.svelte:260-295, 350-382); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/actions/reindex-search.yml) diff --git a/src/content/docs/admin/ansichten-listen.mdx b/src/content/docs/admin/ansichten-listen.mdx index b2d097c..c9c52a4 100644 --- a/src/content/docs/admin/ansichten-listen.mdx +++ b/src/content/docs/admin/ansichten-listen.mdx @@ -67,6 +67,8 @@ Manche Sammlungen haben Reiter über der Liste (`meta.subNavigation`, z. B. `?su +![Seitenliste im tibi-admin: geöffneter Filter mit Feld-Filtern, Mikrofon-Symbol im fokussierten Seitentitel-Feld und Paginierung in der Fußzeile](../../../assets/admin/admin-filter-voice.webp) + ## Mehrfachauswahl und Tastatur - Auswahl per Checkbox, `Leertaste` oder `a` (alle umschalten). Pfeiltasten bewegen den Fokus, `Enter` öffnet den Eintrag. @@ -101,8 +103,6 @@ Teile eine gefilterte Liste per URL — Empfänger sehen exakt dieselbe Auswahl, | 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 | -![Seitenliste im tibi-admin: geöffneter Filter mit Feld-Filtern, Mikrofon-Symbol im fokussierten Seitentitel-Feld und Paginierung in der Fußzeile](../../../assets/admin/admin-filter-voice.webp) - Anwender-Sicht zum Ändern vieler Einträge auf einmal: [Massenbearbeitung](/anwender/massenbearbeitung/). Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/admin/benutzer-rechte.mdx b/src/content/docs/admin/benutzer-rechte.mdx index ab2300e..3d5f89c 100644 --- a/src/content/docs/admin/benutzer-rechte.mdx +++ b/src/content/docs/admin/benutzer-rechte.mdx @@ -51,6 +51,8 @@ Der Org-Drawer zeigt **Einstellungen** (**Name**, **Branche**, **Ort**, **Websit +![Benutzerverwaltung im tibi-admin: Benutzerliste mit Rollen-Badges und Team-Chips, rechts der geöffnete Detail-Drawer mit Rollenauswahl und Organisations-Zuordnung](../../../assets/admin/admin-benutzer-rechte.webp) + ## Rollen und Chips @@ -151,8 +153,6 @@ Stellvertretung nur mit Freigabe nutzen — du handelst mit den Rechten der vert | 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 | -![Benutzerverwaltung im tibi-admin: Benutzerliste mit Rollen-Badges und Team-Chips, rechts der geöffnete Detail-Drawer mit Rollenauswahl und Organisations-Zuordnung](../../../assets/admin/admin-benutzer-rechte.webp) - 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 2b091d8 2026-10-17 (tibi-admin-nova); Projekt-Admin-Token verifiziert am 4c55f82 (tibi-types: project.schema.json:227-261), am 68b4278 (tibi-server: models/project.go:116-120) diff --git a/src/content/docs/admin/customizing.mdx b/src/content/docs/admin/customizing.mdx index 11c6320..c80fdad 100644 --- a/src/content/docs/admin/customizing.mdx +++ b/src/content/docs/admin/customizing.mdx @@ -71,11 +71,11 @@ Volle Kontext-Tabelle in der Repo-Doku `custom-export-script.md`; Bedienung unte +![Angepasste Listenansicht im tibi-admin: Seitenliste mit Filter-Reitern und geöffnetem Export-Dialog mit den eigenen Export-Reitern Seiten-Report und Seiten-CSV](../../../assets/admin/admin-customizing.webp) + -![Angepasste Listenansicht im tibi-admin: Seitenliste mit Filter-Reitern und geöffnetem Export-Dialog mit den eigenen Export-Reitern Seiten-Report und Seiten-CSV](../../../assets/admin/admin-customizing.webp) - -Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Widerspruchsprüfung am 2026-10-17: veraltete `meta.views`-Zeile parallel zu `meta.viewHint` korrigiert, kein Custom-Views-Widerspruch mehr. +Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/collections/pages.yml); Widerspruchsprüfung am 2026-10-17: veraltete `meta.views`-Zeile parallel zu `meta.viewHint` korrigiert, kein Custom-Views-Widerspruch mehr. diff --git a/src/content/docs/admin/eintrags-editor.mdx b/src/content/docs/admin/eintrags-editor.mdx index 9fd9177..9ece34d 100644 --- a/src/content/docs/admin/eintrags-editor.mdx +++ b/src/content/docs/admin/eintrags-editor.mdx @@ -75,6 +75,8 @@ Sprachwechsel-Tastenkürzel: `Strg + L` (zyklisch durch die Inhaltssprachen). Seitenfelder (`pagebuilder`) rendert `PagebuilderWidget` als Stapel aus Block-Karten mit Block-Label und Farbpunkt. Ein Klick öffnet den Overlay-Editor (`PagebuilderOverlay`): links das Formular, rechts die Live-Vorschau, oben der Modus-Umschalter (**Nur Formular**, **Formular und Vorschau**, **Nur Vorschau**) und **OK** (oder `Esc`) zum Schließen. Das Übersichts-Overlay (`PagebuilderOverviewOverlay`, Knopf **Pagebuilder-Overlay öffnen**) listet alle Blöcke als Blueprint-Karten (`BlueprintCard`: Typ, Bilder, Kind-Elemente, weitere Felder) zum Anspringen und Umsortieren. Unter der Vorschau steuert `PagebuilderViewportControl` die simulierte Breite: **Desktop** (1280), **Tablet** (768), **Mobil** (375), per Slider frei von 320 bis 1920 px. Blöcke anlegen und füllen steht unter [Seiten bauen](/anwender/seiten-bauen/). +![Eintrags-Editor im tibi-admin: Pagebuilder-Blöcke im Formular, Übersetzungsleiste mit DE- und EN-Reitern und Seitenleiste mit Einstellungen und Metadaten](../../../assets/admin/admin-eintrags-editor.webp) + ## Tastatur | Kürzel | Wirkung | @@ -101,6 +103,4 @@ Drücke `?` im Editor — die Hilfe listet alle Kürzel inklusive Listen-Kürzel | Ü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 | -![Eintrags-Editor im tibi-admin: Pagebuilder-Blöcke im Formular, Übersetzungsleiste mit DE- und EN-Reitern und Seitenleiste mit Einstellungen und Metadaten](../../../assets/admin/admin-eintrags-editor.webp) - Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/admin/exporte.mdx b/src/content/docs/admin/exporte.mdx index f0977d6..b8602ae 100644 --- a/src/content/docs/admin/exporte.mdx +++ b/src/content/docs/admin/exporte.mdx @@ -19,6 +19,8 @@ Du exportierst Einträge einer Sammlung im **tibi-admin** (Verwaltungs-Backend, +![Export-Dialog im tibi-admin: Formatwahl zwischen JSON, CSV und XLSX sowie Spaltenliste mit vorausgewählten Feldern](../../../assets/admin/admin-exporte.webp) + | Format | Technik | Wofür | |---|---|---| | `JSON` | Rohdatensätze als Datei | Weiterverarbeitung, Sicherung, Import anderswo | @@ -107,6 +109,4 @@ Details für Entwickler (Styling per `cell.s`, Spaltenbreiten, Autofilter) stehe | 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 | -![Export-Dialog im tibi-admin: Formatwahl zwischen JSON, CSV und XLSX sowie Spaltenliste mit vorausgewählten Feldern](../../../assets/admin/admin-exporte.webp) - Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `ctx`-Tabelle und Beispiel verifiziert am 2b091d8 (custom-export.types.ts:17-102, custom-export-script.md, custom-export-result.ts:14-18) diff --git a/src/content/docs/admin/ki-funktionen.mdx b/src/content/docs/admin/ki-funktionen.mdx index c06966b..d1bb989 100644 --- a/src/content/docs/admin/ki-funktionen.mdx +++ b/src/content/docs/admin/ki-funktionen.mdx @@ -89,6 +89,8 @@ Verhalten: Quelle zuerst Browser-**„Systemstimme auf diesem Gerät“** (passe +![Geöffneter Nova-Chat im tibi-admin: Begrüßungsnachricht, Eingabefeld mit Mikrofon-Knopf und Sammlungsübersicht des Corporate-Projekts dahinter](../../../assets/admin/admin-ki-funktionen.webp) + 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 @@ -143,6 +145,4 @@ Wichtig zur Einordnung: Der Admin-Chat läuft über den Proxy (`/api/ai/chat`, ` | **„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 | -![Geöffneter Nova-Chat im tibi-admin: Begrüßungsnachricht, Eingabefeld mit Mikrofon-Knopf und Sammlungsübersicht des Corporate-Projekts dahinter](../../../assets/admin/admin-ki-funktionen.webp) - Verifiziert am 2b091d8 2026-10-17 (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.mdx b/src/content/docs/admin/konzept.mdx index 4a2310d..42cb9ce 100644 --- a/src/content/docs/admin/konzept.mdx +++ b/src/content/docs/admin/konzept.mdx @@ -11,9 +11,9 @@ import { Card, CardGrid } from '@astrojs/starlight/components'; - 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). -## Schnellsuche und Tastatur +## Befehlspalette und Tastatur -Die **Befehlspalette** öffnest du mit `/` (oder `Strg`/`Cmd` + `K`) — sie springt zu Sammlungen, Einträgen, Aktionen und Verwaltungsseiten, ohne dass du dich durch die Navigation klickst. `?` zeigt alle Tastenkürzel (Vollreferenz: [Tastatur und Schnellsuche](/reference/tastatur-kurzbefehle/)). +Die **Befehlspalette** öffnest du mit `/` (oder `Strg`/`Cmd` + `K`) — sie springt zu Sammlungen, Einträgen, Aktionen und Verwaltungsseiten, ohne dass du dich durch die Navigation klickst. `?` zeigt alle Tastenkürzel (Vollreferenz: [Tastatur und Befehlspalette](/reference/tastatur-kurzbefehle/)). ![Befehlspalette im tibi-admin über Corporate Website: Suchfeld mit dem Hinweis „Befehl eingeben…", Trefferliste mit Navigation, Sammlungen und Aktionen](../../../assets/admin/admin-befehlspalette.webp) diff --git a/src/content/docs/admin/medien.mdx b/src/content/docs/admin/medien.mdx index f2cf9fe..d6ed39e 100644 --- a/src/content/docs/admin/medien.mdx +++ b/src/content/docs/admin/medien.mdx @@ -47,6 +47,8 @@ Den Editor öffnest du aus der Kachel oder aus Datei-Feldern (`Bild bearbeiten`) Welche Werkzeuge verfügbar sind, steuert die Projekt-Konfiguration (`crop`, `rotate`, `flip`, `scale`, `focalPoint`, `adjust`, `palette`). +![Bildeditor im tibi-admin als Vollbild-Dialog: Werkzeugleiste mit Zuschnitt, Anpassung und Skalierung über dem geöffneten Foto, dahinter das abgedunkelte Medienraster](../../../assets/admin/admin-medien.webp) + ## Einbetten Aus Redakteurs-Sicht gibt es drei Wege, eine Datei in Inhalte zu bringen: @@ -78,6 +80,4 @@ Bilder im Fließtext verwaltet das `richtext`-Widget des Editors (siehe [Eintrag | 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 | -![Bildeditor im tibi-admin als Vollbild-Dialog: Werkzeugleiste mit Zuschnitt, Anpassung und Skalierung über dem geöffneten Foto, dahinter das abgedunkelte Medienraster](../../../assets/admin/admin-medien.webp) - Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/aktionen.mdx b/src/content/docs/anwender/aktionen.mdx index 3adb737..d4bed6a 100644 --- a/src/content/docs/anwender/aktionen.mdx +++ b/src/content/docs/anwender/aktionen.mdx @@ -54,4 +54,4 @@ Ein gestarteter Lauf lässt sich nicht abbrechen. Ein gestarteter Lauf lässt sich nicht abbrechen; ein zweiter Lauf löst Versand und Berechnung erneut aus. -Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) +Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/actions/reindex-search.yml) diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 1cf701a..d32be01 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -3,7 +3,7 @@ title: Tibi Doku 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. + tagline: Headless-CMS mit Go-Backend und Svelte-Frontends — hier steht, wie du damit baust. actions: - text: Schnellstart link: /einstieg/schnellstart/ diff --git a/src/content/docs/reference/schema-properties.md b/src/content/docs/reference/schema-properties.md index b42d26f..8c9d9cc 100644 --- a/src/content/docs/reference/schema-properties.md +++ b/src/content/docs/reference/schema-properties.md @@ -1,9 +1,9 @@ --- title: 'Schema-Properties (generiert)' -description: 'Alle Properties aller 16 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.' +description: 'Alle Properties aller 17 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.' --- -Diese Seite listet die Properties aller 16 Config-Schemas aus `tibi-types/schemas/config/`. +Diese Seite listet die Properties aller 17 Config-Schemas aus `tibi-types/schemas/config/`. > Generiert, nicht von Hand editieren — neu erzeugen mit `npm run gen:schemas`. @@ -142,6 +142,23 @@ Dieses Schema definiert nur **`$ref`-Bausteine** (kein eigenes Config-Ziel): | `methodPermissionGet` | boolean oder object | — | — | | `methodPermissionWrite` | boolean oder object | — | — | +## embedding + +*Tibi server config — embedding section (server-level, not project config)* — `embedding.schema.json` + +| Property | Typ | Pflicht | Vorgabe/Default | Beschreibung | +| --- | --- | --- | --- | --- | +| `providers` | Liste von `provider` — object | nein | — | — | +| `groups` | Liste von `group` — object | nein | — | — | +| `goldenPath` | string | nein | — | Verzeichnis der Gold-Dateien für die Mitglieds-Prüfung (Vorgabe: testdata/embedding-golden relativ zum Arbeitsverzeichnis). Erzeugen mit cmd/embed-probe-golden. Ohne verankerte Gold-Datei prüft die Gruppe nur gegen ihre Referenz. | + +### Bausteine in embedding + +| Baustein | Felder | Pflicht | +| --- | --- | --- | +| `provider` | `name`, `type`, `model`, `modelPath`, `dimensions`, `baseURL`, `apiKey`, `documentPrefix`, `queryPrefix`, `timeoutPerAttempt`, `slowThreshold`, `revision`, `sparse` | `name` | +| `group` | `name`, `description`, `members`, `onSingleQuery`, `onBulkWrite`, `health` | `name`, `members` | + ## field-list *Tibi field list config* — `field-list.schema.json` @@ -383,4 +400,4 @@ Pflicht: `name`. | `permissions` | Liste von string | nein | — | Bare permission names for team-based access (Phase 2). Empty = admin-only in Phase 1. | | `enabled` | boolean | nein | `false` | Whether this snapshot profile is active. Disabled profiles are skipped by the scheduler but can still be triggered manually. | -Generiert aus `tibi-types 4c55f82` (Stand 2026-10-12) — Änderungen an den Schemas dort erfordern `npm run gen:schemas`. +Generiert aus `tibi-types 3bf8055` (Stand 2026-10-17) — Änderungen an den Schemas dort erfordern `npm run gen:schemas`. diff --git a/src/content/docs/reference/schemas.mdx b/src/content/docs/reference/schemas.mdx index fee0e24..481a19d 100644 --- a/src/content/docs/reference/schemas.mdx +++ b/src/content/docs/reference/schemas.mdx @@ -9,7 +9,7 @@ Deine `api/*.yml`-Dateien sind durch JSON-Schemas geprüft. Die Schemas liegen i ## Schema-Liste -Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten): +Das Verzeichnis enthält 17 Dateien: | Schema | Gilt für | Pflichtfelder | | --- | --- | --- | @@ -29,6 +29,7 @@ Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten): | `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 | — | +| `embedding.schema.json` | `embedding:` in der Server-`config.yml` | keine (Provider und Gruppen sind optional) | ## Vollständige Property-Matrix @@ -91,4 +92,4 @@ tibi-server beim Reload (Bedeutung) - Schlage einen Hook-Kontext nach: Hook-Kontexte. - Verstehe Fehlermeldungen: Fehlerbilder. -Verifiziert am 4c55f82 2026-10-12 (tibi-types) +Verifiziert am 3bf8055 2026-10-17 (tibi-types, 17 JSON-Schemas einschließlich embedding.schema.json) diff --git a/src/content/docs/reference/tastatur-kurzbefehle.mdx b/src/content/docs/reference/tastatur-kurzbefehle.mdx index 6a52a64..bc4a9d4 100644 --- a/src/content/docs/reference/tastatur-kurzbefehle.mdx +++ b/src/content/docs/reference/tastatur-kurzbefehle.mdx @@ -1,5 +1,5 @@ --- -title: 'Tastatur und Schnellsuche' +title: 'Tastatur und Befehlspalette' description: 'Alle Tastenkürzel, die Befehlspalette und die Breadcrumb-Navigation im tibi-admin.' ---