{ "doc": "docs/anleitung-entwicklung.md", "range": "1-540", "claims_checked": 120, "ok_count": 106, "wrong": [ { "line": 245, "claim": "Innerhalb von (portal) liegen ... vier fest verdrahtete Modulverzeichnisse (cert-manager, dkv-fleet, domaincheck, tender-radar) mit eigenen layout.tsx", "actual": "Es gibt zehn Modulverzeichnisse mit eigenem layout.tsx (cert-manager, dkv-fleet, domaincheck, domains, handelsware-datev, kantine-datev, nextcloud-files, nextcloud-status, proxmox, tender-radar), dazu 'custom' ohne Layout. Auch MODULE_REGISTRY hat zehn Eintraege.", "evidence": "apps/web/src/app/(portal)/modules/*/layout.tsx (10 Treffer); apps/web/src/lib/module-loader.ts:31-90", "fix": "Von 'vier' auf 'zehn fest verdrahtete Modulverzeichnisse' aendern und alle zehn nennen (oder allgemein formulieren). Gleiches gilt fuer Zeile 403-405 und 416-419 ('jedem der vier')." }, { "line": 403, "claim": "Vier fest verdrahtete Modulverzeichnisse: cert-manager, dkv-fleet, domaincheck, tender-radar", "actual": "Zehn Verzeichnisse; zusaetzlich domains, handelsware-datev, kantine-datev, nextcloud-files, nextcloud-status, proxmox (und 'custom' fuer eigene Module ohne Gate-Layout).", "evidence": "apps/web/src/app/(portal)/modules/", "fix": "Liste auf alle zehn erweitern bzw. 'vier' streichen. Der Code-Kommentar in [category]/[moduleSlug]/page.tsx nennt selbst noch 'four' (veraltet)." }, { "line": 248, "claim": "Backend-Domaenenmodule: auth, user, tenant, groups, module-registry, domaincheck, dkv, cert-manager, tenders, calendar, dashboard, favorites, settings, ldap, mail, crypto, health, prisma", "actual": "Die Liste ist unvollstaendig; es fehlen accounting, bug-reports, common, custom-modules, desktop, domains, handelsware-datev, inbox, kantine-datev, module-categories, nextcloud-files, nextcloud-status, proxmox, reminders.", "evidence": "ls apps/api/src", "fix": "Liste um die fehlenden Verzeichnisse ergaenzen (common ist ein Hilfsordner, kein Fachmodul)." }, { "line": 373, "claim": "ModuleGrant traegt bewusst kein Rechtestufen-Feld, nur An/Aus (D-04)", "actual": "ModuleGrant hat seit 261002-icv das Feld level (enum ModuleGrantLevel USE|MANAGE, Default USE). Nur 'Gruppe XOR Benutzer' (D-04) stimmt weiterhin. ModuleAccessService arbeitet mit getModuleAccessLevels, getAccessibleModuleIds ist nur die Schluesselmenge davon.", "evidence": "apps/api/prisma/schema.prisma:160-164, 211-214; apps/api/src/module-registry/module-access.service.ts:118-131", "fix": "Satz ersetzen: 'ModuleGrant traegt eine Freigabestufe (USE = Benutzen, MANAGE = Benutzen und Modul-Einstellungen aendern); Freigaben erteilen bleibt Administratoren vorbehalten. Gruppe oder Benutzer, nie beides.' Zeile 375-382: getAccessibleModuleIds als Schluesselmenge von getModuleAccessLevels beschreiben." }, { "line": 296, "claim": "Ein Modul erscheint im Marktplatz (GET /modules, GET /modules/catalog) ... ; seedModule laeuft aus Seed-Dateien", "actual": "Teilweise ok: GET /modules und /catalog existieren. Aber der Code-Kommentar zu seedModule spricht von 'vier Seed-Dateien'; es sind zehn. (Kommentar, nicht Doku; Doku Z. 279 'Jedes Modul seedet sich' ist korrekt.)", "evidence": "apps/api/src/module-registry/module-registry.service.ts:190-196", "fix": "Kein Doku-Fehler; optional Code-Kommentar korrigieren." }, { "line": 530, "claim": "proxmox-widget-model.ts / components/proxmox/ ... 'Einstellungsformular ... components/settings/proxmox-widget-config-form.tsx'", "actual": "Pfade stimmen. Kein Fehler (siehe ok_count).", "evidence": "apps/web/src/components/settings/proxmox-widget-config-form.tsx", "fix": "keine" } ], "outdated": [ { "line": 33, "claim": "apps/desktop ... Tauri-Desktop-Client, fertiges Produkt; CLAUDE.md-Tabelle sagt 'scaffolding only as of docs/anleitung-entwicklung.md'", "actual": "Doku stimmt zum Code (lib.rs mit check_server/save_server_url, setup.html vorhanden). Veraltet ist die Aussage in CLAUDE.md (Desktop Wrapper: 'scaffolding only'), die auf diese Anleitung verweist.", "evidence": "apps/desktop/src-tauri/src/lib.rs:858,888; CLAUDE.md Abschnitt Desktop Wrapper", "fix": "CLAUDE.md anpassen; Anleitung unveraendert lassen." }, { "line": 227, "claim": "Stempel aus Version und letztem Commit an apps/desktop/, desktop-version.sh, desktop-collect.sh, desktop-stamp.sh und ci.yml", "actual": "DESKTOP_PATHS enthaelt zusaetzlich .gitea/scripts/appimage-strip-wayland.sh.", "evidence": ".gitea/scripts/desktop-stamp.sh:56", "fix": "'appimage-strip-wayland.sh' in die Aufzaehlung aufnehmen." }, { "line": 418, "claim": "Der Fix (Commit 74a30fb/5504931) gibt jedem der vier Modulverzeichnisse ein eigenes layout.tsx", "actual": "Commits existieren; heute tragen zehn Verzeichnisse das Layout (siehe wrong Z. 245).", "evidence": "git cat-file -t 74a30fb / 5504931 = commit; modules/*/layout.tsx", "fix": "'vier' durch 'alle fest verdrahteten' ersetzen; Test module-layouts.test.tsx als Wächter erwähnen." }, { "line": 449, "claim": "Domaincheck ist das kleinste vorhandene Modul", "actual": "Nicht eindeutig pruefbar; es gibt jetzt weitere kleine Module (kantine-datev ohne components, nextcloud-status). Die aufgefuehrten Domaincheck-Dateien existieren alle.", "evidence": "apps/web/src/app/(portal)/modules/kantine-datev/", "fix": "Formulierung zu 'ein kleines Modul' abschwaechen." }, { "line": 493, "claim": "Kachel: drei Stellen; Bsp. nur Proxmox ('Erstes echtes Beispiel')", "actual": "Zweite Modul-Kachel nextcloud-status existiert ebenfalls (WIDGET_MODULE_SLUGS), ebenso weitere Typen picture-frame, xframe, reminder.", "evidence": "packages/shared/src/index.ts:102-137; apps/web/src/app/(portal)/page.tsx:38-49", "fix": "nextcloud-status als zweites Modul-Kachel-Beispiel erwaehnen." } ], "missing": [ "Modulsystem-Kapitel nennt nur Domaincheck, DKV, Cert-Manager, Tender-Radar und Proxmox; undokumentiert sind die Module domains, handelsware-datev, kantine-datev, nextcloud-files, nextcloud-status (alle mit Seed, Changelog, MODULE_REGISTRY-Eintrag und Layout) sowie accounting (gemeinsam genutzt von Handelsware/Kantine).", "Eigene Module (custom-modules, Frontend modules/custom/[id], admin/custom-modules, settings/custom-modules, components/modules/custom-module-*) fehlen im Modulsystem-Kapitel; Zeile 310-311 erwaehnt sie nur beilaeufig.", "Frontend-Routen: (portal)/changelog fehlt in der Routenliste Z. 239 (admin, marketplace, modules, settings, change-password); Admin-Unterbereiche (custom-modules, groups, ldap, modules, smtp, tenants, users, welcome-mail) nicht beschrieben.", "Backend-Bereiche ohne Erwaehnung: bug-reports, inbox, reminders, module-categories (Kategorien-Verwaltung, messages/module-categories.spec.ts), desktop-Controller (GET /desktop/latest, /update, /download/:platform) als API-Seite.", "Dashboard-Kachel-Typen: picture-frame, xframe, reminder, nextcloud-status werden nicht genannt; WIDGET_TYPES hat zwoelf Eintraege.", "Wächter-Tests im Frontend: modules/module-layouts.test.tsx (prueft Gate-Layouts) und messages/umlaut-guard.spec.ts / tenderRadar-parity.spec.ts nicht erwaehnt.", "Root-Skripte: apps/api hat zusaetzlich test:watch und start:dev (nur Compose-Befehl 'nest start --watch' ist beschrieben, ueber pnpm --filter @tessera/api start:dev); docker-compose.prod.yml und docker-compose.ci.yml existieren, werden im Kapitel nicht erwaehnt." ] }