- Audit: plans/doku-audit.md (Befunde, Phasen P1-P9, Ausführungsprotokoll) + plans/audit/ (8 Detailreports) + plans/offene-issues.md - Werkzeuge: scripts/audit-docs.mjs (Links/Anker/Bilder/Tabellen), scripts/gen-schema-matrix.mjs (npm run gen:schemas) - Neue Seiten: projekt/feld-rechte, reference/rest-system, reference/schema-properties, projekt/tests, 5 Anwender-Seiten - Fehler behoben: EMBEDDING_BGE_M3_*-Env, allowSnapshots, MCP-Scopes (.read/.create/.update), meta.views, loadAll-Signatur, OpenAPI-Endpunkt, MongoDB 8, Befehlspalette - Screenshots: 9 Admin + 10 Anwender aus Mock-Projekt corporate (t1 entfernt), 49 Bilder gesamt - AGENTS.md: Sync-Behauptung richtiggestellt, Belegpflicht/UI-Namen/Screenshot-Regeln, Werkzeug-Abschnitt - Build: 71 Seiten grün, 0 tote Links, 0 kaputte Tabellen
28 KiB
Audit 02 — Entwickler- und Anwender-Schnittstellen von tibi-admin-nova
Audit-Agent, keine Doku-Änderung. Stand: 2026-10-16. Repo:
/WM_Dev/src/gitbase.de/cms/tibi-admin-nova(=NOVA:unten). Doku:/WM_Dev/src/gitbase.de/cms/tibi-docs(=DOKU:unten). Verwendete Schemata:NOVA:tibi-types/schemas/config/*.json,NOVA:types/admin.d.ts,NOVA:schemas/config/*.schema.json. Frontend:NOVA:frontend/src/.
1) Entwickler-Schnittstellen
Legende Verdikt: ok = dokumentiert und korrekt · thin = erwähnt, aber unvollständig/falsch verlinkt ·
gap = fehlt in tibi-docs und in NOVA:docs/.
| Schnittstelle | Code-Beleg | Beschreibung | Dokuseite | Verdikt |
|---|---|---|---|---|
Collection-Schema (name, permissions Pflicht; fields, indexes, hooks, projections, audit, bulk, cors, queryLimits, readonlyFields, hiddenFields, strictFields, search) |
NOVA:tibi-types/schemas/config/collection.schema.json:1-40 (props; required: [name, permissions]) |
Top-Level-Sammlungsdefinition | DOKU:projekt/sammlungen-anlegen.md (Minimal, Meta, Indizes/Suche); Referenz DOKU:reference/schemas.md |
ok (thin für queryLimits, bulk, cors, strictFields — nur in NOVA:docs/collection-config.md belegt) |
meta.label/group/muiIcon/hide/imageUrl/designGuide |
NOVA:tibi-types/schemas/config/collection-meta.schema.json (props); NOVA:types/admin.d.ts:734ff |
Anzeige-/Gruppierungs-Meta | DOKU:projekt/sammlungen-anlegen.md:79ff (Tabelle Meta) |
ok |
meta.preview (label/secondary/tertiary/image, table-Spalten, Slots, Eval, FK-Auflösung) |
NOVA:tibi-types/schemas/config/defs.schema.json (previewConfig, previewSlots); NOVA:frontend/src/lib/components/entry/PreviewElement.svelte:1ff; NOVA:frontend/src/lib/components/ui/FieldValuePreview.svelte:1ff |
Vorschau-Auflösung inkl. FK-Badges, _lookup, Dot-Pfade |
DOKU:admin/customizing.md:35ff (Tabelle, Verweis preview-resolver); DOKU:projekt/sammlungen-anlegen.md:79ff |
thin (Resolver-Regeln — Auto-Detection vs. strikt, Nested-Pfade profile.name, FK-Badge-Auflösung — nur NOVA:docs/test-plans/39-preview-resolver.md:1ff) |
meta.viewHint (table/cards/{media}/{navigation}) |
NOVA:types/admin.d.ts:460-470; NOVA:frontend/src/lib/components/CollectionView.svelte:575-607 (Default-Anwendung, URL gewinnt) |
Startansicht der Liste | DOKU:admin/ansichten-listen.md:10ff; DOKU:projekt/sammlungen-anlegen.md:79ff |
ok |
meta.views (custom views, AdminCollectionView) |
NOVA:types/admin.d.ts:452-458 („custom views not yet supported“); Schema collection-meta.schema.json enthält kein views (additionalProperties: false) |
Eigene Listenansichten — nicht implementiert / schema-invalid | DOKU:admin/customizing.md:14 behauptet fälschlich „meta.views (Tabelle, Karten, Kalender …)“ |
gap (Doku-Fehler: Behauptung ohne Code-Deckung) |
meta.subNavigation (filter, defaultSort, setDefault) |
NOVA:tibi-types/schemas/config/collection-meta.schema.json (subNavigation); NOVA:types/admin.d.ts:364ff |
Reiter-Filter über der Liste | DOKU:admin/ansichten-listen.md:29ff |
ok |
meta.defaultSort (field, order inkl. MANUALLY) |
Schema collection-meta.schema.json (defaultSort); NOVA:types/admin.d.ts:426ff |
Standard-Sortierung, inkl. manuell per Drag | DOKU:admin/ansichten-listen.md (Sortierung); Drag in DOKU:admin/customizing.md:10ff |
thin (MANUALLY/Drag-Freigabe nicht als Config dokumentiert) |
meta.singleton (enabled, key) |
Schema collection-meta.schema.json (singleton) |
Ein-Eintrag-Sammlung | — (grep singleton in DOKU:src/content/docs ohne Treffer) |
gap |
meta.sections / meta.sidebar (Formular-Gruppen) |
Schema (sections, sidebar); Feld-Seite meta.position: main|sidebar:<gruppe> |
Formular-Layout | DOKU:projekt/sammlungen-anlegen.md:79ff (sidebar-Zeile, position-Beispiel); sections ohne Treffer |
thin (sections-Array und collapsible/collapsed fehlen) |
meta.i18n + i18n.entry (languages, languageField/groupField/clearFields/copyFields) |
Schema (i18n); NOVA:frontend/src/lib/stores/form-i18n-support.svelte.ts:1ff; I18nLanguageTabs, TranslationBar |
Übersetzungs-Kopplung | DOKU:admin/eintrags-editor.md:58ff; DOKU:projekt/sammlungen-anlegen.md:79ff |
thin (clearFields/copyFields-Semantik nur Code) |
meta.pagebuilder (defaultViewport, blockTypeField, blockRegistry.file, screenshot) |
Schema (pagebuilder); NOVA:frontend/src/lib/components/entry/widgets/pagebuilder/load-registry.ts:14-38; NOVA:types/admin.d.ts:618-669 |
Pagebuilder-Anbindung pro Sammlung/Feld | DOKU:projekt/pagebuilder-dev.md:17ff (Registry-Vertrag) |
ok |
cssTransform-Präzedenz (Block > Feld > Collection, Default true) |
NOVA:frontend/src/lib/components/entry/widgets/pagebuilder/load-registry.ts:41-60 |
CSS-Umschreibung steuern | DOKU:projekt/pagebuilder-dev.md:59ff |
ok |
Block-Vertrag (render/update/destroy, BlockRenderContext, css, previewStyles, label/icon/color) |
NOVA:frontend/src/lib/components/entry/widgets/pagebuilder/BlockMount.ts:20-60 |
Eigener Block (framework-agnostisch, Shadow-DOM) | DOKU:projekt/pagebuilder-dev.md:154ff |
ok |
Asset-Specifier (_/ projekt-relativ, /_/-Alias, /-absolut, https/data/blob untouched, {eval}) |
NOVA:frontend/src/lib/utils/project-asset-specifier.ts:17-50; genutzt von load-registry.ts:30-38 und Custom-Exports |
Pfadauflösung für Registry- + Export-Skripte | DOKU:admin/exporte.md:35ff; DOKU:projekt/pagebuilder-dev.md:17ff |
thin (zentrale Regel nur im Code; {eval}-Variante nicht dokumentiert) |
meta.exports (name+file Pflicht, filename-{date}) |
Schema (exports); NOVA:types/admin.d.ts:720ff (file-Specifier, filename) |
Skript-Exporte anmelden | DOKU:admin/exporte.md:35ff |
ok |
Export-Skript-API (db.find/count/loadAll, xlsx, helpers, progress, signal, view, kein $auth, genau 1 Payload + contentType) |
NOVA:frontend/src/lib/utils/custom-export.types.ts:17-100; NOVA:docs/custom-export-script.md:12-60; NOVA:frontend/src/lib/components/ui/ExportDialog.svelte |
Eigene Berichte schreiben | DOKU:admin/exporte.md:48-72 (verkürzt; verweist für Details auf Repo-Doku) + DOKU:admin/customizing.md:51ff |
thin (vollständiges ctx: db.loadAll-Batching 500er, selector-vs-select, nur sort[0], csvCell-Injection-Guard, Dateinamen-Sanitizing nur in NOVA:docs/custom-export-script.md) — Hinweis: Beispiel DOKU:admin/exporte.md:60 ruft loadAll({filter}) ohne Collection auf (abweichend vom Typ loadAll(collection, opts)) |
meta.query (typisierte Zusatz-Querykeys für Hooks, MCP-validiert) |
Schema (query, description „hooks may read ctx.request().query“) |
Projekt-eigene Query-Parameter deklarieren | nur Erwähnung in DOKU:projekt/mcp-nutzen.md |
gap (für Projektentwickler) |
meta.agent (purpose/instructions/fieldHints/workflows) |
Schema (agent); ausgespielt via MCP/REST _meta |
Editor-/Agenten-Doku pro Sammlung | nur Erwähnung in DOKU:projekt/mcp-nutzen.md, DOKU:projekt/pagebuilder-dev.md |
gap (für Projektentwickler) |
meta.openapi / collection.openapi |
Schema (openapi → openapi.schema.json) |
OpenAPI-Overrides | DOKU:reference/openapi.md, DOKU:server/schnittstellen.md |
ok (Server-Seite; Admin-Nutzung nicht verifiziert) |
permissions (public/user + Token-Rollen, methods, filter, validProjections, readonly-/hiddenFields) |
NOVA:tibi-types/schemas/config/permissions.schema.json:1-60 |
Zugriffsrechte | DOKU:projekt/rechte-tokens.md; DOKU:admin/benutzer-rechte.md:47ff |
ok |
project.admin.tokens (allowReload, allowRegenerateSearch, allowBackup, allowSnapshots) |
NOVA:tibi-types/schemas/config/project.schema.json (admin) |
Token-Fähigkeiten für Backup/Snapshots/Search-Rebuild | — (grep allowSnapshots/allowBackup in Doku ohne Treffer) |
gap |
hooks (get/post/put/delete/audit, {type:javascript,file,timeout}) |
NOVA:tibi-types/schemas/config/hooks.schema.json:1-60; Action-hooks ein String oder Hooks-Objekt (action.schema.json) |
Server-Hooks | DOKU:projekt/hooks-schreiben.md |
ok (Server-Seite) |
hooksTrigger / exportScript (Task-Begriffe) |
— (grep im gesamten NOVA:-Repo ohne Treffer) |
nicht verifiziert — Begriffe existieren im Code nicht | — | nicht verifiziert |
Feld-Schema (Typen, index, subFields, validator, readonly/hidden als bool-or-eval, strictFields) |
NOVA:tibi-types/schemas/config/field.schema.json:1-120; NOVA:tibi-types/schemas/config/field-meta.schema.json (label/widget/i18n/helperText/dependsOn/choices/foreign/downscale/imageEditor/drillDown/pageSize/preview/addElementLabel/filter/pagebuilder/schemaRef/openapi) |
Felddefinition + Admin-Meta | DOKU:projekt/felder-widgets.md; DOKU:projekt/sammlungen-anlegen.md; Widget-Tabelle DOKU:admin/customizing.md:19ff |
ok (thin für schemaRef, drillDown, pageSize, containerProps, protected) |
Actions (query/data-Felder, execution.kind/cancellable, output.mapping.summary/details, output.mapping.progress mit index-/count-/status-/messageField + fields) |
NOVA:tibi-types/schemas/config/action.schema.json (actionMethodMeta, actionOutputProgressMapping, actionExecutionMeta); NOVA:frontend/src/lib/components/ActionView.svelte:260-271,349,378-379 (SSE → Balken) |
Action definieren + Fortschritt mappen | DOKU:admin/aktionen.md:10-77; DOKU:projekt/jobs-actions.md:54ff |
ok (thin: execution.kind/cancellable-Semantik nur Code) |
Jobs (cron, {type:javascript,file,timeout}) |
NOVA:tibi-types/schemas/config/job.schema.json:1-40 |
Cron-Jobs | DOKU:projekt/jobs-actions.md:22ff |
ok |
Assets (name, path) |
NOVA:tibi-types/schemas/config/asset.schema.json |
Projekt-Assets | nicht verifiziert | nicht verifiziert |
KI-Proxy-Profile (chat + summarizer/translation/vision, stt, tts, Pricing) |
NOVA:config/ai-proxy.config.json:1-50; NOVA:schemas/config/ai-proxy-config.schema.json (chat/stt/tts Pflichtfelder) |
LLM-Provider/Modelle/Preise (Server) | DOKU:projekt/llm-nutzen.md:59ff; DOKU:admin/ki-funktionen.md:107ff (Grenzen/Kosten) |
thin (Profil-Vererbung summarizer/translation/vision, chatTemplateKwargs, Pricing-Felder nur Code) |
Runtime-System-Config (frontend/assets/system.config.json, Endpunkte, Engine-Modi auto/api/browser/none, TTS-Stimmen) |
NOVA:frontend/src/lib/runtime-system-config.ts:205 (loadRuntimeSystemConfig); NOVA:schemas/config/system-config.schema.json |
KI-Laufzeitconfig des Admins | DOKU:admin/setup.md:63ff (ein Absatz); DOKU:admin/ki-funktionen.md |
thin (Engine-Modi, Endpoint-Tabelle, Fallback-Verhalten fehlen) |
API-Anbindung (apiBaseURL=/api/, apiBaseOverride-Store, withApiPath/buildApiUrl mit _/-Prefix) |
NOVA:frontend/src/config.ts:4; NOVA:frontend/src/lib/store.ts:99; NOVA:frontend/src/lib/api/url.ts:1-30 |
Wie der Admin den Server erreicht | DOKU:admin/setup.md:24ff,63ff (API_BASE, Mock-Tabelle) |
thin (apiBaseOverride-Laufzeit-Umschaltung, namespace → _/-Routing nur Code) |
Mock-Modus (__MOCK_MODE_DEFAULT__, isMockMode(), Mock-Interceptor, Demo-Projekt t1) |
NOVA:esbuild.config.js:83; NOVA:frontend/src/lib/mock/config.ts:15-34; NOVA:frontend/src/index.ts:54ff (Boot mit Mock-Interceptor) |
Offline-/Demo-Betrieb | DOKU:admin/setup.md:63ff |
thin (Umschalt-Regeln, Caching, Mock-Grenzen nur Code) |
Boot-Sequenz (__TIBI_BOOT_MAP__, Stages, tibi:boot-progress, __TIBI_APP_READY__) |
NOVA:frontend/src/index.ts:14-80 |
Lade-/Diagnose-Haken | — | gap (nur für Admin-Entwickler relevant; nicht verifiziert ob gewollt öffentlich) |
Theme/i18n (loadTheme, themeStore, setupI18n, locales/) |
NOVA:frontend/src/lib/store.ts:283-300; NOVA:frontend/src/index.ts:2; NOVA:frontend/src/lib/i18n/ |
Eigenes Theme/Sprachen — lädt der Admin das? | DOKU:admin/setup.md, DOKU:admin/customizing.md ohne Theme/i18n-Customizing |
gap (kein Customizing-Pfad belegt: kein Theme-Slot, keine i18n-Override-Datei im Code gefunden) |
Navigation/Gruppen (group, muiIcon, AdminHub, Breadcrumb, jumpTargets) |
NOVA:frontend/src/lib/components/AdminLayout.svelte; NOVA:frontend/src/lib/jumpTargets.svelte.ts; NOVA:frontend/src/lib/components/ui/Breadcrumb.svelte |
Admin-Navigation | DOKU:admin/konzept.md; DOKU:anwender/orientierung.md |
thin (eigene Navigations-Einträge/Gruppen-Reihenfolge nur via meta.group, dokumentiert in sammlungen-anlegen.md) |
| Eigene Views/Meta-Felder/Skripte laden (Registrierung, Reihenfolge) | Registry-Loader (load-registry.ts:14-38, lazy + Cache pro URL); Export-Loader analog (resolveProjectAssetSpecifier) |
Lade-Reihenfolge | DOKU:projekt/pagebuilder-dev.md:17ff; DOKU:admin/exporte.md:48ff |
thin (Lazy/Cache-Verhalten, Fehler-Fallback Blueprint nur Code) |
2) Fehlende Interface-Doku (Top-Liste für Projektentwickler)
Steht weder in DOKU: noch in NOVA:docs/ — jeweils mit Code-Beleg:
meta.singleton— Ein-Eintrag-Sammlungen (enabled,key). Beleg: Schemacollection-meta.schema.json(singleton). Doku: kein Treffer.project.admin.tokens-Fähigkeiten (allowReload,allowRegenerateSearch,allowBackup,allowSnapshots) — wer Backup/Snapshot/Search-Rebuild per Token darf. Beleg:NOVA:tibi-types/schemas/config/project.schema.json(admin). Doku: kein Treffer.meta.query— deklarierte Zusatz-Querykeys für Hooks (ctx.request().query), MCP-validiert. Beleg: Schemacollection-meta.schema.json(query). Doku: nur NebenerwähnungDOKU:projekt/mcp-nutzen.md.meta.agent— Zweck/Workflows/Gotchas pro Sammlung für Agents (via MCP/REST_meta). Beleg: Schema (agent). Doku: nur Nebenerwähnungmcp-nutzen.md/pagebuilder-dev.md.meta.sections(group/label/collapsible/collapsed) — zweite Formular-Gruppierung nebensidebar. Beleg: Schema (sections). Doku: kein Treffer.meta.defaultSort.order: MANUALLY+ Drag-Freigabe — manuelle Reihenfolge als Config. Beleg: Schema (defaultSortenumASC/DESC/MANUALLY);NOVA:types/admin.d.ts:426ff. Doku: Drag nur Bedienung (customizing.md), nicht Config.meta.viewHint.navigation-Details (nodesField-Defaultnodes,declaredTreesmitsingleton/maxLevel) — nur angerissen (ansichten-listen.md:21,sammlungen-anlegen.md). Beleg: Schema (viewHint.navigation);NOVA:types/admin.d.ts:734ff;NOVA:frontend/src/lib/components/entry/widgets/NavigationTreeField.svelte.- Export-
ctxvollständig (db.loadAll-Batching/Retry/signal, nursort[0],selector-vs-select,csvCell-Guard,csvWithBom, Dateinamen-Sanitizing,{date}) — nurNOVA:docs/custom-export-script.md:12-117+ Typdatei, inDOKU:admin/exporte.mdverkürzt und Beispiel mit falscher Signatur (loadAll({filter})ohne Collection). Beleg:NOVA:frontend/src/lib/utils/custom-export.types.ts:17-100. - Action-
execution(kind,cancellable) + Upload-Fortschritt (createByteProgressToast,hasInlineUploadPayload) — Fortschritts-Balken ja, Abbruch-/Upload-Pfad nein. Beleg: Schema (actionExecutionMeta);NOVA:frontend/src/lib/components/ActionView.svelte:349-379;upload-progress-Util. Doku:DOKU:admin/aktionen.md:47ffohnecancellable/kind. views-Widerspruch klären —DOKU:admin/customizing.md:14versprichtmeta.views(u. a. Kalender), aber Schema verbietetviews(additionalProperties: false,NOVA:tibi-types/schemas/config/collection-meta.schema.json) undNOVA:types/admin.d.ts:452-458markiert Custom-Views als „not yet supported“. Entweder implementieren oder Doku-Zeile streichen.
Nicht verifiziert (Begriffe existieren im Code nicht / unklar): hooksTrigger, exportScript (grep NOVA: ohne Treffer); assets-Admin-Nutzung (asset.schema.json: nur name/path).
3) Anwender-Oberflächen-Inventar
Routen: NOVA:frontend/src/App.svelte:77-141. Komponenten: NOVA:frontend/src/lib/components/ (u. a. admin/, ai/, entry/, entry/widgets/, ui/). Shortcuts: NOVA:frontend/src/lib/shortcuts.ts:22ff (SHORTCUTS), Anzeige ui/CommandPalette.svelte, ui/KeyboardShortcuts.svelte.
| UI-Bereich | Code-Beleg | Doku-Seite | Screenshot? (DOKU:src/assets/anwender/) |
|---|---|---|---|
| Login / Abmelden / Session-Timeout | NOVA:frontend/src/lib/components/LoginPage.svelte; ui/SessionTimeoutWarning.svelte; lib/api/auth.ts |
DOKU:anwender/anmelden.md; DOKU:anwender/hilfe.md:10ff |
ja (anmelden-login.webp, anmelden-abmelden.webp) / Timeout-Dialog fehlt |
| Projektübersicht / Projektwechsel | NOVA:frontend/src/lib/components/ProjectList.svelte (implizit via Route); store.ts:207ff (navigate) |
DOKU:anwender/orientierung.md:10ff,26ff |
ja (orientierung-start.webp, orientierung-projektwechsel.webp) |
Globale Schnellsuche vs. Command-Palette (Ctrl/Cmd-K?) |
NOVA:frontend/src/lib/components/ui/CommandPalette.svelte; shortcuts.ts |
DOKU:anwender/orientierung.md:58ff (nur Schnellsuche, keine Palette) |
Palette-Overlay fehlt (orientierung-schnellsuche.webp zeigt Listen-Suche) |
Tastaturkürzel-Hilfe (?, g→p, s, v) |
NOVA:frontend/src/lib/components/ui/KeyboardShortcuts.svelte; shortcuts.ts:22ff |
DOKU:reference/tastatur-kurzbefehle.md; DOKU:anwender/lesen-suchen-filtern.md (?) |
fehlt |
| Listen (Tabelle/Karten/Medien/Navigation), Suche/Filter/Sortierung/Blättern, Mehrfachauswahl, URL-State | NOVA:frontend/src/lib/components/CollectionView.svelte; CollectionTable/Cards.svelte; ui/FilterPopover.svelte; ui/SortPopover.svelte; ui/SearchInput.svelte |
DOKU:anwender/lesen-suchen-filtern.md; DOKU:admin/ansichten-listen.md:10-94 |
ja (lesen-liste/karten/filter/suche.webp) |
| Suchindex-Hinweis (Queue/Polling) | NOVA:frontend/src/lib/components/ui/SearchIndexBuildNotice.svelte; NOVA:docs/test-plans/41-search-index-status.md:1-24 |
nur Server-Seite (server/betrieb.md, projekt/suche.md) |
fehlt (Anwender sieht Banner ohne Doku) |
| Stapel-Bearbeitung (Bulk) | NOVA:frontend/src/lib/components/BulkEditPanel.svelte |
DOKU:admin/customizing.md (1 Zeile); Anwender: keine |
fehlt |
Eintrag anlegen/bearbeiten (Widgets, Pflicht/Formate, dependsOn) |
NOVA:frontend/src/lib/components/EntryView.svelte; entry/WidgetDispatcher.svelte; entry/widgets/*.svelte |
DOKU:anwender/eintrag-bearbeiten.md; DOKU:admin/eintrags-editor.md:10-77 |
ja (eintrag-formular/neu/gespeichert.webp) |
Feldsuche (Ctrl+F), Sprungziele (j), Drill-Down, Verlauf Undo/Redo, Diff-Dialog, JSON-Overlay |
NOVA:entry/FieldSearch.svelte; entry/DrillDownBreadcrumb.svelte; entry/DiffDialog.svelte; entry/EntryJsonOverlay.svelte; lib/stores/drilldown-store.ts, entry-history |
DOKU:admin/eintrags-editor.md:49ff,77ff (teilweise) |
fehlt (kein Screenshot für Suche/Diff/JSON/Drill-Down) |
| Fremdschlüssel (Drawer, Chips, Inline-Anlage, Rückverweise) | NOVA:entry/ForeignKeyDrawer.svelte; entry/widgets/ForeignKeyWidget.svelte; entry/InlineEntryForm.svelte; entry/ReferencedBy.svelte |
DOKU:admin/eintrags-editor.md:49ff; DOKU:admin/customizing.md:35ff |
fehlt |
| Übersetzung (Sprachtabs, Übersetzungsleiste) | NOVA:entry/I18nLanguageTabs.svelte; entry/TranslationBar.svelte |
DOKU:admin/eintrags-editor.md:58ff |
fehlt |
| Medien (Raster, Upload+Queue, Bildeditor, Lightbox, Einbetten) | NOVA:frontend/src/lib/components/MediaGrid.svelte; ui/MediaLightbox.svelte; entry/widgets/ImageEditor.svelte; FileUploadQueue.svelte |
DOKU:anwender/medien.md; DOKU:admin/medien.md:10-72 |
ja Raster/Upload/Editor (medien-*.webp); Lightbox + Queue fehlen |
Dateien/Fremddateien (foreignFile, Fremd-Medien) |
NOVA:entry/widgets/ForeignFileWidget.svelte; NOVA:docs/test-plans/38-foreign-file.md:1-49 |
DOKU:admin/medien.md:50ff (Einbetten) |
fehlt (eigenständig) |
| Export-Dialog (generisch + Skript-Tabs, Feldauswahl, Count-Warnung) | NOVA:frontend/src/lib/components/ui/ExportDialog.svelte; NOVA:docs/collection-export.md:1-60 |
DOKU:anwender/exportieren.md; DOKU:admin/exporte.md:10ff |
ja (export-dialog/fertig.webp) |
| Aktionen (Formular, SSE-Balken, Ergebnis-Mapping) | NOVA:frontend/src/lib/components/ActionView.svelte; ActionProgressMapping.svelte |
DOKU:admin/aktionen.md; Anwender: keine eigene Seite |
fehlt (Anwender-Seite + Screenshot) |
| KI (Chat, Zusammenfassen, Stimme/TTS, Vision, Werkzeuge, Kosten) | NOVA:frontend/src/lib/components/ai/AiChat.svelte; ai/*.ts (aiController, aiTools, aiUIRegistry, aiVoiceInput, aiTTS); ui/NovaAiPill.svelte |
DOKU:anwender/ki-nutzen.md; DOKU:admin/ki-funktionen.md:10-107 |
ja (ki-chat/stimme/zusammenfassen.webp); Tool-Inspektor/Verlauf/Vision-Overlay fehlen |
| Seiten bauen (Pagebuilder-Editor, Overlays, Viewports, Screenshot-Pipeline) | NOVA:entry/widgets/pagebuilder/PagebuilderWidget.svelte; PagebuilderOverlay.svelte; PagebuilderOverviewOverlay.svelte; PagebuilderScreenshotHost.svelte |
DOKU:anwender/seiten-bauen.md; DOKU:projekt/pagebuilder-dev.md:128ff |
ja (seiten-*.webp, 6 Dateien) |
| Verlauf/Audit (Liste, Diff, Wiederherstellen) | NOVA:frontend/src/lib/components/AuditView.svelte; AuditHistoryPanel.svelte; AuditSidebarHistory.svelte; AuditDiff.svelte; AuditRestoreDialog.svelte |
Anwender: keine Seite; Admin: nur implizit | fehlt (Seite + alle Screenshots) |
| Snapshots/Backup (Übersicht, Auslösen/SSE, Download, Restore, Import-Analyse) | NOVA:frontend/src/lib/components/SnapshotView.svelte; BackupView.svelte; lib/api/snapshot-api.ts; backup-api.ts; NOVA:docs/test-plans/43-backup-restore.md:1-89, 44-snapshots.md:1-89 |
DOKU:anwender/sichern.md:10-49 |
ja (sichern-uebersicht/details/statistik.webp); Backup-Import-Dialog + Restore-Bestätigung fehlen |
| Benutzer/Teams/Orgs/Rollen/Tokens (AdminHub, Drawers, Chips) | NOVA:frontend/src/lib/components/admin/AdminHub.svelte; UserTab/TeamTab/OrgTab.svelte; *DetailDrawer.svelte; RoleSection.svelte; PermissionChipsInput.svelte; ProjectAdminView.svelte |
DOKU:anwender/benutzer-teams.md; DOKU:admin/benutzer-rechte.md:27-80 |
teilweise (benutzer-teams/profil.webp); Drawer-Details, Token-Seite, Projekt-Admin fehlen |
| Stellvertretung (Button + Amber-Banner + Stopp) | NOVA:frontend/src/lib/api/auth.ts:270-300 (impersonate); NOVA:docs/test-plans/42-impersonation.md:1-47; Banner in AdminLayout.svelte |
DOKU:admin/benutzer-rechte.md:81ff |
fehlt |
| Profilseite | NOVA:frontend/src/lib/components/ProfilePage.svelte (Route /profile, App.svelte:114ff) |
DOKU:anwender/benutzer-teams.md:25 |
ja (benutzer-profil.webp) |
| Avatar/Theme-Umschalter, Toasts, Voice-Eingabe in Filtern | NOVA:ui/ThemeToggle.svelte; ui/Toast.svelte; ui/VoiceFilterTextInput.svelte; ui/VoiceRecorderButton.svelte |
verstreut/keine | fehlen |
UI-Bereiche ohne Screenshot (Namen): Tastaturkürzel-Hilfe, Command-Palette-Overlay, Suchindex-Banner, Bulk-Edit-Panel, Feldsuche/Sprungziele/Drill-Down, Diff-Dialog, JSON-Overlay, FK-Drawer/Inline-Anlage/Rückverweise, Übersetzungsleiste/Sprachtabs, 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, Admin-Drawers (Benutzer/Team/Org-Details), Token-Seite, Projekt-Admin-Ansicht, Stellvertretungs-Banner, Session-Timeout-Dialog, Theme-Umschalter, Voice-Filter-Eingabe.
4) Löschkandidaten NOVA:docs/ (je Datei eine Zeile)
| Datei | Inhalt (kurz) | Abdeckung in tibi-docs | Urteil |
|---|---|---|---|
docs/collection-config.md (2293 Zeilen) |
Vollreferenz Projekt-/Collection-/Feld-/Meta-Schema inkl. Server-Optionen | teilweise (projekt/sammlungen-anlegen.md, felder-widgets.md, reference/schemas.md; Server-Details in server/*) |
muss bleiben (einzige Vollreferenz; Auszug nach reference/ wäre Follow-up) |
docs/collection-export.md (327) |
Generischer Listen-Export: Flow, Dialog, Batch-Laden, Warnschwellen | weitgehend (admin/exporte.md:10ff, anwender/exportieren.md) |
teilweise → vorerst bleiben (Schwellenwerte/Batch-Details nur hier) |
docs/custom-export-script.md (117) |
ctx-Vertrag für Skript-Exporte (einzige Quelle für db.loadAll-Semantik, Payload-Regeln, Styling) |
thin (admin/exporte.md:48ff verweist hierher) |
muss bleiben (bis ctx voll in tibi-docs steht; siehe Punkt 2.8) |
docs/test-plans/02-navigation-routing.md (31) |
SPA-Routing, History, Breadcrumbs, Navigation-Guard | teilweise (anwender/orientierung.md, admin/ansichten-listen.md:76ff) |
teilweise → bleiben (Guard-/History-Details nur hier) |
docs/test-plans/05-collection-view.md |
Listen-Rendering (4 View-Modi), Suche/Sort/Filter/Pagination, URL-State | weitgehend (admin/ansichten-listen.md, anwender/lesen-suchen-filtern.md) |
teilweise → bleiben (Mock-Fälle, Debounce-Details) |
docs/test-plans/07-entry-editor-advanced.md |
Undo/Redo, Diff, Drill-Down, Feldsuche, Jump-Targets | teilweise (admin/eintrags-editor.md) |
teilweise → bleiben |
docs/test-plans/11-foreign-keys.md |
FK-Widgets, Chip-Arrays, Drawer-Flow, Inline-Create, Nested-Drawers | teilweise (admin/eintrags-editor.md:49ff, customizing.md:35ff) |
teilweise → bleiben |
docs/test-plans/16-ai-integration.md (41) |
KI-Integration (Chat/Modelle/Werkzeuge) | weitgehend (admin/ki-funktionen.md, projekt/llm-nutzen.md) |
teilweise → bleiben (Mock-/Test-Spezifika) |
docs/test-plans/17-ai-tts.md (24) |
TTS/Stimme | weitgehend (admin/ki-funktionen.md:52ff) |
teilweise → bleiben |
docs/test-plans/25-file-upload.md (43) |
Datei-Upload-Flows | teilweise (admin/medien.md:19ff) |
teilweise → bleiben |
docs/test-plans/27-media-grid.md (40) |
Medien-Raster, DnD-Upload, Inline-Edit | teilweise (admin/medien.md:10ff) |
teilweise → bleiben |
docs/test-plans/34-i18n-fields.md (34) |
Mehrsprachige Felder | teilweise (admin/eintrags-editor.md:58ff) |
teilweise → bleiben |
docs/test-plans/35-entry-i18n.md (54) |
Eintrags-Übersetzung (Kopplung, Leiste) | teilweise (s. o.) | teilweise → bleiben |
docs/test-plans/36-voice-input-fields.md (31) |
Spracheingabe in Feldern | teilweise (admin/ki-funktionen.md:52ff) |
teilweise → bleiben |
docs/test-plans/37-pagebuilder.md |
Pagebuilder-Vorschau, Lookup-Hydratisierung, URL-Normalisierung | weitgehend (anwender/seiten-bauen.md, projekt/pagebuilder-dev.md) |
teilweise → bleiben (Mock-/URL-Edge-Cases nur hier) |
docs/test-plans/38-foreign-file.md (49) |
Fremddateien/-medien | teilweise (admin/medien.md:50ff) |
teilweise → bleiben |
docs/test-plans/39-preview-resolver.md |
Vorschau-Regeln (Auto-Detect vs. strikt, Slot-Pfade, FK-Badges) | thin (admin/customizing.md:35ff) |
muss bleiben (Regeln sonst nirgends) |
docs/test-plans/40-actions.md |
Action-Routen, Methoden-Tabs, SSE-Fortschritt, Disabled-States | weitgehend (admin/aktionen.md, projekt/jobs-actions.md) |
teilweise → bleiben (Routing-/State-Details) |
docs/test-plans/41-search-index-status.md (24) |
Suchindex-Banner (Projekt/Collection, Polling) | nicht abgedeckt (nur Server-Seite server/betrieb.md, projekt/suche.md) |
muss bleiben (einzige UI-Quelle) |
docs/test-plans/42-impersonation.md (47) |
Stellvertretung (Endpoint, Drawer-Button, Banner, Rollback) | teilweise (admin/benutzer-rechte.md:81ff) |
teilweise → bleiben (Mock-Endpoint, Rollback-Details) |
docs/test-plans/43-backup-restore.md (89) |
Backup-Export/Import (SSE, 6 Endpunkte, Rechte) | teilweise (anwender/sichern.md, projekt/audit-backup.md) |
teilweise → bleiben (API-/SSE-Details) |
docs/test-plans/44-snapshots.md (89) |
Snapshot-CRUD (SSE, 10 Endpunkte, ZIP, Prune) | teilweise (s. o.) | teilweise → bleiben |
Löschkandidaten-Zählung: 0 von 21 sofort löschbar — 3× „muss bleiben“, 18× „teilweise → vorerst bleiben“, 0× „vollständig abgedeckt“.