Doku-Vollausbau: 62 Seiten (Projekt/Admin/Anwender/Referenz), Hook-Referenz mit Signaturen, Corporate-Screenshots, Coverage-Inventar
Deploy tibi-docs / build-and-deploy (push) Failing after 38s

- Einstieg: Schnellstart + Neues Projekt aus Starter-Skill, Was-ist-Tibi mit Backend/Website-Trennung
- Projekt: Sammlungen, Felder, Abfragen, Rechte, Hooks, Dateien, i18n, Suche, SSR, Pagebuilder, Jobs, Audit, Deploy, LLM, MCP
- Hook-Referenz: 66 Symbole mit Signatur + Beispiel + Fehlerfall (5 Kapitel)
- Admin: Ansichten, Editor, Medien, Exporte, Aktionen, Rechte, KI, Setup, Customizing
- Anwender: 11 Anleitungen im professionellen Du-Ton, 30 Corporate-Screenshots
- Referenz: Schemas, Token-Köpfe, Fehlerbilder, Shortcuts, OpenAPI-Platzhalter
- ADR-0001 bis 0003, Coverage-Skript (282 Items) + Map, Plan-Dateien
This commit is contained in:
apairon committed 2026-10-16 22:49:07 +00:00
1 parent acb1d32355
commit 1897bb50d9
101 files changed
+8980 -68

No files matched your search

+346
View File
@@ -0,0 +1,346 @@
{
"_kommentar": "Start-Mapping Routen/Contexts/Tools/Schemas/Komponenten/Testplaene auf Doku-Slugs. Unvollstaendig by design, Rest fuellt der Orga-Agent. Keys muessen exakt den Inventar-Items aus scripts/coverage-inventory.mjs entsprechen.",
"routes": {
"/_/:project/:collection": "projekt/abfragen-lesen",
"/_/:project/:collection/:id": "projekt/abfragen-lesen",
"/_/:project/:collection/_count": "projekt/abfragen-lesen",
"/_/:project/:collection/_facet": "projekt/suche",
"/_/:project/:collection/_queue": "projekt/suche",
"/_/:project/_actions/:action": "projekt/jobs-actions",
"/_/:project/_/assets/:name/*path": "projekt/dateien-bilder",
"/_openapi/:project": "reference/openapi",
"/audit": "projekt/audit-backup",
"/llm/chat": "projekt/llm-nutzen",
"/mcp": "projekt/mcp-nutzen",
"/token/_scopes": "projekt/rechte-tokens",
"/version": "server/schnittstellen",
"_/:project/_/admin/backup": "projekt/audit-backup",
"_/:project/_/admin/snapshots": "projekt/audit-backup",
"/_/:project/:collection/:id/:field": "projekt/abfragen-lesen",
"/_/:project/:collection/:id/:field/*path": "projekt/abfragen-lesen",
"/llm/providers": "projekt/llm-nutzen",
"_/:project/_/admin/backup/:restoreToken": "projekt/audit-backup",
"_/:project/_/admin/backup/analyze-download": "server/schnittstellen",
"_/:project/_/admin/backup/download/:file": "projekt/audit-backup",
"_/:project/_/admin/embedding/status": "server/betrieb",
"_/:project/_/admin/regenerate-search": "server/betrieb",
"_/:project/_/admin/reload": "server/betrieb",
"_/:project/_/admin/search-worker/status": "server/betrieb",
"_/:project/_/admin/snapshots/:id": "projekt/audit-backup",
"_/:project/_/admin/snapshots/:id/download": "projekt/audit-backup",
"_/:project/_/admin/snapshots/:id/restore": "projekt/audit-backup",
"_/:project/_/admin/snapshots/configs": "projekt/audit-backup",
"_/:project/_/admin/snapshots/configs/:name/trigger": "projekt/audit-backup",
"_/:project/_/admin/snapshots/download/:file": "projekt/audit-backup",
"_/:project/_/admin/snapshots/prune": "projekt/audit-backup",
"_/:project/_/admin/snapshots/stats": "projekt/audit-backup",
"/*path": "server/sicherheit",
"/embedding/status": "server/schnittstellen",
"/shutdown": "server/schnittstellen"
},
"contexts": {
"base64.decode": "reference/hooks-meta",
"base64.encode": "reference/hooks-meta",
"bcrypt.check": "reference/hooks-sicherheit",
"bcrypt.hash": "reference/hooks-sicherheit",
"cache.clear": "reference/hooks-daten",
"cache.count": "reference/hooks-daten",
"cache.delete": "reference/hooks-daten",
"cache.get": "reference/hooks-daten",
"cache.has": "reference/hooks-daten",
"cache.set": "reference/hooks-daten",
"channel.send": "reference/hooks-netze",
"channel.subscribe": "reference/hooks-netze",
"charset.decode": "reference/hooks-meta",
"charset.iso8859ToUtf8": "reference/hooks-meta",
"config.namespace": "reference/hooks-sicherheit",
"config.project": "reference/hooks-sicherheit",
"config.server": "reference/hooks-sicherheit",
"cookie.get": "reference/hooks-sicherheit",
"cookie.set": "reference/hooks-sicherheit",
"crypto.md5": "reference/hooks-sicherheit",
"crypto.sha256": "reference/hooks-sicherheit",
"db.count": "reference/hooks-daten",
"db.create": "reference/hooks-daten",
"db.delete": "reference/hooks-daten",
"db.deleteMany": "reference/hooks-daten",
"db.find": "reference/hooks-daten",
"db.update": "reference/hooks-daten",
"db.updateMany": "reference/hooks-daten",
"debug.dump": "reference/hooks-meta",
"debug.sentryTraceId": "reference/hooks-meta",
"debug.sleep": "reference/hooks-meta",
"exec.command": "reference/hooks-sicherheit",
"fs.configDir": "reference/hooks-daten",
"fs.copy": "reference/hooks-daten",
"fs.mkDir": "reference/hooks-daten",
"fs.readDir": "reference/hooks-daten",
"fs.readFile": "reference/hooks-daten",
"fs.remove": "reference/hooks-daten",
"fs.stat": "reference/hooks-daten",
"fs.writeFile": "reference/hooks-daten",
"http.fetch": "reference/hooks-netze",
"http.fetchStream": "reference/hooks-netze",
"image.filter": "reference/hooks-medien",
"json.parse": "reference/hooks-meta",
"json.stringify": "reference/hooks-meta",
"jwt.create": "reference/hooks-sicherheit",
"jwt.parse": "reference/hooks-sicherheit",
"pdf.cpu": "reference/hooks-medien",
"pdf.fromHTML": "reference/hooks-medien",
"ratelimit.backoffCheck": "reference/hooks-netze",
"ratelimit.backoffRecord": "reference/hooks-netze",
"ratelimit.backoffReset": "reference/hooks-netze",
"ratelimit.windowCheck": "reference/hooks-netze",
"ratelimit.windowCount": "reference/hooks-netze",
"ratelimit.windowReset": "reference/hooks-netze",
"request": "reference/hooks-daten",
"response.flush": "reference/hooks-daten",
"response.header": "reference/hooks-daten",
"response.write": "reference/hooks-daten",
"response.writeHeader": "reference/hooks-daten",
"response.writeSSE": "reference/hooks-daten",
"smtp.sendMail": "reference/hooks-netze",
"tpl.execute": "reference/hooks-medien",
"user.auth": "reference/hooks-sicherheit",
"xml.create": "reference/hooks-meta",
"xml.parse": "reference/hooks-meta"
},
"tools": {
"action_call": "projekt/mcp-nutzen",
"actions_list": "projekt/mcp-nutzen",
"collections_list": "projekt/mcp-nutzen",
"document_get": "projekt/mcp-nutzen",
"documents_list": "projekt/mcp-nutzen",
"action_describe": "projekt/mcp-nutzen",
"agent_guide_get": "projekt/mcp-nutzen",
"asset_read": "projekt/mcp-nutzen",
"assets_list": "projekt/mcp-nutzen",
"audit_query": "projekt/mcp-nutzen",
"backup_create": "projekt/mcp-nutzen",
"collection_describe": "projekt/mcp-nutzen",
"document_create": "projekt/mcp-nutzen",
"document_delete": "projekt/mcp-nutzen",
"document_update": "projekt/mcp-nutzen",
"documents_count": "projekt/mcp-nutzen",
"documents_facet": "projekt/mcp-nutzen",
"file_read": "projekt/mcp-nutzen",
"jobs_list": "projekt/mcp-nutzen",
"openapi_get": "projekt/mcp-nutzen",
"org_get": "projekt/mcp-nutzen",
"orgs_list": "projekt/mcp-nutzen",
"project_get": "projekt/mcp-nutzen",
"project_reload": "projekt/mcp-nutzen",
"projects_list": "projekt/mcp-nutzen",
"queue_status": "projekt/mcp-nutzen",
"regenerate_search": "projekt/mcp-nutzen",
"snapshots_list": "projekt/mcp-nutzen",
"system_meta_get": "projekt/mcp-nutzen",
"team_get": "projekt/mcp-nutzen",
"teams_list": "projekt/mcp-nutzen",
"user_create": "projekt/mcp-nutzen",
"user_delete": "projekt/mcp-nutzen",
"user_get": "projekt/mcp-nutzen",
"user_update": "projekt/mcp-nutzen",
"users_list": "projekt/mcp-nutzen"
},
"schemas": {
"action.schema.json": "projekt/jobs-actions",
"collection.schema.json": "reference/schemas",
"field.schema.json": "projekt/felder-widgets",
"hooks.schema.json": "projekt/hooks-schreiben",
"job.schema.json": "projekt/jobs-actions",
"permissions.schema.json": "projekt/rechte-tokens",
"project.schema.json": "einstieg/neues-projekt",
"asset.schema.json": "reference/schemas",
"collection-meta.schema.json": "reference/schemas",
"defs.schema.json": "reference/schemas",
"field-list.schema.json": "reference/schemas",
"field-meta.schema.json": "reference/schemas",
"image-filter.schema.json": "reference/schemas",
"openapi.schema.json": "reference/schemas",
"projections.schema.json": "reference/schemas",
"snapshot.schema.json": "reference/schemas"
},
"components": {
"lib/components/ActionView": "admin/aktionen",
"lib/components/BackupView": "projekt/audit-backup",
"lib/components/CollectionView": "admin/ansichten-listen",
"lib/components/EntryView": "admin/eintrags-editor",
"lib/components/entry/widgets/pagebuilder/PagebuilderOverlay": "projekt/pagebuilder-dev",
"lib/components/admin/AdminHub": "admin/benutzer-rechte",
"lib/components/admin/OrgAssignmentSection": "admin/benutzer-rechte",
"lib/components/admin/OrgCreateDrawer": "admin/benutzer-rechte",
"lib/components/admin/OrgDetailDrawer": "admin/benutzer-rechte",
"lib/components/admin/OrgTab": "admin/benutzer-rechte",
"lib/components/admin/PermissionChipsInput": "admin/benutzer-rechte",
"lib/components/admin/ProjectAdminView": "admin/benutzer-rechte",
"lib/components/admin/ProjectCreateDrawer": "admin/benutzer-rechte",
"lib/components/admin/ProjectDetailDrawer": "admin/benutzer-rechte",
"lib/components/admin/ProjectRelationRow": "admin/benutzer-rechte",
"lib/components/admin/RoleSection": "admin/benutzer-rechte",
"lib/components/admin/TeamAssignmentSection": "admin/benutzer-rechte",
"lib/components/admin/TeamCreateDrawer": "admin/benutzer-rechte",
"lib/components/admin/TeamDetailDrawer": "admin/benutzer-rechte",
"lib/components/admin/TeamTab": "admin/benutzer-rechte",
"lib/components/admin/UserCreateDrawer": "admin/benutzer-rechte",
"lib/components/admin/UserDetailDrawer": "admin/benutzer-rechte",
"lib/components/admin/UserTab": "admin/benutzer-rechte",
"lib/components/ai/AiActionDivider": "admin/ki-funktionen",
"lib/components/ai/AiButton": "admin/ki-funktionen",
"lib/components/ai/AiChat": "admin/ki-funktionen",
"lib/components/ai/AiConversationList": "admin/ki-funktionen",
"lib/components/ai/AiDebugContext": "admin/ki-funktionen",
"lib/components/ai/AiHighlight": "admin/ki-funktionen",
"lib/components/ai/AiMessage": "admin/ki-funktionen",
"lib/components/ai/AiSummaryDivider": "admin/ki-funktionen",
"lib/components/ai/AiToolInspector": "admin/ki-funktionen",
"lib/components/ai/AiToolStatus": "admin/ki-funktionen",
"lib/components/ai/AiVisionOverlay": "admin/ki-funktionen",
"lib/components/entry/widgets/pagebuilder/BlueprintCard": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/PagebuilderOverviewOverlay": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/PagebuilderScreenshotHost": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/PagebuilderThumbnail": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/PagebuilderViewportControl": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/PagebuilderWidget": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/pagebuilder/RowPreview": "projekt/pagebuilder-dev",
"lib/components/entry/widgets/BooleanWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ChipArrayWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/DateWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/FileArrayWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/FileWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ForeignFileWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ForeignKeyChipArrayWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ForeignKeyWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ImageEditor": "admin/eintrags-editor",
"lib/components/entry/widgets/JsonWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/NavigationTreeField": "admin/eintrags-editor",
"lib/components/entry/widgets/NumberWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/ObjectArrayField": "admin/eintrags-editor",
"lib/components/entry/widgets/ObjectField": "admin/eintrags-editor",
"lib/components/entry/widgets/ObjectNavigationCard": "admin/eintrags-editor",
"lib/components/entry/widgets/RichtextWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/SelectWidget": "admin/eintrags-editor",
"lib/components/entry/widgets/TextWidget": "admin/eintrags-editor",
"lib/components/entry/DiffDialog": "admin/eintrags-editor",
"lib/components/entry/DrillDownBreadcrumb": "admin/eintrags-editor",
"lib/components/entry/EntryJsonOverlay": "admin/eintrags-editor",
"lib/components/entry/FieldRenderer": "admin/eintrags-editor",
"lib/components/entry/FieldSearch": "admin/eintrags-editor",
"lib/components/entry/ForeignKeyDrawer": "admin/eintrags-editor",
"lib/components/entry/I18nFieldWrapper": "admin/eintrags-editor",
"lib/components/entry/I18nLanguageTabs": "admin/eintrags-editor",
"lib/components/entry/InlineEntryForm": "admin/eintrags-editor",
"lib/components/entry/LinkedEntryEditorDrawer": "admin/eintrags-editor",
"lib/components/entry/PreviewElement": "admin/eintrags-editor",
"lib/components/entry/ReadonlyFieldDisplay": "admin/eintrags-editor",
"lib/components/entry/ReferencedBy": "admin/eintrags-editor",
"lib/components/entry/TranslationBar": "admin/eintrags-editor",
"lib/components/entry/WidgetDispatcher": "admin/eintrags-editor",
"lib/components/token/TokenAdminTab": "admin/benutzer-rechte",
"lib/components/token/TokenCreatedDialog": "admin/benutzer-rechte",
"lib/components/token/TokenFormDrawer": "admin/benutzer-rechte",
"lib/components/token/TokenList": "admin/benutzer-rechte",
"lib/components/token/TokenScopePicker": "admin/benutzer-rechte",
"lib/components/token/TokenSettings": "admin/benutzer-rechte",
"lib/components/ui/Avatar": "admin/ansichten-listen",
"lib/components/ui/Badge": "admin/ansichten-listen",
"lib/components/ui/Breadcrumb": "admin/ansichten-listen",
"lib/components/ui/Chip": "admin/ansichten-listen",
"lib/components/ui/CommandPalette": "admin/ansichten-listen",
"lib/components/ui/ConfirmDialog": "admin/ansichten-listen",
"lib/components/ui/DrawerBreadcrumb": "admin/ansichten-listen",
"lib/components/ui/ExportDialog": "admin/ansichten-listen",
"lib/components/ui/FieldValuePreview": "admin/ansichten-listen",
"lib/components/ui/FilterPopover": "admin/ansichten-listen",
"lib/components/ui/ForeignKeySelect": "admin/ansichten-listen",
"lib/components/ui/FormCard": "admin/ansichten-listen",
"lib/components/ui/FormField": "admin/ansichten-listen",
"lib/components/ui/Icon": "admin/ansichten-listen",
"lib/components/ui/KbdBadge": "admin/ansichten-listen",
"lib/components/ui/KeyboardShortcuts": "admin/ansichten-listen",
"lib/components/ui/LoadingState": "admin/ansichten-listen",
"lib/components/ui/MediaLightbox": "admin/ansichten-listen",
"lib/components/ui/NovaAiPill": "admin/ansichten-listen",
"lib/components/ui/NovaAiStreamContent": "admin/ansichten-listen",
"lib/components/ui/OptimizedImage": "admin/ansichten-listen",
"lib/components/ui/Pagination": "admin/ansichten-listen",
"lib/components/ui/PlaceholderCover": "admin/ansichten-listen",
"lib/components/ui/PreviewMetaItem": "admin/ansichten-listen",
"lib/components/ui/PreviewTitleBadge": "admin/ansichten-listen",
"lib/components/ui/RecordPreviewCard": "admin/ansichten-listen",
"lib/components/ui/RichTooltip": "admin/ansichten-listen",
"lib/components/ui/SaveActionButton": "admin/ansichten-listen",
"lib/components/ui/SearchIndexBuildNotice": "admin/ansichten-listen",
"lib/components/ui/SearchInput": "admin/ansichten-listen",
"lib/components/ui/SearchScoreIndicator": "admin/ansichten-listen",
"lib/components/ui/Section": "admin/ansichten-listen",
"lib/components/ui/SessionTimeoutWarning": "admin/ansichten-listen",
"lib/components/ui/Skeleton": "admin/ansichten-listen",
"lib/components/ui/SkeletonCard": "admin/ansichten-listen",
"lib/components/ui/SlideOverDrawer": "admin/ansichten-listen",
"lib/components/ui/SortPopover": "admin/ansichten-listen",
"lib/components/ui/Spinner": "admin/ansichten-listen",
"lib/components/ui/StructuredPreviewContent": "admin/ansichten-listen",
"lib/components/ui/ThemeToggle": "admin/ansichten-listen",
"lib/components/ui/Toast": "admin/ansichten-listen",
"lib/components/ui/UserList": "admin/ansichten-listen",
"lib/components/ui/ValidationBadge": "admin/ansichten-listen",
"lib/components/ui/VideoPlayer": "admin/ansichten-listen",
"lib/components/ui/VideoPreview": "admin/ansichten-listen",
"lib/components/ui/VoiceFilterTextInput": "admin/ansichten-listen",
"lib/components/ui/VoiceRecorderButton": "admin/ansichten-listen",
"lib/components/ui/VoiceTextInputControl": "admin/ansichten-listen",
"App": "admin/konzept",
"lib/components/ActionMappedFieldList": "admin/aktionen",
"lib/components/ActionMethodScaffold": "admin/aktionen",
"lib/components/ActionOutputMapping": "admin/aktionen",
"lib/components/ActionProgressMapping": "admin/aktionen",
"lib/components/AdminLayout": "admin/konzept",
"lib/components/AuditDiff": "projekt/audit-backup",
"lib/components/AuditHistoryPanel": "projekt/audit-backup",
"lib/components/AuditRestoreDialog": "projekt/audit-backup",
"lib/components/AuditSidebarHistory": "projekt/audit-backup",
"lib/components/AuditView": "projekt/audit-backup",
"lib/components/BulkEditPanel": "admin/ansichten-listen",
"lib/components/CollectionCards": "admin/ansichten-listen",
"lib/components/CollectionList": "admin/ansichten-listen",
"lib/components/CollectionTable": "admin/ansichten-listen",
"lib/components/FileUploadQueue": "admin/medien",
"lib/components/LoginPage": "anwender/anmelden",
"lib/components/MediaGrid": "admin/medien",
"lib/components/MediaGridTile": "admin/medien",
"lib/components/NavigationCollectionView": "admin/ansichten-listen",
"lib/components/ProfilePage": "anwender/benutzer-teams",
"lib/components/ProjectList": "admin/konzept",
"lib/components/SnapshotView": "projekt/audit-backup",
"__ignore": [
"lib/mock/*",
"*.test",
"lib/i18n/locales/*",
"*.d",
"graphify-out/*"
]
},
"testplans": {
"05-collection-view.md": "admin/ansichten-listen",
"37-pagebuilder.md": "projekt/pagebuilder-dev",
"40-actions.md": "admin/aktionen",
"43-backup-restore.md": "projekt/audit-backup",
"44-snapshots.md": "projekt/audit-backup",
"02-navigation-routing.md": "anwender/orientierung",
"07-entry-editor-advanced.md": "admin/eintrags-editor",
"11-foreign-keys.md": "admin/eintrags-editor",
"16-ai-integration.md": "admin/ki-funktionen",
"17-ai-tts.md": "admin/ki-funktionen",
"25-file-upload.md": "admin/medien",
"27-media-grid.md": "admin/medien",
"34-i18n-fields.md": "admin/eintrags-editor",
"35-entry-i18n.md": "admin/eintrags-editor",
"36-voice-input-fields.md": "admin/eintrags-editor",
"38-foreign-file.md": "admin/medien",
"39-preview-resolver.md": "admin/customizing",
"41-search-index-status.md": "projekt/suche",
"42-impersonation.md": "admin/benutzer-rechte"
}
}
+874
View File
@@ -0,0 +1,874 @@
{
"generatedAt": "2026-10-16T22:24:42.372Z",
"categories": {
"routes": {
"total": 36,
"mapped": 36,
"openCount": 0,
"openItems": []
},
"contexts": {
"total": 66,
"mapped": 66,
"openCount": 0,
"openItems": [],
"symbols": [
{
"symbol": "base64.decode",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_base64.go",
"hasArgs": true
},
{
"symbol": "base64.encode",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_base64.go",
"hasArgs": true
},
{
"symbol": "bcrypt.check",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_bcrypt.go",
"hasArgs": true
},
{
"symbol": "bcrypt.hash",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_bcrypt.go",
"hasArgs": true
},
{
"symbol": "cache.clear",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.count",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.delete",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.get",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.has",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.set",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "channel.send",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_channel.go",
"hasArgs": true
},
{
"symbol": "channel.subscribe",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_channel.go",
"hasArgs": true
},
{
"symbol": "charset.decode",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_charset.go",
"hasArgs": true
},
{
"symbol": "charset.iso8859ToUtf8",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_charset.go",
"hasArgs": true
},
{
"symbol": "config.namespace",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_config.go",
"hasArgs": false
},
{
"symbol": "config.project",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_config.go",
"hasArgs": false
},
{
"symbol": "config.server",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_config.go",
"hasArgs": false
},
{
"symbol": "cookie.get",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_cookie.go",
"hasArgs": true
},
{
"symbol": "cookie.set",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_cookie.go",
"hasArgs": true
},
{
"symbol": "crypto.md5",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_crypto.go",
"hasArgs": true
},
{
"symbol": "crypto.sha256",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_crypto.go",
"hasArgs": true
},
{
"symbol": "db.count",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.create",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.delete",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.deleteMany",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.find",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.update",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.updateMany",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "debug.dump",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_debug.go",
"hasArgs": true
},
{
"symbol": "debug.sentryTraceId",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_debug.go",
"hasArgs": false
},
{
"symbol": "debug.sleep",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_debug.go",
"hasArgs": true
},
{
"symbol": "exec.command",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_exec.go",
"hasArgs": true
},
{
"symbol": "fs.configDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": false
},
{
"symbol": "fs.copy",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.mkDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readFile",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.remove",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.stat",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.writeFile",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "http.fetch",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_http.go",
"hasArgs": true
},
{
"symbol": "http.fetchStream",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_http.go",
"hasArgs": true
},
{
"symbol": "image.filter",
"page": "reference/hooks-medien",
"stufe": 4,
"goFile": "context_image.go",
"hasArgs": true
},
{
"symbol": "json.parse",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_json.go",
"hasArgs": true
},
{
"symbol": "json.stringify",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_json.go",
"hasArgs": true
},
{
"symbol": "jwt.create",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_jwt.go",
"hasArgs": true
},
{
"symbol": "jwt.parse",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_jwt.go",
"hasArgs": true
},
{
"symbol": "pdf.cpu",
"page": "reference/hooks-medien",
"stufe": 4,
"goFile": "context_pdf.go",
"hasArgs": false
},
{
"symbol": "pdf.fromHTML",
"page": "reference/hooks-medien",
"stufe": 4,
"goFile": "context_pdf.go",
"hasArgs": false
},
{
"symbol": "ratelimit.backoffCheck",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "ratelimit.backoffRecord",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "ratelimit.backoffReset",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "ratelimit.windowCheck",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "ratelimit.windowCount",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "ratelimit.windowReset",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "request",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_request.go",
"hasArgs": false
},
{
"symbol": "response.flush",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.header",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.write",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeHeader",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeSSE",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "smtp.sendMail",
"page": "reference/hooks-netze",
"stufe": 4,
"goFile": "context_smtp.go",
"hasArgs": true
},
{
"symbol": "tpl.execute",
"page": "reference/hooks-medien",
"stufe": 4,
"goFile": "context_tpl.go",
"hasArgs": true
},
{
"symbol": "user.auth",
"page": "reference/hooks-sicherheit",
"stufe": 4,
"goFile": "context_user.go",
"hasArgs": false
},
{
"symbol": "xml.create",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_xml.go",
"hasArgs": true
},
{
"symbol": "xml.parse",
"page": "reference/hooks-meta",
"stufe": 4,
"goFile": "context_xml.go",
"hasArgs": true
}
]
},
"tools": {
"total": 36,
"mapped": 36,
"openCount": 0,
"openItems": [],
"symbols": [
{
"symbol": "action_call",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "action_describe",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "actions_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "agent_guide_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "asset_read",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "assets_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "audit_query",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "backup_create",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "collection_describe",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "collections_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "document_create",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "document_delete",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "document_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "document_update",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "documents_count",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "documents_facet",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "documents_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "file_read",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "jobs_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "openapi_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "org_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "orgs_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "project_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "project_reload",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "projects_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "queue_status",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "regenerate_search",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "snapshots_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "system_meta_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "team_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "teams_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "user_create",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "user_delete",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "user_get",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "user_update",
"page": "projekt/mcp-nutzen",
"stufe": 4
},
{
"symbol": "users_list",
"page": "projekt/mcp-nutzen",
"stufe": 4
}
]
},
"schemas": {
"total": 16,
"mapped": 16,
"openCount": 0,
"openItems": []
},
"components": {
"total": 151,
"mapped": 151,
"openCount": 0,
"openItems": []
},
"testplans": {
"total": 19,
"mapped": 19,
"openCount": 0,
"openItems": []
}
},
"depth": {
"routes": {
"total": 36,
"stufe4": 0,
"stufe3": 0,
"stufe2": 36,
"stufe1": 0
},
"contexts": {
"total": 66,
"stufe4": 66,
"stufe3": 0,
"stufe2": 0,
"stufe1": 0
},
"tools": {
"total": 36,
"stufe4": 36,
"stufe3": 0,
"stufe2": 0,
"stufe1": 0
},
"schemas": {
"total": 16,
"stufe4": 0,
"stufe3": 0,
"stufe2": 16,
"stufe1": 0
},
"components": {
"total": 151,
"stufe4": 0,
"stufe3": 0,
"stufe2": 151,
"stufe1": 0
},
"testplans": {
"total": 19,
"stufe4": 0,
"stufe3": 0,
"stufe2": 19,
"stufe1": 0
}
},
"schemasDetail": {
"action.schema.json": [
"audit",
"cors",
"hooks",
"meta",
"name",
"permissions"
],
"asset.schema.json": [
"name",
"path"
],
"collection-meta.schema.json": [
"agent",
"defaultSort",
"designGuide",
"exports",
"group",
"hide",
"i18n",
"imageUrl",
"label",
"muiIcon",
"openapi",
"pagebuilder",
"preview",
"query",
"sections",
"sidebar",
"singleton",
"subNavigation",
"viewHint"
],
"collection.schema.json": [
"audit",
"bulk",
"cors",
"defaultLanguage",
"fields",
"hiddenFields",
"hooks",
"imageFilter",
"indexes",
"meta",
"name",
"permissions",
"projections",
"queryLimits",
"readonlyFields",
"search",
"strictFields",
"upload",
"uploadPath"
],
"defs.schema.json": [],
"field-list.schema.json": [],
"field-meta.schema.json": [
"addElementLabel",
"choices",
"containerProps",
"defaultValue",
"dependsOn",
"downscale",
"drillDown",
"filter",
"foreign",
"helperText",
"hide",
"hideLabel",
"i18n",
"imageEditor",
"inputProps",
"label",
"openapi",
"pageSize",
"pagebuilder",
"position",
"preview",
"protected",
"schemaRef",
"section",
"widget"
],
"field.schema.json": [],
"hooks.schema.json": [
"audit",
"delete",
"get",
"post",
"put"
],
"image-filter.schema.json": [],
"job.schema.json": [
"cron",
"file",
"meta",
"timeout",
"type"
],
"openapi.schema.json": [
"delete",
"disabled",
"get",
"getOne",
"post",
"put"
],
"permissions.schema.json": [
"public",
"user"
],
"project.schema.json": [
"actions",
"admin",
"assets",
"audit",
"collections",
"cors",
"hook",
"jobs",
"legacy",
"meta",
"namespace",
"snapshotPath",
"snapshots",
"strictFields",
"upload"
],
"projections.schema.json": [],
"snapshot.schema.json": [
"collectionDedup",
"collections",
"description",
"enabled",
"includeMedia",
"mode",
"name",
"permissions",
"retention",
"schedule"
]
}
}
+167
View File
@@ -0,0 +1,167 @@
# Doku-Ausbau: Plan und Status
Lebendes Dokument. Der Orga-Agent (Agent Warpfuchs) aktualisiert Status, Sessions und Second-Opinion-Ergebnisse nach jedem Schritt. Stand: 2026-10-16.
## Regeln (kurz)
- Benennung: **tibi-server**, **tibi-admin** (Release Nova, Repo `tibi-admin-nova`). Projekte = eigenständige Websites/Shops/Intranet aus `tibi-svelte-starter`.
- Dev-Doku = Projektnutzung, keine Core-Entwicklung. Ton: Deutsch, Du-Form, kurze Sätze.
- Keine lange Prosa: Tabellen, Listen, Steps, Tabs, Code-Beispiele, Starlight-Komponenten.
- Code schlägt Doku: jede Aussage am Code verifiziert, Stempel `Verifiziert am <Commit> <Datum>`.
- `npm run build` in tibi-docs bleibt immer grün. Keine toten Links.
## Themenpakete
| Paket | Seiten | Agent | Status | Second Opinion | Abnahme |
|---|---|---|---|---|---|
| T-REF Referenz | schemas, hook-kontexte, token-köpfe, fehlercodes | general ses_ebb2308e0ffeybmgl7oG1Eyn0b | ✅ fertig | ✅ SO eingearbeitet (16 Schemas, 409/500-Legacy-Default, Login-Pfad) | Build + Links ✅ |
| T-PROJ-A Projekt Kern | sammlungen-anlegen, felder-widgets, abfragen-lesen, rechte-tokens | general ses_ebb2308d4ffev0H1z4mvNfsw5k | ✅ fertig | ✅ SO eingearbeitet (_count/_facet-Routen, required name+permissions, 25 Widgets) | Build + Links ✅ |
| T-PROJ-B Projekt Logik | hooks-schreiben, dateien-bilder, navigation-i18n, suche | general ses_ebb0d36b6ffeJ44pbErML0Z4X9 | ✅ fertig | ✅ SO eingearbeitet (SSR-Cache vs Dependencies, topK + YAML-rrf-Block) | Build + Links ✅ |
| T-PROJ-C Projekt Ship | ssr-website, jobs-actions, audit-backup, deploy | general ses_ebb0d36a7ffeY76nGYPhP0U5xR | ✅ fertig | ✅ SO eingearbeitet (cron-Pflicht korrigiert, Snapshot-Zitat + tags-Typo) | Build + Links ✅ |
| T-SERVER Server-Hand | konfiguration, betrieb, sicherheit, schnittstellen | general ses_ebb2308d3ffeCTZqqtzMszuDnH | ✅ fertig | ✅ SO eingearbeitet (MCP-Route fest, CORS-Merge, 429, kein Abo-Endpunkt) | Build + Links ✅ |
| T-ADMIN-A Admin I | ansichten-listen, eintrags-editor, medien, exporte | general ses_ebb0d36a5ffe0n1PbsS1E6V5HM | ✅ fertig | ✅ SO eingearbeitet (Custom-Export: db.loadAll/ctx.xlsx/contentType+blob, qm-Param) | Build + Links ✅ |
| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | general ses_ebad2bf8affeZ9uV0HzJf2k357 | ✅ fertig | ✅ SO eingearbeitet (Test-Pläne 40/42 verlinkt, Widget-Enum klargestellt, toter Anker gefixt) | Build + Links ✅ |
| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | general ses_ebad2bf77ffeQm3uhj279Qrc09 | ✅ fertig | ✅ SO eingearbeitet (/ statt Strg+K, „Dateien hinzufügen", Tabelle statt Zeilen, Duplikat-Aside) | Build + Links ✅ |
| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | general ses_ebad2bf75ffezS1KTRTQDO5GT5 | ✅ fertig | ✅ SO eingearbeitet (Snapshot-Reiter, „Exportieren", Benutzerverwaltung, echte Fehltexte) | Build + Links ✅ |
| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | – | ⏳ offen | ⏳ | Build + Links |
| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | – | ⏳ offen | ⏳ | Build + Links |
| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | – | ⏳ offen | ⏳ | Build + Links |
| T-SHOTS Screenshots | `src/assets/anwender/*` NUR aus Mock-Projekt `corporate` (nie `t1`!), Auftrag: `plans/t-shots-arbeitsauftrag.md` | general ses_ebac0c7feffed3DYtWznC2bqzJ | ✅ fertig (24 webp, <200 KB, Vision-Spotcheck ok) | ✅ Text-Abweichungen eingearbeitet (Live-Schalter, OK-Button, Reiter, Corporate-Blöcke) | Build + Links ✅ |
| T-PROJ-D Vollständigkeit | pagebuilder-dev, mcp-nutzen (36 Tools), llm-nutzen | general ses_ebac0c804ffe9vElWvaKTju4H9 | ✅ fertig | ✅ SO eingearbeitet (REST-only: sieben statt fünf) | Build + Links ✅ |
| T-FINISH Finish | index-Karten, uebersicht/konzept-Stempel, Voll-Linkcheck, AGENTS-Spiegelung | Orga (direkt) | ✅ fertig (v1) | — (Linkcheck: alle ok, 0 Hüllen, ADR-0003 angelegt) | Build 55 Seiten ✅ |
| T-PB Pagebuilder komplett | pagebuilder-dev + seiten-bauen: Overlay-Editor, Modi, Viewport, Overview/inline, drillDown | general ses_eb9584bafffekRtyPPBn7ORTeA | ✅ fertig | ✅ SO eingearbeitet (OK/blur-Pfad, <768-px-Hinweis) | Build + Links ✅ |
| T-TON Ton-Rewrite | alle 10 anwender-Seiten: professionell-per-du, UI-Namen aus de.json | general ses_eb95443a5ffe8IrJVmt1DcAReX | ✅ fertig | ✅ SO eingearbeitet („Bild hochladen", Sitzungs-Hinweis, Live-Qualifier, KI-Beschreibung, Browser-Zurück) | Build + Links ✅ |
| T-SHOTS-2 Pagebuilder-Shots | Overlay + Viewport (corporate), Einbau in seiten-bauen | general ses_eb9503e20ffetq8gZU0Ff5U06T | ✅ fertig (3 webp, Icon-Tooltip korrigiert) | ✅ Abweichung eingearbeitet | Build ✅ |
| T-COV Coverage-Inventar | Skript + Map: Routen, Kontexte, Tools, Schemas, Komponenten, Test-Pläne | general ses_eb9584ba6ffeUrQq7fowAHlPXO | ✅ fertig (282/282 gemappt, 0 OFFEN) | ⏳ Map v1 = Topic-Level bei ui/*, Verifikation folgt | `npm run coverage` grün |
Legende: ⏳ offen · 🔄 läuft (Session-ID) · 👀 Review/SO läuft · ✅ fertig.
## Vollständigkeit: Was ist wo abgedeckt (100-%-Ziel)
Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Der Orga-Agent prüft diese Tabelle vor T-FINISH Zeile für Zeile.
### tibi-server (`internal/*`)
| Baustein | Dokustelle | Status |
|---|---|---|
| config (Server-Config, Env, Admin-Tokens) | server/konfiguration | ✅ |
| controller + dbapi + dbcrud + mongocrud (Routen, CRUD, Filter) | server/schnittstellen, projekt/abfragen-lesen | ✅ |
| hook (24 Kontexte) + Lifecycle-Stufen (get/post/put/delete/audit) | reference/hook-kontexte, projekt/hooks-schreiben | ✅ |
| realtime (Hub, SSE) | server/schnittstellen | ✅ |
| llm (chat, providers, Budgets) | projekt/llm-nutzen | ⏳ Hülle |
| mcp (36 Tools, Transport, Scopes) | projekt/mcp-nutzen (+ server/schnittstellen Überblick) | ⏳ Hülle |
| image (Filter) + upload | projekt/dateien-bilder | ✅ |
| ratelimit (Login-Backoff, 429) | server/sicherheit | ✅ |
| suexec + Pfad-Schalter | server/sicherheit | ✅ |
| audit (TTL, Lesen) | projekt/audit-backup | ✅ |
| jobs (Cron) + actions | projekt/jobs-actions | ✅ |
| snapshots + backup/restore | projekt/audit-backup | ✅ |
| search (Textindex, RRF-Hybrid, Regenerate) | projekt/suche (+ projekt/sammlungen-anlegen für Index-YAML) | ✅ |
| embedding + vectorindex | projekt/suche (Kurzüberblick) | ✅ |
| rankfusion (RRF-Formel) | projekt/suche | ✅ |
| permissions (public/user/token, Orgs/Teams-Matrix) | projekt/rechte-tokens | ✅ |
| filecleanup (automatisch, keine Config-Fläche) | kein eigener Artikel — Einzeiler in server/betrieb prüfen (T-FINISH) | ⏳ |
| cache (Hook-lokal) | projekt/hooks-schreiben (Kontext-Tabelle) | ✅ |
| mock, models, testsuite, utils, version, mgocrud.old (intern, keine Projekt-Fläche) | keine Doku nötig | — |
| SSR-Hooks + ssr-Collection + clear_cache | projekt/ssr-website | ✅ |
| CORS-Kaskade | server/sicherheit | ✅ |
| OpenAPI-Generator | reference/openapi + server/schnittstellen | ✅ |
| Deploy/Compose-Profile | projekt/deploy + server/betrieb | ✅ |
### tibi-admin (`frontend/src/...`)
| Baustein | Dokustelle | Status |
|---|---|---|
| Ansichten (Tabelle/Karten/Medien/Navigation) + Suche/Sort/Filter/Blättern | admin/ansichten-listen + anwender/lesen-suchen-filtern | ✅ |
| Editor + 25 Widgets + Fremdschlüssel + i18n | admin/eintrags-editor + anwender/eintrag-bearbeiten | ✅ |
| Medien (Grid, Upload, Editor, Lightbox) | admin/medien + anwender/medien | ✅ |
| Exporte (Listen + Custom-Skripte) | admin/exporte + anwender/exportieren | ✅ |
| Actions (Ausführen, Fortschritt) | admin/aktionen | ✅ |
| Benutzer/Teams/Orgs/Rollen/Tokens/Impersonation | admin/benutzer-rechte + anwender/benutzer-teams | ✅ |
| KI (Chat, Zusammenfassen, STT/TTS, Budgets) | admin/ki-funktionen | ✅ |
| Pagebuilder (Widget, Registry, CSS-Transform, Vorschau, Screenshots) | projekt/pagebuilder-dev + admin/medien (Thumbnail?) + anwender/seiten-bauen | ⏳ Hülle (dev), Rest ✅ |
| Setup (Docker, Mock, URLs) + Customizing (Views, Meta, Skripte) | admin/setup, admin/customizing | ✅ |
| CommandPalette, Shortcuts, Breadcrumb, Audit/history-UI, Backup/Snapshot-UI | verstreut in admin/* — T-FINISH prüft Erwähnung je Seite | ⏳ |
### tibi-types + Starter
| Baustein | Dokustelle | Status |
|---|---|---|
| 16 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, ...) | reference/schemas + je Projekt-Seite | ✅ |
| Starter-Skill (Platzhalter, Registrierung, Pfad A/B) | einstieg/schnellstart + einstieg/neues-projekt | ✅ |
| Mock-Projekte (corporate/shop/blog/intranet/events/t1) | plans/t-shots-arbeitsauftrag.md (corporate für Shots) | ✅ |
## Wellen
- Welle 1: T-REF, T-PROJ-A, T-SERVER (Fundament, unabhängig voneinander).
- Welle 2: T-PROJ-B, T-PROJ-C, T-ADMIN-A.
- Welle 3: T-ADMIN-B, T-ANW-A, T-ANW-B.
- Danach: T-SHOTS, dann T-FINISH.
## Methode Vollständigkeit (v2 — messbar statt Gefühl)
Stufe 1 — Inventare (Skript `scripts/coverage-inventory.mjs`, Befehl `npm run coverage`): Routen aus `setup.go`, Hook-Kontexte aus `context_*.go`, MCP-Tools aus `tools_*.go`, Schema-Top-Level aus `tibi-types`, Admin-Komponenten (`*.svelte`), Test-Pläne (Liste). Jedes Item → genau eine Doku-Seite (`plans/coverage-map.json`). Unzugeordnete Items = Arbeitsliste mit Zahl.
Stufe 2 — Lücken-Pakete wie bisher (Generalist + Second Opinion), aber mit Inventar-Beleg.
Stufe 3 — Ton-Rewrite nach Stil-Guide (AGENTS.md §1), UI-Namen wörtlich aus `de.json`.
## Ausbau Tiefe (v3 — Tiefe statt Erwähnung, mit Second Opinion abgestimmt)
Befund: Das Inventar zählt Pakete statt Funktionen — „282/282" misst Tiefe grundsätzlich nicht. Neue Körnung: **Funktion**, neue Messlatte pro Item: `Erwähnung < Signatur < Signatur+Beispiel < Signatur+Beispiel+Fehler` (Ziel: Stufe 4 überall). Quelle fertig: `// args:`-Kommentare über jedem `Func*` in `context_*.go`.
Tiefenstufen-DoD: Referenz = Name + Signatur + Codeblock mit Symbol + Fehlerfall (skriptgeprüft). Anleitung = jeder H2 Schritt mit wörtlichem UI-Namen + prüfbarem Ergebnis. Anwender = jeder Schritt nennt UI-String wörtlich. Übersicht = jede Fähigkeit genau ein Link.
| Paket | Inhalt | Agent | Status | Second Opinion | Abnahme |
|---|---|---|---|---|---|
| P-DEPTH Messlatte | Map v2 Funktionskörnung + Depth-Mode im Skript (Gate vor allem Schreiben!) | general ses_eb9485d3cffeqGunIdpSLocnBq | ✅ fertig (66 Symbole, 0 auf Stufe 3/4 → ehrliche Null) | ✅ Orga-Entscheide (JS-signature zählt, context-Alias) eingebaut | `npm run coverage` mit Tiefenstufen ✅ |
| P-HOOKS-1 Daten | db, cache, request, response, fs (+ Referenz-Muster für alle) | general ses_eb9442455ffelLESMgDZZ40T4G | ✅ fertig (27 Symbole Stufe 4) | ✅ SO eingearbeitet (Zitat-Zeilen, configDir-Marker, Scanner per-###) | Build ✅ |
| P-HOOKS-2 Netze | http, smtp, channel, ratelimit | general ses_eb93e70f1fferm8NNuFeh6Ktn5 | ✅ fertig | ✅ SO-Spotcheck (smtp-Alias = Namensrest) | Stufe 4 ✅ |
| P-HOOKS-3 Sicherheit | jwt, user, bcrypt, crypto, cookie, exec, config | general ses_eb93e70e7ffedQM6Xqv9hH20oj | ✅ fertig | ✅ SO-Spotcheck (bcrypt-s, jwt-valid:false) | Stufe 4 ✅ |
| P-HOOKS-4 Medien | tpl, image, pdf | general ses_eb93e70e6ffepuNEqdv3N3uabP | ✅ fertig | ✅ SO (int64-Hinweis ergänzt) | Stufe 4 ✅ |
| P-HOOKS-5 Meta | base64, json, xml, charset, debug | general ses_eb93e70e5ffeuZXn6frVY3h2Do | ✅ fertig | ✅ SO-Spotcheck (dump/Kein-Fehlerfall ok) | Stufe 4 ✅ |
| P-MCP-D Tools-Tiefe | 36 Tools je Signatur+Beispiel+Fehler | general ses_eb93b206effe1eyg3y08aNDl7c | ✅ fertig (36/36 Stufe 4) | ✅ SO (9 REST-only, action_*-Kanon in mcp-nutzen, msg-vs-message präzisiert) | Build ✅ |
| P-LLM-D KI-Tiefe | Chat/Provider/Budget + ki-funktionen vertiefen | general ses_eb93435b4ffe2RV01zcGmhDqIb | ✅ fertig | ✅ SO (502-Config-Relativierung, Vision-Overlay, 4 fehlende Tools) | Build ✅ |
| P-UI-D Oberfläche | Shortcuts/CommandPalette/Breadcrumb/Audit-UI-Referenz | general ses_eb93435b3ffe7PMqEKHwW6lIby | ✅ fertig | ✅ SO (Undo/Redo, Ctrl+Shift+F-Bedingung) | Build ✅ |
| T-PEPP-A Komponenten-Projekt | projekt/*: Asides, Steps, Tabs, Cards, FileTree, del/ins, Code-Titel | general ses_eb9201da2ffe9RwCS1tpEdQoIu | ✅ fertig (alle Dateien ≤+17) | — (nur Darstellung) | Build ✅ |
| T-PEPP-B Komponenten-Rest | admin+reference+server+einstieg+index: gleiche Kur | general ses_eb9201d99ffe98zEJW1GP81efn | ✅ fertig (Code-Titel überall, Cards, del/ins) | — (nur Darstellung) | Build ✅ |
| T-KIANW KI-Anwender-Guide | NEU anwender/ki-nutzen.md + Mock-SSE-Screenshots (corporate) | general ses_eb9201d98ffeg0qr36c5jKrRKD | ✅ fertig (3 Shots, Datenverbleib ergänzt) | ✅ SO (Banner-Fußnote, Sprachausgabe-Fix) | Build ✅ |
| P-BLIND Blind-Read | Mini-Hook nur aus Doku bauen | general ses_eb93b2073ffemiWkRrQhctSfXR | ✅ DURCHGEFALLEN = gearbeitet (7 FAILs → alle am Code verifiziert + in hooks-schreiben/fehlercodes behoben) | — (Test-Ergebnis selbst) | 0 offene FAILs |
Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind-Read-Test pro Los (Generalist baut Mini-Hook nur aus der Seite), SO-Spotcheck 3 Zufalls-Funktionen gegen Code.
## Orga-Checkliste (Runde 3)
- [x] Plan-Datei angelegt (`plans/doku-ausbau.md`)
- [x] Welle 1 gestartet (T-REF, T-PROJ-A, T-SERVER) — 3 Agenten laufen im Hintergrund
- [x] Welle 1 Ergebnisse eingetroffen (je Paket: Dateien geschrieben?)
- [x] Welle 1 Build + Links geprüft
- [x] Second Opinion T-REF, T-PROJ-A, T-SERVER eingeholt und eingearbeitet
- [x] Welle 2 Ergebnisse + Build + Second Opinions (alle drei Pakete fertig)
- [x] Welle 3 Ergebnisse + Build + Second Opinions (alle drei Pakete fertig)
- [x] T-SHOTS: Screenshots erstellt und eingebunden (24 webp aus corporate, Text-Abweichungen korrigiert)
- [x] T-FINISH: Index, Stempel, Linkcheck, AGENTS-Spiegelung (55 Seiten, 0 Hüllen, ADR-0003)
- [x] Abschlussmeldung an User
- [x] Stil-Guide professionell-per-du in AGENTS.md (§1)
- [x] T-PB Ergebnis + Build + Second Opinion
- [x] T-COV Inventar + Map, Lückenzahl steht (282/282, 0 OFFEN — Map v1 Topic-Level bei ui/*)
- [x] T-TON gestartet (alle 10 Anwender-Seiten)
- [x] T-TON Ergebnis + Build + Second Opinion
- [x] T-SHOTS-2 gestartet (Overlay + Viewport, corporate)
- [x] T-SHOTS-2 Ergebnis eingebaut
- [x] Abschlussmeldung Runde 2 an User
## Orga-Checkliste Runde 3 (Tiefenausbau)
- [x] P-DEPTH gestartet (Messlatte, Gate)
- [x] P-DEPTH Ergebnis: Funktionskörnung + Depth-Mode, verifiziert (66 Symbole, ehrliche Null auf 3/4)
- [x] P-HOOKS-1 gestartet (Muster-Los Daten)
- [x] P-HOOKS-1 Ergebnis + Blind-Read + SO (27 Symbole Stufe 4, Scanner per-###, Zitat-Regel)
- [x] P-HOOKS-2 bis 5 parallel gestartet (nur Kapitel-Dateien, Shared-Edits beim Orga)
- [ ] Lose 2-5 eingetroffen: Sidebar + Index-Links + Map-Umtrag (Orga), Build, SO-Spotcheck
- [ ] Blind-Read-Test über alle 5 Kapitel (Mini-Hook nur aus Doku)
- [x] P-MCP-D + P-LLM-D + P-UI-D starten
- [x] Abschlussmeldung Runde 3 an User
- [ ] Abschlussmeldung Runde 3 an User
- [ ] Offen an tibi-server: Typo `reponse.header` im Server-Code (`context_response.go`, von Doku wörtlich zitiert) → Issue
- [ ] Offen an tibi-admin-nova: totes `u`-Kürzel (`toggleUsers`-Key fehlt in `de.json`, nur Akkord `g → u` funktioniert) → Issue
- [ ] Abschlussmeldung Runde 3 an User
+39
View File
@@ -0,0 +1,39 @@
# T-SHOTS Arbeitsauftrag: Screenshots für die Anwender-Doku
Verbindlich für den Agenten, der T-SHOTS ausführt. Stand: 2026-10-16.
## Eiserne Regeln
- **Mock-Projekt: `corporate` (Corporate Website).** NIEMALS `t1` (Test Core — Playwright-Minimalprojekt mit Quatsch-Daten) oder andere Test-Namespaces.
- Anmeldung im Mock-Admin: `admin` / `admin` (siehe `frontend/assets/mock/login.json`).
- Admin im Mock-Modus starten (siehe `tibi-admin-nova/README.md`, Docker-Stack mit Mock-Profil). Kein echter Server nötig.
- Bilder nach `tibi-docs/src/assets/anwender/`, max 200 KB pro Datei (komprimieren, z. B. `cwebp`/`pngquant`), deutsche Alt-Texte direkt im Markdown (`![Alt-Text](...)`).
- 1 Bild pro 3–4 Klicks, exakt an der Stelle des HTML-Kommentars `<!-- Screenshot (T-SHOTS): ... -->` in der jeweiligen Seite einfügen (Kommentar dabei entfernen).
- Danach `npm run build` in tibi-docs — muss grün bleiben.
## Warum corporate
`frontend/assets/mock/project.json`: `corporate` → „Corporate Website — Hauptwebsite der Firma mit Blog, Team-Seite und Kontaktformular". Sammlungen (`_config/corporate/collections/`): `pages` (mit Pagebuilder!), `blog`, `team`, `navigation`, `medialib`, `downloads`, `redirects`, `settings`. Eigene Block-Registry (`corporate-blocks/registry.js` + `blocks.css`) — echte Vorschaubilder statt Platzhalter.
## Shot-Liste (je Anwender-Seite)
| Seite | Motive (in dieser Reihenfolge aufnehmen) |
|---|---|
| anmelden | Login-Formular (leer) → Fehler nach falschem Passwort → eingeloggter Start (Corporate-Projekt sichtbar) |
| orientierung | Start mit Projekt-Übersicht → geöffnetes Corporate-Projekt mit Menü → Schnellsuche (`/`) mit Ergebnis |
| lesen-suchen-filtern | Corporate-Liste (Tabelle) → Suche mit Treffer → Filter-Popover offen → Karten-Ansicht |
| eintrag-bearbeiten | Neu-Formular (Corporate-Blog) → ausgefülltes Formular → Speicher-Bestätigung → Pflichtfeld-Fehler (Stern) |
| medien | Medien-Raster (Corporate-Bilder) → „Dateien hinzufügen"-Dialog → Upload-Fortschritt → Bildeditor |
| seiten-bauen | Pagebuilder mit Corporate-Blöcken → Block-Auswahl → Vorschau (RowPreview) → veröffentlichte Seite |
| benutzer-teams | „Mein Profil" mit Rolle → Benutzerverwaltung (falls Rolle es zeigt) → Team-Ansicht |
| exportieren | Export-Dialog mit Formatwahl → Spaltenauswahl → fertige Datei |
| sichern | Snapshot-Ansicht (Reiter Snapshots) → Details → Statistik |
| hilfe | Keine Pflicht-Screenshots — nur wo sinnvoll (z. B. echte Fehlermeldung „Keine Berechtigung für diese Aktion") |
## Ablauf
1. Mock-Admin starten, als `admin`/`admin` anmelden, Projekt **Corporate Website** wählen.
2. Motive der Reihe nach aufnehmen (Browser-Screenshots, Desktop-Breite 1440, gleiche Fenstergröße für alle).
3. Zuschneiden auf Inhalt (keine Browser-Chrome-Ränder außer wo nötig), komprimieren (<200 KB).
4. In die Seiten einsetzen (Kommentar ersetzen), Alt-Texte deutsch („Anmeldemaske von tibi-admin mit ...").
5. `npm run build` prüfen. Abnahme: Testleser erkennt jeden Schritt am Bild wieder.