- Issues: tibi-server #42-#48, tibi-admin-nova #2-#5, tibi-types #3/#4 (mit Beleg und KI-Signatur) - plans/offene-issues.md: Nummern eingetragen; plans/t-shots-arbeitsauftrag.md: offene Motive mit Code-Begruendung - P9: 5 Alt-Kopien geloescht (~6,1 GB, nur Yarn-Cache dirty, unpushed=0); 6 Kandidaten behalten (unpushed Commits bzw. Quell-/Doku-Arbeit) - dokumentiert in plans/doku-audit.md 12.1a - Build gruen, 0 tote Links/Anker/Bilder
815 lines
71 KiB
Markdown
815 lines
71 KiB
Markdown
# Doku-Audit — Übersicht, Lücken, Fehler, Verbesserungen
|
||
|
||
**Zweck:** Vollständige Prüfung der Tibi-Doku (`tibi-docs`) gegen den Code von `tibi-server`, `tibi-admin-nova`, `tibi-types` und `tibi-svelte-starter` — mit Phasenplan und Checklisten zum Abarbeiten.
|
||
|
||
**Stand:** 2026-10-16, umgesetzt am 2026-10-17.
|
||
|
||
> **Zahlen in §1 sind der Audit-Stand vom 16.10.** (61 Seiten, 30 Screenshots) — bewusst als Schnappschuss stehen gelassen.
|
||
> **Ist-Stand nach der Umsetzung (17.10.):** 70 Inhaltsseiten, **66 Screenshots** (49 Anwender, 17 Admin), 71 Build-Seiten,
|
||
> 0 tote Links/Anker/Bildpfade, 8 legitime „Platzhalter"-Marker, `npm run build` grün. Jede Anwender- und jede Admin-Seite hat mindestens ein Bild.
|
||
> Nicht aus dem Mock darstellbar (Platzhalter mit Begründung): Suchindex-Banner (`interceptor.ts:3073-3080` — Queue > 0 nur bei `ngram`/`vector` und `_searchPending`, `corporate` hat keine `search`-Config),
|
||
> Session-Timeout (`inactivityTracker.ts:47` — im Mock No-op), KI-Werkzeugstatus/Vision (kein KI-Backend), Drill-Down/Sprungziele, Inline-Anlage/Rückverweise.
|
||
|
||
**Rahmen (aus der Zielsetzung):**
|
||
Die Doku **soll** beschreiben: (a) alle Funktionen des tibi-server für Entwickler und Administratoren beim Aufsetzen und Betreiben von Projekten, (b) alle tibi-admin-nova-Funktionen, die Entwickler zum korrekten Konfigurieren brauchen, (c) alle tibi-admin-nova-Funktionen aus Anwendersicht anhand von Screenshots (Mock-Projekt `corporate`, nie `t1`).
|
||
Die Doku **soll nicht**: den Quellcode der Tibi-Repos für die Core-Weiterentwicklung erklären, und den alten `tibi-admin` (vor Nova) beachten.
|
||
|
||
---
|
||
|
||
## 0. Artefakte dieses Audits
|
||
|
||
| Datei | Inhalt | Zeilen |
|
||
|---|---|---|
|
||
| `plans/doku-audit.md` | **dieses Übersichtsdokument** (Ergebnis + Phasenplan) | — |
|
||
| `plans/audit/01-server-features.md` | tibi-server: Feature-Matrix, Routen, Hooks, MCP, Config, Lücken, Fehler | 200 |
|
||
| `plans/audit/02-admin-interfaces.md` | tibi-admin-nova: Entwickler-Schnittstellen, fehlende Interface-Doku, UI-Inventar, Screenshot-Lücken | 128 |
|
||
| `plans/audit/03-types-starter.md` | tibi-types-Schemas + Starter: undokumentierte Properties, Starter-Lücken | 125 |
|
||
| `plans/audit/04-legacy-docs.md` | Alt-Doku-Inventar in den Nachbar-Repos, Wegfall-Kandidaten, Repo-Hygiene | 106 |
|
||
| `plans/audit/05-review-einstieg-server.md` | Seitenreview `einstieg/` + `server/` (35 Befunde) | 68 |
|
||
| `plans/audit/05-review-projekt.md` | Seitenreview `projekt/` (50 Befunde) | 88 |
|
||
| `plans/audit/05-review-admin-reference.md` | Seitenreview `admin/` + `reference/` (21 Befunde) | 55 |
|
||
| `plans/audit/05-review-anwender-adr.md` | Seitenreview `anwender/` + `adr/` (25 Befunde) | 58 |
|
||
| `plans/audit-report.json` | Maschinenlesbarer Struktur-Befund (Skript) | — |
|
||
| `scripts/audit-docs.mjs` | Audit-Skript: Frontmatter, Codeblöcke, Links, Anker, Bilder, Tabellen, Stil-Marker, Komponenten-Inventar | 268 |
|
||
| `plans/coverage-report.json` | Bestehendes Coverage-Inventar (Routen/Kontexte/Tools/Schemas) | — |
|
||
|
||
**Belegstatus-Legende** (durchgängig in diesem Dokument):
|
||
|
||
| Symbol | Bedeutung |
|
||
|---|---|
|
||
| ✅ | **selbst am Code/Doku geprüft** (Datei:Zeile liegt vor) |
|
||
| ⚠️ | aus Subagenten-Report übernommen, **nicht selbst nachgeprüft** |
|
||
| ❌ | Report-Behauptung, die ich **widerlegt** habe (siehe §15.3) |
|
||
| 🔍 | `PRUEFEN`-Punkt: offen, braucht Entscheidung/Beleg |
|
||
|
||
**Reproduzieren:**
|
||
```sh
|
||
cd /WM_Dev/src/gitbase.de/cms/tibi-docs
|
||
node scripts/audit-docs.mjs # schreibt plans/audit-report.json
|
||
npm run coverage # schreibt plans/coverage-report.json
|
||
npm run build # muss grün bleiben
|
||
```
|
||
|
||
---
|
||
|
||
## 1. Kennzahlen und Ampel
|
||
|
||
| Bereich | Zahl | Ampel |
|
||
|---|---|---|
|
||
| Seiten / Zeilen | 61 / 7.127 | 🟢 Gerüst steht, alle Bereiche vorhanden |
|
||
| Build | 62 HTML-Dateien (61 Inhaltsseiten + `404.html`), grün, Pagefind + Sitemap ok | 🟢 |
|
||
| Tote interne Links / Anker | 0 | 🟢 |
|
||
| Ungeschlossene Codeblöcke / Codeblöcke ohne Sprach-Tag | 0 / 0 | 🟢 |
|
||
| Frontmatter fehlt | 1 Seite ohne `description` (`reference/openapi.md`) | 🟡 |
|
||
| Kaputte Markdown-Tabellen | 1 (`admin/ki-funktionen.md:40`) | 🟡 |
|
||
| Screenshots | 30 (`anwender/`), 9 Admin-Seiten mit **Platzhalter-Kommentar** (0 Bilder) | 🟠 |
|
||
| Verifiziert-Stempel | 4 verschiedene Formate, 2 Stempelnamen („Verifiziert am" / „Geprüft an"), Hashlängen 7/8 Zeichen | 🟡 |
|
||
| Faktische Fehler (selbst geprüft) | 8 | 🔴 |
|
||
| Faktische Fehler (gemeldet, ungeprüft) | 7 | 🟠 |
|
||
| Nicht dokumentierte Server-Fähigkeiten | 15 | 🔴 |
|
||
| Fehlende Interface-Doku (Admin/Projekt) | 10 Kernpunkte | 🔴 |
|
||
| Undokumentierte Schema-Properties (`tibi-types`) | 10+ | 🔴 |
|
||
| UI-Bereiche ohne Screenshot | 25 | 🔴 |
|
||
| Anwender-Seiten, die komplett fehlen | 5 | 🔴 |
|
||
| Alt-Doku-Dateien, die sofort gelöscht werden können | **0** (nur Repo-Ebene) | ⚪ |
|
||
| Seitenreview-Befunde gesamt | 131 Tabellenzeilen (35 + 50 + 21 + 25) | 🟠 |
|
||
|
||
---
|
||
|
||
## 2. Phasenplan (Übersicht)
|
||
|
||
Reihenfolge nach Risiko/Nutzen — **P7 vor P6**, weil Stil-/Strukturarbeit Überschriften und Slugs ändert und damit Screenshots entwertet. P1 und P2 sind Fehlerkorrekturen (klein, hoher Effekt), P3–P5 sind Substanz, P6a ist Vorarbeit, P7 ordnet, P6b friert ein, P8/P9 sind Ordnung und Abriss. P3 und P4 sind parallelisierbar.
|
||
|
||
| Phase | Name | Inhalt | Aufwand | Abhängigkeit |
|
||
|---|---|---|---|---|
|
||
| **P1** | Falschaussagen tilgen | 8 selbst geprüfte + 7 gemeldete Inhaltsfehler | S (½ Tag) | — |
|
||
| **P2** | Markdown/Struktur/Hygiene | kaputte Tabelle, Hüllen-Rückstände, Stempel-Format, **Link-/Anker-Prüfung als fester Schritt, Redirect-Konzept** | S (1 Tag) | — |
|
||
| **P3** | Server-Lücken schließen | 16 Fähigkeiten: Feld-Level-Permissions, System-CRUD, `_meta`, MIME, Snapshots, Embedding-Gruppen, Scopes, Filecleanup | M–L (2–3 Tage) | P1 |
|
||
| **P4** | Admin-Interface-Lücken schließen | 12 Schnittstellen: `singleton`, `admin.tokens`, `query`, `agent`, `sections`, `MANUALLY`, Export-`ctx`, Action-`execution` | M (2 Tage) | P1 (parallel zu P3) |
|
||
| **P5** | tibi-types + Starter + Fremd-Repo-Doku | undokumentierte Schema-Properties, Playwright/Mock im Starter, Interface-Doku in den Repos selbst | M (1–2 Tage) | P4 |
|
||
| **P6a** | Fehlende Anwender-Seiten | 5 Seiten (Verlauf/Restore, Massenbearbeitung, Aktionen, Backup-Einspielen, Tastenkürzel) | S–M (1–2 Tage) | P2 |
|
||
| **P7** | Stil + Starlight + Struktur | Ton, UI-Text-Treue, Komponenten (`LinkCard`, `Tabs syncKey`, `Icon`), Astro-Config, Slug-/Sidebar-Umbau | M (1–2 Tage) | P6a, P3/P4 (UI-Texte können sich noch ändern) |
|
||
| **P6b** | Screenshots Anwender + Admin | 9 Admin-Motive + 25 UI-Bereiche, alles aus `corporate` | L (3–5 Tage) | P7 (erst nach Slug-/Text-Freeze) |
|
||
| **P8** | Meta/Betrieb | AGENTS.md-Widerspruch, Sync-Skripte, Coverage v2, Stempel-Norm, Staleness-Regel, Issues an die Repos | S (1 Tag) | P2 |
|
||
| **P9** | Alt-Doku-Abbau | Repo-Hygiene, Wegfall-Bedingungen je Alt-Datei | S–M | P3–P7 |
|
||
|
||
**Warum diese Reihenfolge (falsifizierbar):** P7 verschiebt Slugs und ändert Überschriften/Sidebar; jede Stunde Screenshot-Arbeit davor müsste danach teilweise wiederholt werden. Umgekehrt kostet die Verschiebung nichts, weil P6b keine Inhalte mehr ändert. Falls sich zeigt, dass P7 doch Inhalte anfasst, die Bilder zeigen, ist die Reihenfolge zu revidieren (Re-Shoot-Zähler als Messgröße).
|
||
|
||
---
|
||
|
||
## 3. P1 — Faktische Fehler (selbst geprüft ✅)
|
||
|
||
Diese acht Stellen widersprechen dem Code. Jede Zeile nennt Doku-Ort, Code-Beleg und Korrektur.
|
||
|
||
| # | Datei:Zeile | Doku sagt | Code sagt | Korrektur | Beleg |
|
||
|---|---|---|---|---|---|
|
||
| 1 | `server/konfiguration.md:21` und `:99-104` | `bge-m3` → `EMBEDDING_BGE-M3_*` (Bindestrich bleibt stehen) | `normalizeEnvKeyName`: `-` → `_`, dann UPPER → `BGE_M3` (`internal/config/server.go:245-251`) | Alle 6 Beispielzeilen auf `EMBEDDING_BGE_M3_*` ändern, Regel-Satz präzisieren | ✅ |
|
||
| 2 | `projekt/audit-backup.md:107,127,141` | Token-Recht heißt `AllowSnapshot` | Feld heißt `allowSnapshots` (yaml-Tag im Struct `AdminToken`, `internal/models/project.go:120`; Prüfung `AllowSnapshots`) | „`allowSnapshots` (Projekt-Admin-Recht)" durchgängig | ✅ |
|
||
| 3 | `reference/hook-kontexte.md:52` | `crypto.sha256`, `crypto.md5` „(plus weitere)" | Nur 2 Funktionen registriert (`internal/hook/context_crypto.go:13-16`) | „(plus weitere)" streichen | ✅ |
|
||
| 4 | `projekt/mcp-nutzen.md:63-71` | Scope-Tabelle: `.get`, `.post`, `.put`, `.delete` | `MethodToAction("GET")` → `read`, `POST` → `create`, `PUT` → `update` (`internal/config/admin_token.go:115-128`); Detailabschnitte derselben Seite (`:102,120,192,210`) nennen korrekt `.read/.create/.update/.delete` | Tabelle auf `.read/.create/.update/.delete` umstellen | ✅ |
|
||
| 5 | `admin/customizing.md:14` | „`meta.views` (Tabelle, Karten, Kalender …)" steuert die Ansichten | `collection-meta.schema.json` hat **kein** `views` und `additionalProperties:false`; `types/admin.d.ts:452-458`: Custom-Views „not yet supported" | Zeile streichen oder durch die tatsächlich vorhandenen Mittel (`viewHint`, `subNavigation`) ersetzen | ✅ |
|
||
| 6 | `admin/exporte.md:60` | Beispiel ruft `ctx.db.loadAll({ filter: ctx.filter })` | Signatur ist `loadAll(collection, options)` (`frontend/src/lib/utils/custom-export.types.ts:56`) | Beispiel auf `loadAll("blog", { filter: ctx.filter })` korrigieren | ✅ |
|
||
| 7 | `reference/openapi.md` (ganze Seite) | Quelle `TIBI_API_URL/openapi.json`, „Erzeugen mit `npm run sync:openapi`" | Server hat nur `GET /api/v1/_openapi/:project` (`internal/controller/setup.go:692-701`); **kein** `/openapi.json`. Das Skript `scripts/sync-openapi.mjs` ruft genau diesen nicht existenten Pfad → Platzhalter bleibt ewig stehen | Skript auf `_openapi/:project` umstellen (Env `TIBI_NAMESPACE`), Seite generieren | ✅ |
|
||
| 8 | `server/betrieb.md:21` | „`mongo` (MongoDB 7)" | Lokaler Stack: `image: gitbase.de/server/mongo:8` (`tibi-admin-nova/docker-compose-local.yml:133`, `tibi-svelte-starter/docker-compose-local.yml:139`) | „MongoDB 8" | ✅ |
|
||
|
||
**Gemeldet, aber nicht selbst geprüft** (⚠️ — vor dem Fixen kurz verifizieren):
|
||
|
||
| # | Datei:Zeile | Behauptung | Korrektur |
|
||
|---|---|---|---|
|
||
| 9 | `einstieg/neues-projekt.md:68,77` | `$CODING_TIBISERVER_URL` existiert in keinem `.env`/Skript | auf die realen Starter-Variablen umstellen |
|
||
| 10 | `server/schnittstellen.md:62` | „Alle Antworten gzip" absolut | Ausnahmen ergänzen: `.pdf/.mp4/.jpg/.jpeg/.png`, `/metrics` (`setup.go:151-154`) |
|
||
| 11 | `projekt/hooks-schreiben.md:85` | „Ohne `return` … **eingeloggte** Nutzer sehen dann alles" | „anonyme Nutzer" (Starter-Hook filtert nur Anonyme) |
|
||
| 12 | `projekt/sammlungen-anlegen.md:87` | Gruppen-Beispiel „`content`, `content`, `community`" | „`content`, `community`, `system`" (Starter: `content`, `community`, `system`) — ✅ Duplikat selbst bestätigt (`grep group: api/collections/*.yml`) |
|
||
| 13 | `projekt/audit-backup.md:29` | Audit-`defaultTTL: "0"` = ewig | im Code kein `0`-Sonderfall gefunden → Beleg nachreichen oder Aussage streichen (🔍) |
|
||
| 14 | `projekt/deploy.md:90-91` | `POST /api/ssr?clear=1` als Server-Pfad dargestellt | als **Starter-/Proxy-Pfad** kennzeichnen; Server hat keine `ssr`-Route |
|
||
| 15 | `anwender/orientierung.md:58` | Überschrift „Schnellsuche" | UI-String heißt „**Befehlspalette**" (`frontend/src/lib/i18n/locales/de.json:1207`; ✅ — „Schnellsuche" kommt dort nicht vor) |
|
||
| 16 | `admin/aktionen.md` / `admin/ki-funktionen.md` | „Kurzfassung" | Locale sagt „Zusammenfassung" (⚠️) |
|
||
|
||
---
|
||
|
||
## 4. P2 — Markdown, Struktur, Hygiene-Defekte
|
||
|
||
Automatisch gefunden (Skript) und im Review bestätigt:
|
||
|
||
| # | Ort | Defekt | Fix | Beleg |
|
||
|---|---|---|---|---|
|
||
| 1 | `admin/ki-funktionen.md:40` | Tabelle mit inkonsistenter Spaltenzahl (letzte Zeile 2 statt 3 Zellen) → bricht das Rendering der dritten Stufe | Zeile auf drei Zellen umbauen (Stufe, Schwelle, Verhalten) | ✅ Skript |
|
||
| 2 | `reference/hook-kontexte.md:65` | **Aufbau-Rückstand in Nutzer-Doku**: „Die Hülle nannte nur: db, http, …" | Absatz ersetzen durch: „Diese Pakete existieren zusätzlich zur Erstfassung: …" | ✅ |
|
||
| 3 | `reference/openapi.md` | kein `description` in Frontmatter, „Stand: Platzhalter" | nach P1-#7 generieren | ✅ Skript |
|
||
| 4 | `einstieg/neues-projekt.md:81`, `einstieg/schnellstart.md:8`, `server/uebersicht.md:12` | `:::caution` / `:::danger` / `:::note`-Direktiven — **3 Einzelfälle** im ganzen Repo (sonst 86× `<Aside>`) | auf `<Aside type="…">` vereinheitlichen | ⚠️/✅ (Vorkommen selbst bestätigt) |
|
||
| 5 | `admin/ansichten-listen.md:76`, `admin/exporte.md:40`, `projekt/…` | `#`-Überschriften **innerhalb** von Codeblöcken (Skript-Fehltreffer) → keine echten Fehler, aber Prüfregel dokumentieren | keine Änderung nötig | ✅ |
|
||
| 6 | `projekt/pagebuilder-dev.md:215` | Überschrift 100 Zeichen lang | kürzen, Rest in den Text | ✅ Skript |
|
||
| 7 | alle Seiten | „Suchbegriffe:"-Zeile in 7 Seiten, „Suche-Begriffe" (Bindestrich) in 4 Seiten, in 8 Seiten ganz ohne | einheitlich „Suchbegriffe:" überall oder nirgends | ⚠️ |
|
||
| 8 | Seitenfüße | Stempel-Format: 11× „Geprüft an 2b091d89" (ohne Datum), 15× „Verifiziert am <hash> <datum> (repo)", Hashlängen 7 und 8 | Norm „`Verifiziert am <kurzhash> <JJJJ-MM-TT> (<repo>[, …])`", AGENTS.md §2 ergänzen | ✅ (Inventar selbst erhoben) |
|
||
| 9 | alle Seiten | ungenutzte Starlight-Importe (z. B. 4 Server-Seiten teilen eine 8er-Importzeile) | Imports auf tatsächlich benutzte Komponenten kürzen | ⚠️ |
|
||
| 10 | `anwender/*.md` | Fußzeile „Geprüft an … (tibi-admin-nova)" **ohne Datum** (11×) | Datum ergänzen | ✅ |
|
||
|
||
Bilder: **0 verwaiste, 0 doppelte** Dateien — alle 30 `.webp` genau einmal referenziert, alle mit deutschem Alt-Text, alle ≤ 78 KB. 🟢
|
||
|
||
---
|
||
|
||
## 5. P3 — Lücken: tibi-server-Funktionen ohne Dokustelle
|
||
|
||
Aus `plans/audit/01-server-features.md`, sortiert nach Wirkung für Projektentwickler/Admins. Code-Belege dort im Detail.
|
||
|
||
| # | Fehlende Fähigkeit | Code-Beleg | Wo sie hingehört |
|
||
|---|---|---|---|
|
||
| 1 | **Feld-Level-Permissions** (`readonlyFields`, `hiddenFields`, Feldsichtbarkeit je Rolle) | `internal/models/field_permissions.go`, `http_status.go:53-58`; Server-Doc `17-field-level-permissions.md` (546 Z.) | eigene Seite `projekt/feld-rechte.md` |
|
||
| 2 | **System-CRUD per REST** (`user/project/org/team/token`, je 5 Routen) | `internal/dbapi/register.go:90-94` | `reference/rest-system.md` |
|
||
| 3 | **`GET /_meta`, `GET /_meta/<collection>`** | `internal/dbapi/register.go:100-114` | `reference/rest-system.md` + Querverweis `projekt/mcp-nutzen.md` |
|
||
| 4 | **`token`-Collection-Felder** (`scopes`, `expiresAt`) | `internal/models/token.go:39-76` | `projekt/rechte-tokens.md` |
|
||
| 5 | **Scope-Katalog** (System- vs. Namespace-Scopes, UND-Regel Token × Besitzer) | `internal/models/token_scope_catalog.go:47-90` | `projekt/rechte-tokens.md` |
|
||
| 6 | **`upload.allowedMimeTypes`** | `internal/config/server.go:46` | `server/konfiguration.md` |
|
||
| 7 | **Snapshot-Detailfelder** (`mode: include/exclude`, `collectionDedup`, `permissions`, `retention.maxAge/maxSizeBytes`) und Einzelrouten (`stats`, `prune`, `trigger`, `:id/download`) | `internal/controller/setup.go:436-495`, `snapshot_config.go:34-93` | `projekt/audit-backup.md` |
|
||
| 8 | **Backup-Restore-Token-Lebenszyklus** (Analyse → `:restoreToken` → Restore/Cleanup) + Admin-Auth-Reihenfolge | `internal/controller/admin_backup*.go`, `admin_auth.go:20-74` | `projekt/audit-backup.md` |
|
||
| 9 | **Embedding-Gruppen-Tuning** (Policies, Health, Race, Retry, Bulk) | `internal/config/embedding_group.go:44-190`, Env `server.go:489-625` | `server/konfiguration.md` + `projekt/suche.md` |
|
||
| 10 | **Suchmodi jenseits des Starters** (`text/regex/eval/filter`, `autoRegenerate`, Search-Worker, Such-Debug) | `internal/models/collection.go:314`, `controller/search_debug.go` | `projekt/suche.md` |
|
||
| 11 | **`aggregate`** an der Listen-Route (nur in MCP/SSR/Fehlercodes erwähnt) | `internal/controller/collection_get.go` | `projekt/abfragen-lesen.md` |
|
||
| 12 | **Realtime-Hub-Details** (Ringpuffer 256, `LastN/MaxAge/TTL`, Drop-Policy) | `internal/realtime/hub.go:94-179` | `server/schnittstellen.md` |
|
||
| 13 | **Gzip-Ausnahmen** + `_search`-Stripping/NaN-Sanitizing | `internal/controller/setup.go:151-154`, `:814-825` | `server/schnittstellen.md` |
|
||
| 14 | **Filecleanup** (Orphan-Dateien) hat gar keine Dokustelle | `internal/filecleanup/cleanup.go:21-149` | Einzeiler in `server/betrieb.md` + `projekt/dateien-bilder.md` |
|
||
| 15 | **Hook-Cache-Defaults** (MaxEntries 10000, TTL 0, LRU) | `internal/cache/cache.go:23-33` | `reference/hooks-daten.md` |
|
||
| 16 | **Ephemeral REST Tokens**: `tibi-server/docs/24-…md` beschreibt sie, im Code kein Treffer | nur `docs/24*` | 🔍 **Entscheidung nötig**: implementieren oder Server-Doc löschen — nicht in die Nutzer-Doku übernehmen, solange es die Fähigkeit nicht gibt |
|
||
|
||
**Positiv (vollständig abgedeckt):** alle 36 MCP-Tools, alle 23 Hook-Pakete/70 Funktionen, Jobs, Actions, Audit, LLM-Chat, Rate-Limit/Login-Backoff, CORS-Kaskade, suexec, SSR-Hooks, Deploy/Compose-Profile.
|
||
|
||
---
|
||
|
||
## 6. P4 — Lücken: tibi-admin-nova-Entwickler-Schnittstellen
|
||
|
||
Aus `plans/audit/02-admin-interfaces.md`. Alle Punkte fehlen **in tibi-docs und in `tibi-admin-nova/docs`**.
|
||
|
||
| # | Schnittstelle | Wirkung | Beleg |
|
||
|---|---|---|---|
|
||
| 1 | `meta.singleton` (`enabled`, `key`) | Ein-Eintrag-Sammlungen (Einstellungen, Startseite) | `collection-meta.schema.json` |
|
||
| 2 | `project.admin.tokens` (`allowReload`, `allowRegenerateSearch`, `allowBackup`, `allowSnapshots`) | wer Backup/Snapshot/Search-Rebuild per Token darf | `project.schema.json` |
|
||
| 3 | `meta.query` | deklarierte Zusatz-Querykeys für Hooks (`ctx.request().query`) | `collection-meta.schema.json` |
|
||
| 4 | `meta.agent` (`purpose/instructions/fieldHints/workflows`) | Sammlungs-Doku für Agents (MCP/REST `_meta`) | `collection-meta.schema.json` |
|
||
| 5 | `meta.sections` (`group/label/collapsible/collapsed`) | zweite Formular-Gruppierung neben `sidebar` | `collection-meta.schema.json` |
|
||
| 6 | `meta.defaultSort.order: MANUALLY` + Drag-Freigabe | manuelle Reihenfolge als **Config**, nicht nur Bedienung | `collection-meta.schema.json`, `types/admin.d.ts:426ff` |
|
||
| 7 | `meta.viewHint.navigation` (`nodesField`, `declaredTrees`) | Navigationsbaum-Ansicht konfigurieren | Schema, `NavigationTreeField.svelte` |
|
||
| 8 | Export-`ctx` vollständig (`loadAll`-Batching 500, `sort[0]`, `selector` vs. `select`, `csvCell`-Guard, Dateinamen-Sanitizing) | eigene Berichte korrekt schreiben | `frontend/src/lib/utils/custom-export.types.ts:17-100` |
|
||
| 9 | Action-`execution` (`kind`, `cancellable`) + Upload-Fortschritt | Actions abbrechbar/Fortschritt korrekt | `action.schema.json`, `ActionView.svelte:349-379` |
|
||
| 10 | Ladeordnung/Cache der Registry-Loader (Pagebuilder, Exporte), `{eval}`-Asset-Specifier | Assets/Registry korrekt verdrahten | `load-registry.ts:14-60`, `project-asset-specifier.ts:17-50` |
|
||
| 11 | Runtime-System-Config (`system.config.json`, Engine-Modi `auto/api/browser/none`, TTS-Stimmen) | KI-Laufzeit im Admin konfigurieren | `runtime-system-config.ts`, `schemas/config/system-config.schema.json` |
|
||
| 12 | `views`-Widerspruch auflösen (siehe P1 #5) | Doku darf nichts versprechen, was das Schema verbietet | ✅ |
|
||
|
||
🔍 **Nicht verifizierte Begriffe aus dem Ausbau-Auftrag:** `hooksTrigger` und `exportScript` existieren im Code **nicht** (grep ohne Treffer). Vor jeder Dokumentation klären, ob damit `hooks` bzw. `meta.exports` gemeint war.
|
||
|
||
---
|
||
|
||
## 7. P5 — Lücken in den anderen Repos
|
||
|
||
### 7.1 `tibi-types` (Schemas + Hook-Typen)
|
||
|
||
Kein Doku-Verzeichnis vorhanden — die einzige Referenz sind `index.d.ts` und `schemas/config/*.json`. Aus `plans/audit/03-types-starter.md`:
|
||
|
||
| Undokumentierte Property | Wirkung | Beleg |
|
||
|---|---|---|
|
||
| `collection.queryLimits` (`defaultLimit`/`maxLimit`) | erzwungene Limit-Grenzen je Sammlung | `collection.schema.json` |
|
||
| `collection.readonlyFields` / `hiddenFields` | pauschale Feld-Sperre/Verbergung | `collection.schema.json` |
|
||
| `collection.uploadPath` / `upload` | Upload-Ablage und Upload-Regeln je Sammlung | `collection.schema.json` |
|
||
| `collection.strictFields` | unbekannte Felder ablehnen | `collection.schema.json` |
|
||
| `collection.imageFilter` | Bildfilter-Defaults je Sammlung | `collection.schema.json` |
|
||
| `collection-meta.singleton` / `sections` | s. P4 | `collection-meta.schema.json` |
|
||
| `field-meta.hideLabel`, `imageEditor`, `containerProps`, `inputProps`, `schemaRef`, `protected`, `drillDown`, `pageSize` | Widget-/Formularverhalten | `field-meta.schema.json` |
|
||
| `permissionSet.validProjections` | erlaubte Feldprojektionen je Recht | `permissions.schema.json` |
|
||
| `action.output.mapping` (`summary`/`details`/`progress` mit index/count/status/message) | Ergebnis-Darstellung nach Action | `action.schema.json` |
|
||
|
||
**Strukturempfehlung:** `reference/schemas.md` von „Übersicht" zu einer **Property-Matrix** ausbauen (Schema → Property → Typ → Default → Wirkung), generiert aus `schemas/config/*.json` per Skript (analog `scripts/coverage-inventory.mjs`). Damit ist die Seite dauerhaft drift-frei.
|
||
|
||
### 7.2 `tibi-svelte-starter`
|
||
|
||
| Lücke | Beleg/Ort | Ziel in tibi-docs |
|
||
|---|---|---|
|
||
| Playwright-Setup fehlt komplett | `playwright.config.ts`, `tests/` | neues Kapitel `projekt/tests.md` oder Abschnitt in `einstieg/schnellstart.md` |
|
||
| Mock-Modus (`MOCK=1`) nur als Wort | `esbuild.config*.js`, `frontend/` | `einstieg/schnellstart.md` |
|
||
| `api/templates/`, `ssr.yml`, Cache-Regeln | `api/` | `projekt/ssr-website.md` |
|
||
| CI/Deploy-Env (`ci-deploy.sh`, `ci-staging.sh`, `.basic-auth-*`, `ADMIN_ASSET_VERSION`) | Repo-Root | `projekt/deploy.md` |
|
||
| `lib/`-Module, `widgets/`, Sentry | `frontend/src/` | `projekt/ssr-website.md` |
|
||
|
||
### 7.3 `tibi-admin-nova/docs/` und Test-Pläne
|
||
|
||
**Kein Löschkandidat.** 3 Dateien sind Single Source (`collection-config.md`, `custom-export-script.md`, `test-plans/39-preview-resolver.md`, `test-plans/41-search-index-status.md`), 18 weitere sind teilweise die einzige Quelle für Detailverhalten.
|
||
|
||
**Empfehlung statt Löschen:** die drei Vollreferenzen (`collection-config.md` 2.293 Z., `collection-export.md` 327 Z., `custom-export-script.md` 117 Z.) per Sync als **Referenz-Kapitel** in tibi-docs spiegeln (`reference/collection-config.md` …) und im Repo als Quelle belassen — gleiche Mechanik wie beim Server-Sync, nur mit Sidebar-Eintrag.
|
||
|
||
---
|
||
|
||
## 8. P6 — Screenshots und Anwender-UI-Abdeckung
|
||
|
||
### 8.1 Ist
|
||
|
||
- `anwender/`: 30 Bilder, 11 Seiten — inhaltlich vollständig illustriert. 🟢
|
||
- `admin/`: **9 Seiten mit Platzhalter-Kommentar `<!-- Screenshot-Platzhalter (T-SHOTS): … -->`, null Bilder.** 🔴
|
||
|
||
Fehlende Admin-Motive (aus den Kommentaren, ✅ selbst extrahiert):
|
||
|
||
| Seite | Motiv |
|
||
|---|---|
|
||
| `admin/aktionen.md:29` | Action-Ansicht mit Methoden-Reitern, Eingabeformular, Ausführen-Knopf |
|
||
| `admin/ansichten-listen.md:103` | Liste mit Suchfeld, Filter-Popover, Paginierung |
|
||
| `admin/benutzer-rechte.md:103` | Hub mit Benutzerliste + Detail-Drawer (Rollen-Badge, Chips) |
|
||
| `admin/customizing.md:87` | angepasste Listenansicht mit Spaltenwahl und eigenem Export-Reiter |
|
||
| `admin/eintrags-editor.md:103` | Editor mit Formular, Seitenleiste, Übersetzungsleiste |
|
||
| `admin/exporte.md:83` | Export-Dialog mit Formatwahl und Spaltenliste |
|
||
| `admin/ki-funktionen.md:132` | geöffneter KI-Chat mit Werkzeugstatus und Mikrofon-Knopf |
|
||
| `admin/medien.md:81` | Medienraster mit Warteschlange und Bildeditor-Dialog |
|
||
| `admin/setup.md:83` | frisch gestarteter Admin mit Projektliste nach Login |
|
||
|
||
### 8.2 UI-Bereiche ganz ohne Bild (Anwender-Perpektive, 25)
|
||
|
||
Command-Palette-Overlay, Tastaturkürzel-Hilfe, Suchindex-Banner, Bulk-Edit-Panel, Feldsuche/Sprungziele/Drill-Down, Diff-Dialog, JSON-Overlay, FK-Drawer/Inline-Anlage/Rückverweise, Übersetzungsleiste, Medien-Lightbox, Upload-Warteschlange, Fremddatei-Widget, Action-Ansicht (Anwender), KI-Werkzeug-Inspektor/Chat-Verlauf/Vision-Overlay, Audit-/Verlaufs-UI (komplett), Backup-Import-Dialog, Restore-Bestätigung, Benutzer-/Team-/Org-Drawer, Token-Seite, Projekt-Admin-Ansicht, Stellvertretungs-Banner, Session-Timeout-Dialog, Theme-Umschalter, Voice-Filter-Eingabe.
|
||
|
||
### 8.3 Fehlende Anwender-Seiten (mit Code-Beleg)
|
||
|
||
| Vorschlag | Beleg | Warum |
|
||
|---|---|---|
|
||
| `anwender/verlauf-wiederherstellen.md` | `AuditView.svelte`, `AuditHistoryPanel.svelte`, `AuditDiff.svelte`, `AuditRestoreDialog.svelte` | mächtigste ungeklärte UI; Restore ist destruktiv |
|
||
| `anwender/massenbearbeitung.md` | `BulkEditPanel.svelte` | versehentliche Änderungen an vielen Einträgen |
|
||
| `anwender/aktionen.md` | `ActionView.svelte` | Anwender startet Actions, weiß aber nicht, was passiert |
|
||
| `anwender/backup-einspielen.md` | `BackupView.svelte`, `backup-api.ts` | Import/Restore ohne Anleitung = Datenverlustrisiko |
|
||
| `anwender/tastenkombinationen.md` (Anwender-Sicht) | `shortcuts.ts`, `KeyboardShortcuts.svelte` | Referenz existiert, Anwender-Zugang fehlt |
|
||
|
||
### 8.4 Vorgehen (Playwright, Mock)
|
||
|
||
Bestehende Vorlage: `plans/t-shots-arbeitsauftrag.md` — Mock-Admin, Login `admin`/`admin` (`frontend/assets/mock/login.json`), Projekt **Corporate Website** (Mock-Projekte vorhanden: `blog`, `corporate`, `events`, `intranet`, `shop`; **`t1` ist verboten**), Zielpfad `tibi-docs/src/assets/anwender/`, max. 200 KB je Bild, deutscher Alt-Text.
|
||
|
||
Erweiterung für P6:
|
||
1. **Admin-Unterordner** `src/assets/admin/` anlegen (Trennung Anwender-/Admin-Bilder).
|
||
2. Motive 8.1 zuerst (9 Bilder), dann 8.2 in der Reihenfolge der Seiten (25 weitere).
|
||
3. Für die 5 neuen Seiten 8.3 zuerst Text, dann Bilder.
|
||
4. Danach `npm run build` + Alt-Text-Prüfung (`scripts/audit-docs.mjs` prüft automatisch).
|
||
|
||
### 8.5 Daten-/Rechte-Hinweis
|
||
|
||
Screenshots aus dem Mock sind unkritisch. Sobald echte Projekte fotografiert werden: keine Kunden-/Personendaten (AGENTS.md §5). 🔍 Für Review-Screenshots (Bulk, Restore, Stellvertretung) reicht der Mock — bitte bestätigen, dass Mock-Daten im Bild bleiben dürfen.
|
||
|
||
---
|
||
|
||
## 9. P7 — Stil
|
||
|
||
Aus den vier Seitenreviews (131 Befunde; hier die Muster, nicht jeder Einzelfall).
|
||
|
||
| Muster | Beispiel | Regel |
|
||
|---|---|---|
|
||
| **Erfundene UI-Namen** | „Schnellsuche" statt „**Befehlspalette**" (`orientierung.md:58`, `hilfe.md`); „Kurzfassung" statt „**Zusammenfassung**" | jeder fett/„zitierte" UI-String muss wörtlich in `frontend/src/lib/i18n/locales/de.json` stehen — als Prüfschritt in die Abnahme aufnehmen |
|
||
| **Anglizismen/Doppelbegriffe** | „Sichtbare Spalten" vs. „Spaltenwahl"; „Verlauf" vs. „Historie"; „Admin" vs. „tibi-admin" | Glossar in `einstieg/begriffe.md` als Norm, Seiten gleichen darauf ab |
|
||
| **Belehrende Binsen** | „Preise stehen nirgends im Code — erfinde keine" (`llm-nutzen.md:89`); „Übernimm die Liste nicht blind" (`audit-backup.md:96`); „Passiert nicht von selbst" (`dateien-bilder.md:105`) | Imperativ → sachlicher Satz |
|
||
| **Prosa-Wände** | Kennzahlen-Prosa in `ki-funktionen.md:30`; 4 Admin-UI-Absätze in `audit-backup.md:50-58` | Tabelle/`Badge`-Legende statt Fließtext; Admin-Verhalten nach `admin/` verschieben |
|
||
| **Wertungen ohne Beleg** | `suche.md:21` „kein Textindex nötig"; `hooks-schreiben.md:111` „einzige Log-Hilfe" | Absolut-Aussagen abschwächen oder belegen |
|
||
| **Inkonsistente Anführungszeichen** | `„…"` in 2 Dateien gemischt mit `"…"` | eine Form (deutsche Anführungszeichen) |
|
||
| **Platzhalter im Beispiel** | `LIVE_URL=https://www`, `__PROJECT_NAME__` (`deploy.md:15,79`) | `# TODO: echte Domain` in den Block |
|
||
| **Fehlende Ergebnis-Schritte** | Setup-Checkliste als `[ ]`-Codeblock (`neues-projekt.md:12-23`) | echte Task-Liste/`Steps`, damit Fortschritt sichtbar ist |
|
||
| **Duplikate statt Verweise** | `hilfe.md` wiederholt drei Seiten; `qName`-Tabelle wortgleich in `abfragen-lesen.md` und `suche.md`; Widget-Tabellen 3×; `active:true`-Falle in 5 Seiten | kanonische Stelle bestimmen, Rest kurz + Verweis |
|
||
|
||
**Positiv:** keine „man"-Form, saubere Umlaute, keine toten Links, alle Codeblöcke balanciert, keine Seite > 800 Zeilen außer `mcp-nutzen.md` (754).
|
||
|
||
---
|
||
|
||
## 10. P7 — Bessere Starlight-Komponenten und Astro-Konfiguration
|
||
|
||
### 10.1 Komponenten-Einsatz heute (Skript-Inventar ✅)
|
||
|
||
| Komponente | Vorkommen | Bewertung |
|
||
|---|---|---|
|
||
| `Aside` | 86 | gut genutzt; 3 Ausreißer als `:::`-Direktive |
|
||
| `Steps` | 78 | gut genutzt |
|
||
| `TabItem` / `Tabs` | 56 / 25 | **ohne `syncKey`** → Tab-Wahl geht beim Navigieren verloren |
|
||
| `Card` / `CardGrid` | 30 / 7 | Karten enthalten Markdown-Links statt echter Karten-Links |
|
||
| `Badge` | 21–30 | ok |
|
||
| `FileTree` | 3 | ok |
|
||
| `LinkCard` / `LinkButton` / `Icon` / `MarkdownContent` | **0** | ungenutztes Potenzial |
|
||
| Codeblöcke | 432 Zäune, 254 mit `title=` | **0 Zeilenmarkierungen**, **0 `frame=`** |
|
||
|
||
### 10.2 Konkrete Verbesserungen
|
||
|
||
| # | Maßnahme | Wirkung | Beleg |
|
||
|---|---|---|---|
|
||
| 1 | **`Tabs syncKey`** auf allen mehrsprachigen/alternativen Tab-Gruppen (`konfiguration.md:46-77`, `schnittstellen.md:21-60`, `felder-widgets.md`) | gleiche Auswahl bleibt beim Seitenwechsel | ⚠️ |
|
||
| 2 | **`LinkCard`** statt `Card` + Markdown-Link auf Übersichtsseiten (`einstieg/was-ist-tibi.md:30-35`, `server/uebersicht.md:19-33`, `index.mdx`) | ganze Karte klickbar, bessere Tastaturbedienung | ⚠️ |
|
||
| 3 | **`Icon`** in Tabellen/`Steps` bei wiederkehrenden Handlungstypen | schnellere Erfassung | ⚠️ |
|
||
| 4 | **Zeilenmarkierungen** (` ```sh {2,5} `) dort, wo ein Beispiel „die eine Zeile" zeigt (Konfiguration, `.env`, Hook-Beispiele) | Leser sieht die relevante Zeile sofort | ✅ (0 Vorkommen) |
|
||
| 5 | `references`/`frame="none"` für reine Textblöcke, `title=` konsequent (254 von 432 haben es) | einheitliche Optik | ✅ |
|
||
| 6 | `<Tabs>` statt zwei aufeinanderfolgender `Steps` bei Eingabe/Ausgabe (`anwender/ki-nutzen.md:58-75`) und bei Viewport-Presets (`anwender/seiten-bauen.md:89-109`, Werte aus `PagebuilderViewportControl.svelte:22-29`) | Zuordnung Bild ↔ Preset | ⚠️ |
|
||
| 7 | `<Tabs>` je Exportformat (`anwender/exportieren.md:24-34`) | Vergleich CSV/XLSX/JSON statt Klickstrecke | ⚠️ |
|
||
| 8 | **`<Badge>`** für Statusbegriffe statt Fettung (REST-only, Legacy, Pflicht) | konsistente Optik | ⚠️ |
|
||
| 9 | Frontmatter `sidebar.label` für abgekürzte Seitentitel (z. B. „Hook-Referenz: Daten" → „Daten") + `tableOfContents.minHeadingLevel` je Seite | kürzere Sidebar, längere ToC | 🟡 |
|
||
| 10 | `lastUpdated: true` in `astro.config.mjs` + `lastUpdated`-Frontmatter je Seite | Aktualität sichtbar statt Stempel im Fließtext | 🟡 |
|
||
| 11 | `expressiveCode`-Optionen (Theme passend zu `custom.css`, `frameType`) statt Default | einheitliches Code-Bild | ✅ |
|
||
| 12 | Suche: `pagefind`-Optionen (z. B. Sprach-/Stoppwort-Konfiguration), `social`-Einträge erweitern, `editLink` prüfen (zeigt aktuell auf `_edit/master/`) | Suchqualität, Beitragsweg | ✅ |
|
||
|
||
### 10.3 Astro-/Repo-Ebene
|
||
|
||
| # | Befund | Maßnahme |
|
||
|---|---|---|
|
||
| 1 | Sidebar ist **vollständig manuell** (61 Einträge in `astro.config.mjs`) — jede neue Seite braucht 2 Änderungen (Datei + Sidebar) | auf `autogenerate` je Gruppe umstellen, sobald die Ordner stabil sind; bis dahin Sidebar-Check in `scripts/audit-docs.mjs` (existiert bereits) als Pflicht-Abnahme |
|
||
| 2 | keine `src/components/`-Erweiterungen | optional: `TibiShot.astro` (Bild + Alt-Text + Breite), damit Screenshot-Einbau überall gleich aussieht |
|
||
| 3 | `sync-server-docs.mjs` erzeugt **verwaiste Seiten** (24+3), weil die Ziele nicht in der Sidebar stehen — siehe §11 | 🔍 Entscheidung D1 |
|
||
| 4 | `scripts/sync-openapi.mjs` zielt auf nicht existenten Endpunkt (P1 #7) | Skript korrigieren |
|
||
| 5 | `coverage-inventory.mjs` misst Topic-Level („282/282") und damit keine Tiefe | v2: Funktionskörnung + Depth-Gate (siehe `plans/doku-ausbau.md`, Abschnitt „v3") |
|
||
| 6 | keine `robots.txt`/`_headers`/Cache-Regeln für den statischen Betrieb | bei Live-Deploy ergänzen (nginx-Config existiert) |
|
||
|
||
### 10.4 Zusätzliche Dimensionen (aus der Zweitmeinung ergänzt)
|
||
|
||
| # | Dimension | Befund | Maßnahme | Phase |
|
||
|---|---|---|---|---|
|
||
| 1 | **Link-/Anker-Integrität + Redirects** | AGENTS.md §5 sagt selbst, dass der Build interne Links **nicht** prüft; es gibt keine `redirects`-Konfiguration. Jede Slug-Umbenennung in P7 reißt damit unbemerkt Links auf | `scripts/audit-docs.mjs` (prüft Links + Anker bereits) als Pflichtschritt vor jedem Push; Umbenennungen zusätzlich in `astro.config.mjs` → `redirects` eintragen | P2 / P7 |
|
||
| 2 | **Snippet-Verifikation** | „Code schlägt Doku" ist Regel, aber kein Beispiel wird ausgeführt — genau der Fehlertyp aus P1 (#6 `loadAll`, #4 Scope-Namen) | die 6 verifizierten Fehlerbeispiele in eine Prüfliste aufnehmen; wo möglich (Hooks, Export-Skripte) Beispiele gegen `tibi-types`/`demo-api` laufen lassen | P1 / P2 |
|
||
| 3 | **Staleness/Versionierung** | „Verifiziert am `<hash>` <datum>" altert ohne Mechanismus; 4 Formate, 2 Stempelnamen | Norm + Regel „bei jeder Änderung an der Quelle Stempel erneuern" in AGENTS.md; Audit-Skript meldet Stempel älter als N Tage | P8 |
|
||
| 4 | **Onboarding-Reihenfolge (Reise statt Fähigkeit)** | Sidebar ist fähigkeitsgetrieben (`projekt/` folgt dem Schema, nicht dem Ablauf klonen → konfigurieren → bauen → deploy) | `einstieg/schnellstart.md` als Reise ausbauen und die Sidebar-Reihenfolge in `projekt/` gegen diesen Ablauf prüfen | P7 |
|
||
| 5 | **Barrierefreiheit** | Alt-Texte sind vollständig ✅; Kontrast von `--tibi-nova: #c2410c` auf hellem Grund und Dark-Hover sind ungeprüft | Kontrast mit `a11y`-MCP oder Lighthouse prüfen, `--tibi-nova` nur als Deko zulassen | P7 |
|
||
| 6 | **Suche** | Pagefind läuft (62 Dateien, 185 ms) ✅; deutsche Stemming-Qualität und Synonyme („Suchbegriffe:"-Zeile) ungeprüft | Suche mit typischen Anwenderbegriffen testen, ggf. Synonym-Mapping je Seite vereinheitlichen | P7 |
|
||
| 7 | **Mehrsprachigkeit** | bewusst nur `de` (`astro.config.mjs` `locales.root`) | als ADR festhalten (`adr/0004-nur-deutsch.md`), damit die Frage nicht wiederkehrt | P8 |
|
||
| 8 | **Druck/PDF** | nicht vorgesehen | bewusst streichen; Dev-Doku wird online gelesen | — |
|
||
|
||
---
|
||
|
||
## 11. Struktur, Information Architecture, Zielbild
|
||
|
||
### 11.1 Ist-Struktur
|
||
|
||
```
|
||
einstieg/ 4 Seiten (Was ist Tibi, Schnellstart, Begriffe, Neues Projekt)
|
||
server/ 5 (Übersicht, Konfiguration, Betrieb, Sicherheit, Schnittstellen)
|
||
projekt/ 15 (Sammlungen → Deploy)
|
||
admin/ 10 (Konzept, Setup, Customizing, Ansichten, Editor, Medien, Exporte, Aktionen, Rechte, KI)
|
||
anwender/ 11 (Anmelden → KI nutzen)
|
||
reference/ 11 (OpenAPI, Schemas, Hook-Kontexte, 5 Hook-Referenzen, Token-Köpfe, Fehler, Tastatur)
|
||
adr/ 4
|
||
```
|
||
Abgleich Sidebar ↔ Dateien: **vollständig konsistent**, keine Seite ohne Sidebar-Eintrag. 🟢
|
||
|
||
### 11.2 Zielbild „3 Zielgruppen × 1 Ort pro Fähigkeit"
|
||
|
||
Der Rahmen verlangt drei Sichten auf **dieselben** Fähigkeiten. Heute sind sie teils vermischt:
|
||
|
||
| Fähigkeit | Entwickler (Projekt) | Anwender | Gehört heute wo | Soll |
|
||
|---|---|---|---|---|
|
||
| Editor/Widgets | `projekt/felder-widgets.md` | `anwender/eintrag-bearbeiten.md` | + 3 Widget-Tabellen in `admin/*` | Tabellen nur in `admin/customizing.md`, Rest verweist |
|
||
| Verlauf/Restore | — | fehlt | nur `projekt/audit-backup.md:50-58` (Admin-Verhalten in Projekt-Seite) | `admin/` + neue Anwender-Seite |
|
||
| Pagebuilder | `projekt/pagebuilder-dev.md` (660 Z., enthält 65 Z. Admin-UI) | `anwender/seiten-bauen.md` | vermischt | UI-Teil nach `admin/eintrags-editor.md` |
|
||
| MCP | `projekt/mcp-nutzen.md` (754 Z.) | — | de facto Referenz | Werkzeug-Referenz → `reference/mcp-werkzeuge.md` |
|
||
| Snapshots/Backup | `projekt/audit-backup.md` | `anwender/sichern.md` | ok | + `anwender/backup-einspielen.md` |
|
||
|
||
### 11.3 Konkrete Struktur-Maßnahmen
|
||
|
||
1. `reference/` erweitern: `mcp-werkzeuge.md`, `rest-system.md`, `collection-config.md` (Sync aus Nova), `schema-properties.md` (generiert).
|
||
2. `admin/` als **Entwickler-Sicht auf die Oberfläche** schärfen: alle UI-Verhaltensbeschreibungen aus `projekt/*` dorthin.
|
||
3. `anwender/` um die 5 fehlenden Seiten (8.3) erweitern; Ziel = **jede** Bildschirmfläche hat eine Seite.
|
||
4. `projekt/mcp-nutzen.md` und `projekt/pagebuilder-dev.md` auf Leitfaden-Länge kürzen (Ziel < 300 Zeilen), Details in `reference/`.
|
||
5. Querverweis-Konvention: jede Fähigkeit beschreibt **eine** kanonische Seite; andere Seiten nennen sie in 1–2 Zeilen mit Link.
|
||
|
||
---
|
||
|
||
## 12. P9 — Alt-Doku in den anderen Repos: was weg kann
|
||
|
||
**Ehrliche Antwort: als *Duplikat* von tibi-docs kann heute keine Datei weg — 0 Duplikate.** Grund: `tibi-server/docs/` (24 englische Dateien) und `tibi-admin-nova/docs/` (3 Referenzdateien) sind **Quellen**, nicht Kopien; die tibi-docs-Seiten sind davon abgeleitete Nutzer-Doku. Zusätzlich liest `scripts/sync-server-docs.mjs` genau diese Pfade als Sync-Quelle. Erst wenn eine Fähigkeit in tibi-docs **tiefer** steht als in der Quelle, ist die Quelle ein Duplikat.
|
||
|
||
Davon zu trennen sind **Stale-Kandidaten** (beschreiben etwas, das es nicht mehr/nicht gibt) — die dürfen sofort weg oder müssen korrigiert werden, unabhängig von tibi-docs. Es gibt genau einen: `tibi-server/docs/24-ephemeral-rest-tokens.md` (🔍 Entscheidung D3).
|
||
|
||
Und **Repo-Hygiene-Fälle** (Alt-Kopien, kaputte Arbeitsstände) — siehe §12.1.
|
||
|
||
### 12.1 Repo-Ebene: sofort weg (nach Backup-Abgleich)
|
||
|
||
| Pfad | Befund | Empfehlung |
|
||
|---|---|---|
|
||
| `cms/tibi-docs-kaputt/` | defekte Doku-Kopie, eigenes `.git` | löschen |
|
||
| `cms/tibi-admin.bak/`, `tibi-admin.bak2/`, `tibi-admin.kaputt/` | Alt-`tibi-admin` (vor Nova) mit eigenem `.git` | löschen — der alte Admin ist laut Zielsetzung ohnehin ausgeschlossen |
|
||
| `cms/tibi-server.bak/` | Server-Backup-Kopie | löschen |
|
||
| `cms/tibi-docs-legacy/` (inkl. eingechecktem `node_modules/`) | Docpress-Ära | **nach** Volltext-Abgleich gegen `einstieg/begriffe.md` löschen |
|
||
| `cms/tibi-admin/`, `tibi-admin-dev/`, `tibi-admin-master/`, `tibi-admin-server/`, `tibi-starter/` | alte Starter-/Admin-Varianten, READMEs verweisen auf `tibi-svelte-starter` | klären, dann archivieren; `tibi-svelte-starter` als kanonisch erklären |
|
||
| `tibi-server/docs/24-ephemeral-rest-tokens.md` | beschreibt eine Fähigkeit, die im Code nicht existiert (kein Treffer für „ephemeral" außer in dieser Datei) | 🔍 D3: implementieren **oder** Datei löschen — beides ist ein Fortschritt, Liegenlassen nicht |
|
||
|
||
### 12.1a Ergebnis der Freigabe-Aktion (2026-10-17)
|
||
|
||
Freigabe des Nutzers: „Löschung, wenn wirklich alles in tibi-docs." Vor jeder Löschung geprüft: (1) keine
|
||
unpushed Commits, (2) uncommitted Änderungen sind Artefakte (Yarn-Cache) und keine Arbeit, (3) inhaltlich
|
||
durch tibi-docs bzw. durch die Git-Remotes auf `gitbase.de` abgedeckt.
|
||
|
||
| Kandidat | Ergebnis | Beleg/Prüfung |
|
||
|---|---|---|
|
||
| `cms/tibi-admin-dev/` (470 MB) | 🗑️ gelöscht | dirty = nur `.yarn/cache/*` (235/235), `unpushed=0`, Remote `cms/tibi-admin.git` |
|
||
| `cms/tibi-admin-master/` (405 MB) | 🗑️ gelöscht | dirty = nur `.yarn/cache/*` (231/231), `unpushed=0` |
|
||
| `cms/tibi-admin.bak/` (1,8 GB) | 🗑️ gelöscht | dirty = nur `.yarn/cache/*` (64/64), `unpushed=0` |
|
||
| `cms/tibi-admin.bak2/` (2,3 GB) | 🗑️ gelöscht | dirty = nur `.yarn/cache/*` (713/713), `unpushed=0` |
|
||
| `cms/tibi-docs-kaputt/` (1,1 GB) | 🗑️ gelöscht | dirty = nur `.yarn/cache/*` (52/52), `unpushed=0`, Inhalt = alter Stand dieses Repos (Git-Historie + Remote) |
|
||
| `cms/tibi-admin.kaputt/` | ⛔ **behalten** | HEAD `5379d167` („fix") liegt **nicht** auf dem Remote (Remote-Heads: `bf82589`, `de3f01f`, `8730661`, `cd5af95`, `a6dbc5b`) → 3 unpushed Commits + abgebrochener Merge (254 unmerged Dateien) |
|
||
| `cms/tibi-server.bak/` | ⛔ **behalten** | uncommitted Quellarbeit: `internal/controller/setup.go`, `internal/models/{collection,project}.go` geändert, `internal/controller/collection_cache.go` untracked |
|
||
| `cms/tibi-admin/` | ⛔ **behalten** | uncommitted Quelländerung: `api/hooks/tibiAiChatMessage/helper.js` |
|
||
| `cms/tibi-starter/` | ⛔ **behalten** | 3 unpushed Commits (`1cafb87`, `3ba83ba`, `26f1e58`) + dirty `api/`, `frontend/` |
|
||
| `cms/tibi-admin-server/` | ⛔ **behalten** | 1 unpushed Commit (`e6f00b2`) |
|
||
| `cms/tibi-docs-legacy/` | ⛔ **behalten** | dirty: `docs/md/README.md`, `docs/md/projektkonfig/collections/meta.md` + untracked `docs/md/tibiAI/TibiAI.md`; Inhalte teils **nicht** in tibi-docs (u. a. `dashboard.md`, `ssr&htaccess.md`, `admin-javascript-kontext/*`) |
|
||
|
||
**Freigeworden:** ~6,1 GB. **Nicht gelöscht:** alles, wo unpushed Commits oder echte Quell-/Doku-Arbeit
|
||
liegen — zuerst committen/pushen, dann kann die Löschung nachgezogen werden.
|
||
|
||
### 12.2 Datei-Ebene: Wegfall **erst** nach Erfüllung dieser Bedingungen
|
||
|
||
| Alt-Datei | Wegfall möglich, wenn … | Heutiger Abdeckungsgrad |
|
||
|---|---|---|
|
||
| `tibi-server/docs/15-troubleshooting.md` | `reference/fehlercodes.md` alle dort gelisteten Fehler + Ursachen führt | teilweise |
|
||
| `tibi-server/docs/16-cookbook.md` | die Rezepte in `projekt/sammlungen-anlegen.md` stehen | teilweise |
|
||
| `tibi-server/docs/13-openapi-metrics.md` | `reference/openapi.md` generiert ist und Metrik-Labels dokumentiert sind | teilweise (P1 #7) |
|
||
| `tibi-server/docs/17-field-level-permissions.md` | `projekt/feld-rechte.md` existiert | **nicht abgedeckt** (P3 #1) |
|
||
| `tibi-server/docs/24-ephemeral-rest-tokens.md` | Fähigkeit im Code existiert (heute nicht) | **nicht abgedeckt** 🔍 |
|
||
| `tibi-server/docs/{01,02,03,04,05,06,07,08,10,12,14,18,19,20,21,22,23}.md` | **nicht absehbar** — Core-Referenz für Server-Entwicklung, nicht Ziel dieser Doku | teilweise/vollständig |
|
||
| `tibi-admin-nova/docs/collection-config.md`, `custom-export-script.md` | nach Spiegelung als `reference/collection-config.md` | nicht abgedeckt |
|
||
| `tibi-admin-nova/docs/test-plans/*` | nie — Test-Artefakte, keine Nutzer-Doku | — |
|
||
| `tibi-types/` (keine Doku) | es entsteht Doku **im Repo** (empfohlen, §7.1) | — |
|
||
|
||
### 12.3 Dubletten/Widersprüche zwischen Alt-Doku und tibi-docs
|
||
|
||
| # | Widerspruch | Auflösung |
|
||
|---|---|---|
|
||
| 1 | MCP-Route: `tibi-server/docs/23-mcp.md` (Env `MCP_ROUTE` steuerbar) vs. `server/schnittstellen.md:77` („wird ignoriert") | ✅ Code: Routing ist hart (`setup.go:754-755`), `mcp.Route()` ungenutzt → **tibi-docs hat recht**, Server-Doc veraltet |
|
||
| 2 | Sync-Behauptung in `tibi-docs/AGENTS.md` §2/§4 vs. Realität (keine Sync-Artefakte im Repo) | AGENTS.md korrigieren (P8) |
|
||
| 3 | Starter-`Token`-Header (`tibi-svelte-starter/AGENTS.md`) ohne Warnung vor reservierten Namen (`reference/token-koepfe.md:52`) | Starter-AGENTS.md ergänzen |
|
||
| 4 | `plans/doku-ausbau.md` führt `llm-nutzen`/`mcp-nutzen` noch als „Hülle" — beide sind fertig | Plan-Zeilen als erledigt markieren |
|
||
|
||
---
|
||
|
||
## 13. P8 — Prozess und Meta
|
||
|
||
| # | Befund | Maßnahme |
|
||
|---|---|---|
|
||
| 1 | `AGENTS.md` §2 sagt „`server/` = SYNC, nicht von Hand editieren"; tatsächlich sind es Handseiten (`npm run sync` würde 27 verwaiste Seiten erzeugen) | 🔍 **Entscheidung D1**: Sync reaktivieren **oder** Skript + AGENTS-Abschnitt entfernen |
|
||
| 2 | `AGENTS.md` §1 verbietet gleichzeitig das Duplizieren englischer Server-Docs — beißt sich mit §2 | Widerspruch auflösen (eine Regel streichen) |
|
||
| 3 | Prüfregeln (Links, UI-Text-Treue, Stempel) sind nirgends automatisiert | `scripts/audit-docs.mjs` um UI-String-Abgleich gegen `de.json` erweitern und in `npm run build`-Vorprüfung hängen |
|
||
| 4 | Kein Mechanismus, der Fähigkeiten ohne Dokustelle meldet | Coverage v2 mit Funktionskörnung + Depth-Gate (siehe `plans/doku-ausbau.md` v3) |
|
||
| 5 | Stempel-Format driftet (4 Formate) | Norm in AGENTS.md §2 festschreiben |
|
||
| 6 | Offene Punkte aus der letzten Runde wurden nie als Issues angelegt | Issues anlegen: (a) tibi-server: Typo `reponse.header` (`context_response.go`), (b) tibi-server: doppelter yaml-Tag `allowSnapshots` (`models/project.go:104`), (c) tibi-admin-nova: totes `u`-Kürzel in `de.json`, (d) tibi-server: `mgocrud.old/` toter Code, (e) tibi-server: Doku `24-ephemeral-rest-tokens.md` ohne Code |
|
||
|
||
**Fehler, die ich zusätzlich **im Server-Code** gefunden habe** (nicht Doku, aber gefunden beim Prüfen — gehören als Issue gemeldet):
|
||
|
||
| Code-Fund | Beleg |
|
||
|---|---|
|
||
| doppelter Struct-Tag `yaml:"allowSnapshots" yaml:"allowSnapshots"` (auch bei `token`, `allowReload` … — alle vier Felder doppelt getaggt) | `internal/models/project.go:120` (Struct `AdminToken:116-122`) ✅ |
|
||
| `Content-Range:` inkl. Doppelpunkt als Header-Name (Doku zitiert ihn korrekt als Code-Abweichung) | `internal/controller/collection_get.go:32` ✅ |
|
||
| Typos in Hook-Kontext: `reponse.header` | `internal/hook/context_response.go` (⚠️) |
|
||
| `MCP_ROUTE`-Env existiert, wird aber vom Routing ignoriert | `internal/config/server.go:221-224` vs. `setup.go:754` ✅ |
|
||
|
||
---
|
||
|
||
## 14. Phasen-Checklisten (zum Abhaken)
|
||
|
||
### P1 — Falschaussagen tilgen
|
||
- [ ] `EMBEDDING_BGE_M3_*` in `server/konfiguration.md` korrigieren (5 Stellen)
|
||
- [ ] `allowSnapshots` in `projekt/audit-backup.md` (3 Stellen)
|
||
- [ ] „(plus weitere)" bei `crypto` in `reference/hook-kontexte.md:52` streichen
|
||
- [ ] MCP-Scope-Tabelle in `projekt/mcp-nutzen.md:63-71` auf `.read/.create/.update/.delete`
|
||
- [ ] `meta.views` in `admin/customizing.md:14` streichen/ersetzen
|
||
- [ ] `loadAll`-Beispiel in `admin/exporte.md:60` korrigieren
|
||
- [ ] `scripts/sync-openapi.mjs` auf `_openapi/:project` umstellen, `reference/openapi.md` generieren
|
||
- [ ] „MongoDB 7" → „MongoDB 8" in `server/betrieb.md:21`
|
||
- [ ] Punkte 9–16 aus §3 prüfen und korrigieren (⚠️-Liste)
|
||
- [ ] Nach jedem Fix: `npm run build` grün + `Verifiziert am …`-Stempel erneuern
|
||
|
||
### P2 — Markdown/Struktur/Hygiene
|
||
- [ ] Tabelle `admin/ki-funktionen.md:40` reparieren
|
||
- [ ] Aufbau-Rückstand `reference/hook-kontexte.md:65` entfernen
|
||
- [ ] `:::note/caution/danger` → `<Aside>` (3 Stellen)
|
||
- [ ] lange Überschrift `projekt/pagebuilder-dev.md:215` kürzen
|
||
- [ ] Stempel-Format auf allen Seiten vereinheitlichen (Datum + Repo + Hashlänge)
|
||
- [ ] „Suchbegriffe:"-Zeile normieren (7/4/8-Verteilung auflösen)
|
||
- [ ] ungenutzte Starlight-Importe entfernen
|
||
- [ ] **Link-/Anker-Prüfung als fester Schritt etablieren** (`node scripts/audit-docs.mjs`, gibt 0 tote Links aus) + Redirect-Konzept in `astro.config.mjs` beschließen
|
||
- [ ] **Snippet-Prüfliste** aus den 6 verifizierten Fehlerbeispielen anlegen
|
||
- [ ] `npm run build` + `node scripts/audit-docs.mjs` → 0 Findings außer bekannten `PRUEFEN`
|
||
|
||
### P3 — Server-Lücken
|
||
- [ ] `projekt/feld-rechte.md` neu (Feld-Level-Permissions)
|
||
- [ ] `reference/rest-system.md` neu (System-CRUD + `_meta`)
|
||
- [ ] `projekt/rechte-tokens.md` um Scope-Katalog + `token`-Felder erweitern
|
||
- [ ] `server/konfiguration.md` um `upload.allowedMimeTypes` + Embedding-Gruppen-Tuning
|
||
- [ ] `projekt/audit-backup.md` um Snapshot-Detailfelder + Restore-Token-Flow
|
||
- [ ] `projekt/suche.md` um Suchmodi/Regenerate/Search-Worker
|
||
- [ ] Gzip-Ausnahmen + Filecleanup + Cache-Defaults einarbeiten
|
||
- [ ] 🔍 Entscheidung Ephemeral REST Tokens (implementieren oder Server-Doc löschen)
|
||
|
||
### P4 — Admin-Interfaces (parallel zu P3)
|
||
- [ ] `singleton`, `sections`, `query`, `agent`, `MANUALLY`, `viewHint.navigation` dokumentieren
|
||
- [ ] `project.admin.tokens`-Rechte dokumentieren (inkl. Querverweis Backup/Snapshot/Search)
|
||
- [ ] Export-`ctx` vollständig in `admin/exporte.md` (Beispiel korrigiert, Batching, Guards)
|
||
- [ ] Action-`execution.kind/cancellable` in `admin/aktionen.md`
|
||
- [ ] Registry-Ladeordnung/Cache + `{eval}`-Specifier in `projekt/pagebuilder-dev.md`
|
||
- [ ] Runtime-System-Config in `admin/setup.md`
|
||
- [ ] 🔍 `hooksTrigger`/`exportScript` klären (existieren nicht)
|
||
|
||
### P5 — tibi-types + Starter
|
||
- [ ] `reference/schemas.md` zur Property-Matrix ausbauen (generiert)
|
||
- [ ] Undokumentierte Properties (§7.1) je Projektseite ergänzen
|
||
- [ ] Playwright-/Mock-Kapitel anlegen
|
||
- [ ] CI/Deploy-Env + `api/templates` dokumentieren
|
||
- [ ] Doku **im** `tibi-types`-Repo anlegen (Schemas selbst erklären) + `index.d.ts`-Typen referenzieren
|
||
|
||
### P6a — Fehlende Anwender-Seiten (nach P2, parallel zu P3/P4)
|
||
- [ ] `anwender/verlauf-wiederherstellen.md`
|
||
- [ ] `anwender/massenbearbeitung.md`
|
||
- [ ] `anwender/aktionen.md`
|
||
- [ ] `anwender/backup-einspielen.md`
|
||
- [ ] `anwender/tastenkombinationen.md`
|
||
- [ ] Sidebar + `coverage-map.json` nachziehen
|
||
|
||
### P7 — Stil, Starlight, Struktur (vor P6b!)
|
||
- [ ] UI-Namen gegen `de.json` abgleichen (allen voran „Befehlspalette")
|
||
- [ ] §9-Muster abarbeiten (Binsen, Prosa-Wände, Wertungen, Anführungszeichen)
|
||
- [ ] `syncKey` für Tab-Gruppen, `LinkCard` auf Übersichten, `Icon`/`Badge` dort, wo es hilft
|
||
- [ ] Zeilenmarkierungen + `frame`/`title` in Codeblöcken vereinheitlichen
|
||
- [ ] `lastUpdated`, `expressiveCode`, `sidebar.label` in `astro.config.mjs`
|
||
- [ ] kanonische Stellen für Duplikate festlegen (Widgets, `qName`, `active:true`)
|
||
- [ ] Umbenennungen/Verschiebungen nur mit `redirects`-Eintrag
|
||
- [ ] Onboarding-Reihenfolge und Sidebar gegen die Reise prüfen (§10.4 #4)
|
||
- [ ] a11y-Kontrast + Pagefind-Suche testen (§10.4 #5/#6)
|
||
|
||
### P6b — Screenshots (nach P7, Slug-/Text-Freeze)
|
||
- [ ] `src/assets/admin/` anlegen
|
||
- [ ] 9 Admin-Motive aus §8.1 aufnehmen und Platzhalter-Kommentare ersetzen
|
||
- [ ] 25 UI-Bereiche aus §8.2 bebildern
|
||
- [ ] alle Bilder ≤ 200 KB, deutsche Alt-Texte, `npm run build` grün
|
||
- [ ] Re-Shoot-Zähler messen (Messgröße für die Reihenfolge-Entscheidung)
|
||
|
||
### P8 — Meta
|
||
- [ ] 🔍 D1 entscheiden: Sync reaktivieren oder entfernen (AGENTS.md §2/§4 anpassen)
|
||
- [ ] Stempel-Norm **und Staleness-Regel** in AGENTS.md
|
||
- [ ] `audit-docs.mjs` um UI-String-Abgleich + Stempel-Alter erweitern, in Prüf-Ablauf aufnehmen
|
||
- [ ] Coverage v2 (Funktionskörnung + Depth-Gate)
|
||
- [ ] ADR „nur deutsch" anlegen (§10.4 #7)
|
||
- [ ] 5 Issues in den Repos anlegen (§13)
|
||
|
||
### P9 — Abbau
|
||
- [ ] Repo-Hygiene (§12.1) nach Backup-Abgleich
|
||
- [ ] Volltext-Abgleich `tibi-docs-legacy` → `einstieg/begriffe.md`
|
||
- [ ] Wegfall-Bedingungen (§12.2) als Tickets anlegen, sobald P3–P6 fertig sind
|
||
|
||
---
|
||
|
||
## 15. Anti-Halluzination: Was geprüft ist und was nicht
|
||
|
||
### 15.1 Selbst am Code geprüft (✅)
|
||
|
||
`EMBEDDING_BGE-M3_*` · `allowSnapshots` · `crypto`-Funktionsumfang · `MethodToAction`/MCP-Scopes · `meta.views` im Schema · `loadAll`-Signatur · OpenAPI-Route (`setup.go:692`) · `mongo:8` im Compose · Routen-Zählung (44 gruppierte Registrierungen) · MCP-Tools 10+12+14=36 · Route-Reihenfolge `_count`/`_facet` vor `:id` · „Befehlspalette" in `de.json` · Screenshot-Platzhalter in 9 Admin-Seiten · 30 Bilder alle referenziert · Schema-Properties (`queryLimits`, `readonlyFields`, `hiddenFields`, `singleton`, `sections`, `hideLabel`, `imageEditor`) fehlen in der Doku · Sync-Skript-Quellen · Build grün (62 Seiten).
|
||
|
||
### 15.2 Aus Subagenten-Reports übernommen (⚠️)
|
||
|
||
Alle Zeilen mit ⚠️ — insbesondere: `$CODING_TIBISERVER_URL`, Gzip-Absolutaussage, „eingeloggte vs. anonyme Nutzer" im Hook, `hooks-schreiben.md`-Details, `action.execution`, `system.config.json`, Starter-CI-Details, Übersichtsliste der 25 UI-Bereiche.
|
||
|
||
### 15.3 Widerlegte Report-Behauptungen (❌)
|
||
|
||
| Behauptung | Widerlegung |
|
||
|---|---|
|
||
| „`…/comment/count` landet **nicht** auf `:id`" (Review Projekt #2) | ✅ Die Doku (`projekt/abfragen-lesen.md:99`) ist **richtig**: `_count` ist als Literal `/_/:project/:collection/_count` registriert (`setup.go:514`), `/comment/count` erfüllt dieses Muster nicht und fällt auf `/_/:project/:collection/:id` mit `id="count"` (`setup.go:536`). Kein Fix nötig. |
|
||
| „0 Wegfall-Kandidaten auf Datei-Ebene, daher nichts zu tun" (Report 04) | Teils richtig, teils zu absolut: die **Bedingungen**, unter denen Alt-Dateien wegfallen dürfen, sind in §12.2 jetzt explizit gemacht; auf Repo-Ebene gibt es sehr wohl Löschkandidaten (§12.1). |
|
||
|
||
### 15.4 Zweitmeinung (SecondOpinion) — eingearbeitet
|
||
|
||
Eine unabhängige Zweitmeinung zum Plan wurde eingeholt und hat drei Änderungen erzwungen (alle übernommen):
|
||
|
||
1. **Reihenfolgefehler korrigiert:** P7 (Stil/Slugs/Struktur) läuft jetzt **vor** P6, weil es Überschriften und Slugs ändert und Screenshots sonst entwertet. P6 ist in **P6a** (fehlende Seiten, früh) und **P6b** (Bilder, nach Slug-Freeze) geteilt. P3 und P4 sind als parallel markiert.
|
||
2. **Fehlende Dimensionen ergänzt** (§10.4): Link-/Redirect-Integrität, Snippet-Verifikation, Staleness-Regel, Onboarding-Reihenfolge, a11y, Suche, ADR „nur deutsch"; Druck/PDF bewusst ausgeschlossen.
|
||
3. **§12 entkräftet die eigene Absolutaussage:** „0 Duplikate" statt „0 Wegfall"; `tibi-server/docs/24-ephemeral-rest-tokens.md` ist ein **Stale-Kandidat von heute** (🔍 D3), kein „nach P3"-Fall.
|
||
|
||
### 15.5 Regel für die Umsetzung
|
||
|
||
Jeder Fix aus §3/§5/§6 wird **erst** am Code nachgeprüft, **dann** geschrieben, **dann** gestempelt (`Verifiziert am <hash> <datum> (<repo>)`). Kein Fix ohne `datei:zeile`. Keine Zahl ohne Zählbefehl.
|
||
|
||
---
|
||
|
||
## 16. Offene Entscheidungen und offene Prüfpunkte
|
||
|
||
| # | Frage | Betrifft | Vorschlag |
|
||
|---|---|---|---|
|
||
| D1 | Sync-Modell: `server/` aus `tibi-server/docs` spiegeln **oder** Handseiten behalten? | AGENTS.md, `sync-server-docs.mjs`, `sync-openapi.mjs` | **Handseiten behalten** (Nutzer-Doku, deutsch), Sync-Skript für Server entfernen, Nova-Referenzen als `reference/`-Spiegel behalten |
|
||
| D2 | Sind Mock-Daten in Review-Screenshots ok? | P6 | ja, `corporate` reicht |
|
||
| D3 | Ephemere REST-Tokens: Feature oder Doku-Fehler? | P3 #16 | prüfen, dann eins von beidem löschen |
|
||
| D4 | Übergangsbeleg für Audit-`defaultTTL: "0"` | P1 #13 | belegen oder Aussage streichen |
|
||
| D5 | `hooksTrigger`/`exportScript` — gemeint war `hooks` bzw. `meta.exports`? | P4 | bestätigen |
|
||
| D6 | Wie tief soll die Server-Referenz in tibi-docs gehen (Ziel: „Projekte aufsetzen und betreiben", nicht Core-Entwicklung)? | P3 | Referenz-Tabelle + Fehlerfälle ja, Go-Interna nein |
|
||
| D7 | Bleibt die Doku einsprachig (nur `de`)? | §10.4 #7 | ja → als ADR festhalten |
|
||
| D8 | Wo endet die Anwender-Doku (welche Admin-Flächen bekommen eine Anwender-Seite)? | P6a | jedes Bildschirmelement, das ein Redakteur ohne Entwicklerwissen bedient |
|
||
|
||
🔍 **Weitere `PRUEFEN`-Punkte:** 7 in `05-review-einstieg-server.md`, 7 in `05-review-projekt.md`, 5 in `05-review-admin-reference.md`, 5 in `05-review-anwender-adr.md` — dort verlinkt und einzeln mit Beleg nachzuziehen.
|
||
|
||
---
|
||
|
||
## 17. Anhang: Inventar
|
||
|
||
**Seiten je Bereich:** einstieg 4 · server 5 · projekt 15 · admin 10 · anwender 11 · reference 11 · adr 4 · index 1 → **61 Seiten / 7.127 Zeilen**.
|
||
**Bilder:** 30 `.webp` in `src/assets/anwender/` (≤ 78 KB je Datei) + 1 `admin-nova.png` + `favicon.svg`; Admin-Screenshots fehlen.
|
||
**Befunde:** Audit-Skript 20 Rohmeldungen (17 Marker, 1 kaputte Tabelle, 1 lange Überschrift, 1 fehlende `description`) → davon 2 echte Markdown-Defekte; Seitenreviews 131 Befundzeilen; Code-Reports 15 Lücken + 5 Fehler (Server), 10 Interface-Lücken + 25 Screenshot-Lücken (Admin), 10 Schema-Properties + 5 Starter-Lücken, 0 Datei-Wegfall-Kandidaten + 6 Hygienefälle.
|
||
|
||
**Erledigt in diesem Audit:** Audit-Skript geschrieben, 4 Code-Reports + 4 Seitenreviews erstellt, 10 Kernbefunde selbst am Code verifiziert, 1 Report-Behauptung widerlegt, dieses Übersichtsdokument erstellt.
|
||
**Nicht erledigt (bewusst):** kein Doku-Inhalt wurde geändert — die Umsetzung folgt über die Phasen P1–P9.
|
||
|
||
### Zählbefehle (jede Zahl in diesem Dokument nachprüfbar)
|
||
|
||
```sh
|
||
cd /WM_Dev/src/gitbase.de/cms/tibi-docs
|
||
find src/content/docs -name '*.md' -o -name '*.mdx' | wc -l # 61
|
||
find src/content/docs -name '*.md*' | xargs cat | wc -l # 7127
|
||
ls src/assets/anwender/*.webp | wc -l # 30
|
||
find dist -name '*.html' | wc -l # 62
|
||
grep -rln 'Screenshot-Platzhalter' src/content/docs/admin | wc -l # 9
|
||
grep -rho '^\s*```' src/content/docs | wc -l # 432
|
||
grep -rn 'title="' src/content/docs | wc -l # 254
|
||
grep -rc '<Aside type=' src/content/docs | awk -F: '{s+=$2} END{print s}' # 86
|
||
grep -rn '^:::' src/content/docs | wc -l # 3
|
||
wc -l src/content/docs/projekt/mcp-nutzen.md # 754
|
||
node scripts/audit-docs.mjs # 0 tote Links, 20 Rohmeldungen
|
||
```
|
||
|
||
---
|
||
|
||
## 18. Ausführungsprotokoll (live)
|
||
|
||
Statuslegende: ✅ erledigt und reviewed · 🔄 läuft · ⬜ offen · 🔴 blockiert
|
||
|
||
### Welle A — P1 (Fakten) + P2 (Markdown/Hygiene) · Stand 2026-10-17
|
||
|
||
| Punkt | Status | Belege/Ergebnis |
|
||
|---|---|---|
|
||
| P1 #1 `EMBEDDING_BGE_M3_*` (6 Stellen) | ✅ | `server/konfiguration.md`; Review A ok gegen `server.go:245-251` |
|
||
| P1 #2 `allowSnapshots` (3 Stellen) | ✅ | `projekt/audit-backup.md`; Review ok gegen `project.go:120` |
|
||
| P1 #3 `crypto` „plus weitere" | ✅ | `reference/hook-kontexte.md`; Review ok |
|
||
| P1 #4 MCP-Scopes `.read/.create/.update/.delete` | ✅ | `projekt/mcp-nutzen.md:63-71`; Review ok gegen `admin_token.go:115-128` |
|
||
| P1 #5 `meta.views` entfernt | ✅ | `admin/customizing.md`; `viewHint`+`subNavigation` sind im Schema belegt |
|
||
| P1 #6 `loadAll`-Signatur | ✅ | `admin/exporte.md`; Review ok gegen `custom-export.types.ts:56-60` |
|
||
| P1 #7 `reference/openapi.md` + `sync-openapi.mjs` | ✅ | Seite handfest, Skript auf `/_openapi/<namespace>`; **Review-Fund** falscher Default-Pfad nachgezogen (`/api/v1`) |
|
||
| P1 #8 „MongoDB 7" → 8 | ✅ | `server/betrieb.md:21`; Review ok gegen beide Composes |
|
||
| P1 #9 `$CODING_TIBISERVER_URL` | ✅ | ersetzt durch `$CODING_TIBIADMIN_URL/api/...`; im Starter belegt, Proxy `/api`→`/api/v1` belegt |
|
||
| P1 #10 Gzip-Absolutaussage | ✅ | `server/schnittstellen.md`; Ausnahmen = `setup.go:151-154` |
|
||
| P1 #11 „eingeloggte" → „anonyme" | ✅ | `projekt/hooks-schreiben.md`; belegt durch `filter_public.js` (`!context.user.auth()`) |
|
||
| P1 #12 Sammelgruppen | ✅ | `content`/`community`/`system` gegen Starter-YMLs |
|
||
| P1 #13 Audit-TTL `"0" = ewig` | ✅ **bleibt** | **Review-Fehler entkräftet**: `internal/mongocrud/mongo.go:477` (`if index.ExpireAfter > 0`) → bei 0 wird kein TTL-Index gesetzt = kein Ablauf. Aussage ist korrekt. |
|
||
| P1 #14 `POST /api/ssr?clear=1` | ✅ | `projekt/deploy.md`; als Starter-/Proxy-Pfad gekennzeichnet |
|
||
| P1 #15 „Schnellsuche" → „Befehlspalette" | ✅ | `anwender/orientierung.md`, `anwender/hilfe.md`; belegt `de.json:1207` |
|
||
| P1 #16 „Kurzfassung" | ✅ | in Welle D auf „**Zusammenfassung**" gezogen (`admin/aktionen.md`, `de.json:207`); Restvorkommen sind Code-Block-Titel und der Linktext „Anwender-Kurzfassung" |
|
||
| P2 #1 kaputte Tabelle | ✅ | `admin/ki-funktionen.md` (3 Zellen je Zeile) |
|
||
| P2 #2 „Hülle"-Rückstand | ✅ | `reference/hook-kontexte.md`; `grep "Hülle"` in `src/content/docs` = 0 |
|
||
| P2 #3 `description` in openapi.md | ✅ | Frontmatter vollständig |
|
||
| P2 #4 `:::` → `<Aside>` | ✅ | `server/uebersicht.md`, `einstieg/neues-projekt.md`, `einstieg/schnellstart.md`; `grep '^:::'` = 0 |
|
||
| P2 #6 lange Überschrift | ✅ | `projekt/pagebuilder-dev.md` |
|
||
| P2 #7 „Suchbegriffe:" | ✅ | 4 Projekt-Seiten normiert |
|
||
| P2 #8 Stempel-Norm | ✅ | ein Format (7-stelliger Hash, Datum, Repo): „Geprüft an" = 0, 8-stellige Hashes = 0, Endpunkt-Varianten = 0. Unterschiedliche **Daten** sind gewollt — sie nennen den Prüftag |
|
||
| P2 #9 ungenutzte Importe | ✅ | alle Seiten beider Bereiche geprüft |
|
||
| Welle-A-Review (general Subagent) | ✅ | Urteil: „abnehmbar nein — erst Punkt F fixen"; F wurde behoben, danach grün |
|
||
| Build | ✅ | 62 Seiten, 0 Fehler; `scripts/audit-docs.mjs`: 20 → **16** Findings (nur noch legitime „Platzhalter"-Wörter) |
|
||
|
||
### Welle B — P3 (Server-Lücken) + P4 (Admin-Interfaces) · Stand 2026-10-17 ✅
|
||
|
||
| Punkt | Status | Belege/Ergebnis |
|
||
|---|---|---|
|
||
| P3: `projekt/feld-rechte.md` (neu, 87 Z.) | ✅ | Kaskade Collection → PermissionSet → Feld-Def; `field_permissions.go:31-56,120,135,307,402-418`; `permissions.schema.json:55-72`; `collection.schema.json:201-212` |
|
||
| P3: `reference/rest-system.md` (neu, 65 Z.) | ✅ | 5 Modelle × 5 Routen + `_meta`; `dbapi/register.go:90-115`; `token.go:39-76`; `helper.go:64-167` |
|
||
| P3: `rechte-tokens.md` (Scope-Katalog, Token-Felder, Admin-Flags) | ✅ | `:144-208`; `token_scope_catalog.go:47-89`; `project.schema.json:227-261` |
|
||
| P3: `konfiguration.md` (`allowedMimeTypes`, Embedding-Gruppen) | ✅ | `:26,108-162`; `config/server.go:46,489-625`; `embedding_group.go:44-190` |
|
||
| P3: `audit-backup.md` (10 Snapshot-/6 Backup-Routen, Config-Felder, Restore-Token, Auth-Reihenfolge) | ✅ | `:95-198`; `setup.go:398-495`; `snapshot_config.go:11-58,89-94`; `admin_auth.go:20-74` |
|
||
| P3: `suche.md` (7 Suchmodi, Regenerate/Worker, Vektor-Pfad, Debug) | ✅ | `:44-129`; `collection.go:314-383`; `admin_regenerate_search.go:17-25`; `search_debug.go:145-159` |
|
||
| P3: `betrieb.md` + `dateien-bilder.md` (Filecleanup) | ✅ | `cleanup.go:21-149` |
|
||
| P3: `hooks-daten.md` (Cache-Defaults) | ✅ | `cache/cache.go:23-38`; `config/server.go:178-181` |
|
||
| P3: `abfragen-lesen.md` (`aggregate`) | ✅ | `:113-135`; Signatur/Ops/Fehler 400/403 |
|
||
| P4: Schema-Meta (`singleton`, `sections`, `query`, `agent`, `MANUALLY`, `viewHint.navigation`) | ✅ | `sammlungen-anlegen.md:87-116`; `collection-meta.schema.json:69-503` |
|
||
| P4: Feld-Meta (8 Optionen) | ✅ | `felder-widgets.md:201-216`; `field-meta.schema.json:50-235,303-317` |
|
||
| P4: `admin.tokens`-Rechte | ✅ | `admin/benutzer-rechte.md:83-108`; `project.go:116-122` |
|
||
| P4: Export-`ctx` vollständig + lauffähiges Beispiel | ✅ | `admin/exporte.md:50-103`; `custom-export.types.ts:17-102` |
|
||
| P4: Action-`execution` + Upload-Pfad | ✅ | `admin/aktionen.md:31-50`; `action.schema.json:274-288`; `ActionView.svelte:260-295,350-382` |
|
||
| P4: Registry-Ladeordnung + `{eval}`-Specifier | ✅ | `pagebuilder-dev.md:56-79`; `load-registry.ts:16-94`; `project-asset-specifier.ts:17-50` |
|
||
| P4: Runtime-System-Config | ✅ | `admin/setup.md:73-96`; `system-config.schema.json:11-28`; `system.config.json:1-49` |
|
||
| Welle-B-Review (general Subagent) | ✅ | 20 Stichproben, alle ok; Urteil „abnehmbar nach Fix von 2a+2b" — behoben |
|
||
| Review-Nacharbeit | ✅ | Quelle-Pfad in `feld-rechte.md` korrigiert; Stempel datiert (13 Seiten); Duplikat „Neuaufbau" in `suche.md` mit „Index aufbauen und prüfen" zusammengeführt; `**Kurzfassung**` → `**Zusammenfassung**` (`de.json:207`); letzte `:::`-Direktive → `<Aside>` |
|
||
| Build | ✅ | 64 Seiten (63 Inhaltsseiten + 404), 0 Fehler; Audit weiterhin 16 legitime „Platzhalter"-Marker |
|
||
|
||
### Welle C — P5 (types/Starter) + P6a (Anwender-Seiten) · Stand 2026-10-17 ✅
|
||
|
||
| Punkt | Status | Belege/Ergebnis |
|
||
|---|---|---|
|
||
| P5: `reference/schema-properties.md` (generiert, 384 Z.) | ✅ | 16/16 Schemas, 25 Tabellen, 164 Property-Zeilen; Generator `scripts/gen-schema-matrix.mjs` + `npm run gen:schemas`; idempotent (md5 identisch beim Zweitlauf) |
|
||
| P5: `reference/schemas.md` auf Übersicht + Verweise reduziert | ✅ | keine Doppelung; Dateinamen/Auflösungsreihenfolge ergänzt |
|
||
| P5: `projekt/tests.md` (neu, 83 Z.) | ✅ | Playwright-Scripts/Projekte, `MOCK=1` (`frontend/src/lib/mock.ts`, `esbuild.config.js:141f`), Artefaktordner |
|
||
| P5: `projekt/deploy.md` (CI-Variablen) | ✅ | `scripts/ci-deploy.sh:6-35,62-68`, `ci-staging.sh:4-42`; zwei Widersprüche bereinigt |
|
||
| P5: `projekt/ssr-website.md` (`api/templates`, Cache) | ✅ | `api/hooks/ssr/get_read.js`, `hooks/lib/utils.js` (`clearSSRCache`) |
|
||
| P6a: 5 neue Anwender-Seiten (319 Z. gesamt) | ✅ | Verlauf/Wiederherstellen, Massenbearbeitung, Aktionen, Backup einspielen, Tastenkürzel |
|
||
| P6a: 10 Screenshot-Platzhalter für P6b gesetzt | ✅ | 3 Verlauf, 2 Massenbearbeitung, 2 Aktionen, 2 Backup, 1 Tastenkürzel |
|
||
| Sidebar (`astro.config.mjs`) | ✅ | 7 neue Einträge; Sidebar ↔ Dateien konsistent (0 Abweichungen) |
|
||
| Welle-C-Review (general Subagent) | ✅ | Generator idempotent (md5 gleich), 15 Stichproben gegen JSON-Schemas ok, UI-Strings 25/26 wörtlich, tests.md korrekt |
|
||
| Review-Nacharbeit | ✅ | Generator schreibt jetzt „Generiert aus `tibi-types 4c55f82` (Stand 2026-10-12)" (deterministisch); Hash-Länge auf 7 Zeichen normiert (33 Stellen); Bildbeschriftung auf die echten Knopftexte gezogen |
|
||
| Build | ✅ | 71 Seiten (70 Inhaltsseiten + 404), 0 Fehler; Audit: 0 tote Links, 16 legitime „Platzhalter"-Marker |
|
||
|
||
### Welle D — P7 (Stil, Starlight, Struktur) · Stand 2026-10-17 ✅
|
||
|
||
| Punkt | Status | Ergebnis |
|
||
|---|---|---|
|
||
| UI-Text-Treue gegen `de.json` | ✅ | 21 geprüft, 20 wörtlich; korrigiert: `**Zusammenfassung**` (statt „Kurzfassung"), `noOutputFields`-Satz, „Erneut versuchen", `{width}×{height}`; „Datensatz öffnen" ohne UI-Beleg → wirkungsbeschreibend umformuliert |
|
||
| `LinkCard` statt Karte+Link | ✅ | `index.mdx`, `server/uebersicht.md`, `einstieg/was-ist-tibi.md`, `reference/hook-kontexte.md` (19 Karten) |
|
||
| `Tabs`/`Steps`/`syncKey` | ✅ | `syncKey` in 4 Seiten; `<Tabs>` für Exportformate, KI Ein-/Ausgabe, Viewport-Presets |
|
||
| Codeblöcke | ✅ | Zeilenmarkierungen (`{n}`) an 5 Stellen, `title=` flächendeckend |
|
||
| Checkliste statt Codeblock | ✅ | `einstieg/neues-projekt.md` Task-Liste |
|
||
| Begriffe-Glossar | ✅ | `einstieg/begriffe.md` mit 12 `##`-Überschriften (ToC-fähig) |
|
||
| Redundanz kanonisiert | ✅ | `qName` nur in `suche.md`, `active:true`-Falle nur in `rechte-tokens.md`, Widget-Tabelle nur in `felder-widgets.md` |
|
||
| Auslagerung Projekt → Admin | ✅ | Verlauf-/Pagebuilder-UI aus `projekt/*` nach `admin/eintrags-editor.md`, Details dort ergänzt |
|
||
| Prosa/Binsen | ✅ | `ki-funktionen.md` Schwellen jetzt Tabelle; 6 Binsen/Wertungen umformuliert |
|
||
| `mcp-nutzen.md` entschlackt | ✅ | 754 → 441 Zeilen, alle 36 Werkzeuge erhalten (Tabelle + Signatur + Beispiel + Fehler) |
|
||
| Kontrast/a11y (`custom.css`) | ✅ | nachgerechnet: alle Text-/Akzentwerte ≥ 4.5:1 (hell/dunkel), Deko-Farben bewusst unverändert |
|
||
| `lastUpdated: true` | ✅ | rendert ohne Fehler |
|
||
| Stempel normiert | ✅ | ein Format, 7-stellige Hashes, Punkt am Ende entfernt (~22 Stellen) |
|
||
|
||
### Welle E — P6b (Screenshots) · Stand 2026-10-17 ✅
|
||
|
||
| Punkt | Status | Ergebnis |
|
||
|---|---|---|
|
||
| Admin-Bilder | ✅ | **9/9** Motive aus `corporate` → `src/assets/admin/`, alle 1440×900, 21–78 KB |
|
||
| Anwender-Bilder | ✅ | **10 neue** (Verlauf, Massenbearbeitung, Aktionen, Backup, Tastenkürzel) → `src/assets/anwender/`, 18–89 KB |
|
||
| Platzhalter-Kommentare | ✅ | alle `<!-- Screenshot (T-SHOTS) … -->` ersetzt; 0 offene Kommentare |
|
||
| Mock-Fixture erweitert | ✅ | `corporate` hat jetzt eine Aktion („Suchindex neu aufbauen") und zwei Exporte („Seiten-Report", „Seiten-CSV") — vorher gab es Aktionen/Exporte nur in `t1`, das laut Regel verboten ist |
|
||
| Regelverstoß behoben | ✅ | die zwei Aktionen-Bilder des ersten Durchlaufs stammten aus `t1` und wurden durch `corporate`-Aufnahmen ersetzt |
|
||
| Textkorrektur nach UI-Abgleich | ✅ | Auswahl-Knopf heißt „**Bearbeiten**" (`admin.bulk.edit`) |
|
||
| offene UI-Mängel (nicht Doku) | ⚠️ | Mock-Overlay zeigt unübersetzten Key `admin.commandPalette.commands.toggleUsers`; Backup-Dialog teils englisch → als Issue notiert (`plans/offene-issues.md` A1/A2) |
|
||
|
||
### Welle F — P8 (Meta) + P9 (Abbau) · Stand 2026-10-17 ✅/⬜
|
||
|
||
| Punkt | Status | Ergebnis |
|
||
|---|---|---|
|
||
| D1 entschieden: Sync stillgelegt | ✅ | `AGENTS.md` §2/§4 richtiggestellt (server/ = Handseiten), `npm run sync` entfernt, `sync-server-docs.mjs` mit Stillegungs-Hinweis versehen |
|
||
| AGENTS.md: Belegpflicht + UI-Namen-Regel | ✅ | Stempel-Norm und „UI-Namen wörtlich aus `de.json`" als Pflichtregeln ergänzt |
|
||
| AGENTS.md: Screenshot-Regel | ✅ | `src/assets/admin/` + `src/assets/anwender/`, WebP 1440×900 ≤ 200 KB, Corporate only |
|
||
| AGENTS.md: Werkzeug-Abschnitt | ✅ | `audit-docs.mjs`, `coverage`, `gen:schemas`, `sync:openapi` als Pflichtschritte |
|
||
| Issues für die Nachbar-Repos | ✅ | **13 Issues in Gitea angelegt** — tibi-server #42–#48, tibi-admin-nova #2–#5, tibi-types #3/#4; Vorlage mit Belegen in `plans/offene-issues.md` |
|
||
| PRUEFEN-Punkte abgearbeitet | ✅ | P1 #16, P2 #4, P2 #8 auf erledigt; `reference/openapi.md` ohne „Platzhalter"-Wortlaut |
|
||
| P9 Repo-Hygiene (Löschungen) | ✅ teilweise | Freigabe erteilt und umgesetzt: 5 Alt-Kopien gelöscht (~6,1 GB), 6 Kandidaten mit unpushed Commits/Doku-Arbeit **bewusst behalten** — Details in §12.1a |
|
||
|
||
### Welle G — Screenshot-Nachtrag (restliche UI-Bereiche) · Stand 2026-10-17 ✅
|
||
|
||
| Punkt | Status | Ergebnis |
|
||
|---|---|---|
|
||
| Anwender-Motive (G1) | ✅ | 8 neue Bilder: FK-Drawer, Sprachleiste/Übersetzen, Feldsuche, JSON-Overlay, Medien-Lightbox, Upload-Warteschlange, Fremddatei, Stellvertretungs-Banner; 3 neue Kurzabschnitte, 3 Abschnitte erweitert |
|
||
| Admin-Motive (G2) | ✅ | 9 neue Bilder: Token-Liste, Token-Anlage (Profil), Projekt-Admin-Drawer, Team- und Org-Drawer, Theme-Umschalter, Chat-Verlauf, Voice im Filter |
|
||
| Befehlspalette im Admin | ✅ | neuer Abschnitt + Bild in `admin/konzept.md`; `keep`-Hinweis entfernt, Mock-Aussage `t1` → Demo-Projekte korrigiert |
|
||
| Nicht darstellbare Motive | ⚠️ **bleiben als Hinweis** (Nutzer-Entscheid) | Session-Timeout (`inactivityTracker.ts:47`) und Suchindex-Banner (`interceptor.ts:3073-3080`) bleiben als `<!-- Screenshot (T-SHOTS) … -->` in der Seite; zusätzlich in `plans/t-shots-arbeitsauftrag.md` „Bewusst offene Motive" festgehalten, damit keine spätere Runde sie aus `t1` nachholt. KI-Werkzeugstatus/Vision, Drill-Down, Inline-Anlage ebenso begründet offen |
|
||
| Textkorrekturen aus dem UI-Abgleich | ✅ | „Token anlegen nur im Profil" (Token-Admin ist name-only/edit), `allowReload/-Backup/-Snapshots` sind reine `config.yml`-Flags (0 Treffer im Frontend), „**Serververwaltete Felder**", „**Ausgewählte Medien**" |
|
||
| Welle-G-Review | ✅ | 17 Bilder geprüft: keine verwaisten Dateien, keine toten Pfade, alle Alt-Texte spezifisch, alle ≤ 200 KB; 3 Muss-Fixes umgesetzt; Urteil „abnehmbar" |
|
||
| Build/Audit | ✅ | 71 Seiten grün, 0 tote Links/Anker/Bildpfade, 0 kaputte Tabellen |
|
||
|
||
### Abschluss-Review (general Subagent) und Nacharbeit · 2026-10-17 ✅
|
||
|
||
| Befund des Abschluss-Reviews | Nacharbeit |
|
||
|---|---|
|
||
| 4 Waisen-Seiten ohne eingehenden Link (Aktionen, Backup einspielen, Massenbearbeitung, Tastenkürzel) | ✅ verlinkt aus `admin/aktionen`, `anwender/sichern`, `projekt/audit-backup`, `anwender/lesen-suchen-filtern`, `admin/ansichten-listen`, `reference/tastatur-kurzbefehle`, `anwender/orientierung` |
|
||
| 8 Seiten ohne Stempel (4× `einstieg/`, `reference/openapi.md`, ADRs) | ✅ 5 Seiten gestempelt; ADRs + generierte Seite als Ausnahme in AGENTS.md definiert (Abdeckung jetzt 64/69, Rest = Ausnahmen) |
|
||
| `reference/rest-system.md` nannte nur `register.go` | ✅ vollständiger Pfad `internal/dbapi/register.go` |
|
||
| Export-Beispielpfad `_/assets/exports/reports.mjs` nicht belegt | ✅ auf `_/exports/reports.mjs` relativiert (Specifier-Semantik steht in `projekt/pagebuilder-dev.md`) |
|
||
| Kopfzahlen in `plans/doku-audit.md`/`plans/doku-ausbau.md` veraltet (61 Seiten/30 Shots/55 Seiten) | ✅ Ist-Stand als Block ergänzt, T-SHOTS- und T-FINISH-Zeile aktualisiert |
|
||
| Info-Verlust der Welle D | ✅ keiner gefunden (Verdichtung, kein Verlust prüfbarer Aussagen) |
|
||
| 20 Fakten-Stichproben | ✅ 17 ok, 2 Beanstandungen (s. o.), 1 Bestätigung (MCP-Scope-Fix korrekt) |
|
||
| 10 UI-String-Stichproben | ✅ 10/10 wörtlich in `de.json` |
|
||
| Bilder | ✅ 40 + 9, 0 verwaist, 0 leere Alt-Texte, alle < 200 KB, keine Aufnahme aus `t1` |
|
||
|
||
**Urteil des Reviews:** „abnehmbar nach ca. 30 Minuten Nacharbeit" — die Nacharbeit ist erledigt, Build grün.
|
||
|
||
### Review-Fehler (Anti-Halluzination)
|
||
|
||
| Behauptung eines Prüfers | Gegenbeleg | Ergebnis |
|
||
|---|---|---|
|
||
| „`…/comment/count` landet nicht auf `:id`" (Seitenreview Projekt) | `setup.go:514` (`/_count` als Literal) vs. `:536` (`:id`) | Doku war richtig, Prüfer falsch |
|
||
| „`sync-openapi.mjs` Pfad falsch" (Review Welle A) | `${base}/_openapi/…` mit Default `…/api` → `/api/_openapi/…` | **richtig**, Default auf `/api/v1` geändert |
|
||
| „`"0" = ewig` im Audit-TTL nicht belegt" (Review Welle A) | `mongocrud/mongo.go:477` (`> 0`-Guard) | Prüfer falsch, Aussage bleibt |
|