wiki/c-work/4-done/2026-04-trustee-cleanup-positions-documents.md
2026-06-02 09:42:12 +02:00

10 KiB

Trustee: Aufraeumen Positionen / Dokumente Top-Level-Seiten

Beschreibung und Kontext

Mit 2026-04-trustee-data-tables-page.md (status: done) sind alle 13 Trustee-Tabellen in der konsolidierten Seite Daten-Tabellen (/mandates/{m}/trustee/{i}/data-tables[?tab=<key>]) verfuegbar. Die alten Top-Level-Seiten Positionen und Dokumente sind dort als Tabs eingebettet (TrusteePositionsView, TrusteeDocumentsView werden im neuen TrusteeDataTablesView direkt importiert und unter Tabs gemountet).

Top-Level-Routen / Mappings fuer diese beiden Seiten wurden in der Vorgaenger-Iteration entfernt:

  • ui-nyla/src/pages/FeatureView.tsx: kein direktes 'positions' / 'documents'-Mapping mehr (VIEW_COMPONENTS.trustee).
  • ui-nyla/src/App.tsx: keine Route path="positions" / path="documents" mehr.
  • platform-core/modules/features/trustee/mainTrustee.py: ui.feature.trustee.positions und ui.feature.trustee.documents entfernt; einziger neuer UI-Eintrag ist ui.feature.trustee.data-tables.

Was noch lebt: die beiden Standalone-Komponenten als Datei + Index-Export. Sie werden ausschliesslich vom TrusteeDataTablesView als Tab-Body referenziert.

Diese Iteration raeumt die noch existierenden, aber nicht mehr als eigenstaendige Seiten verwendeten Reste auf -- ohne Funktionalitaet zu verlieren.

Fokus und kritische Details

  • Die Spezialdarstellungen (Beleg-Download in Positionen-Tabelle, Dokument-Download in Dokumente-Tabelle, Inline-Sync-Status) leben in TrusteePositionsView / TrusteeDocumentsView. Sie sind weiterhin als Tab-Body im neuen TrusteeDataTablesView produktiv -- darf nicht versehentlich entfernt werden.
  • Falls ein simpler TrusteeDataTab (generischer Wrapper) die Spezialfeatures nicht abdeckt, bleiben die beiden Komponenten erhalten und werden nur in der index.ts und im Code-Layout sauber als "Tab-Body, nicht Top-Level-View" gekennzeichnet.
  • position-documents (Zuordnungen) bleibt als eigene Top-Level-View unangetastet (anderer Use-Case: Position-Document-Zuordnung).
  • FEATURE_REGISTRY.trustee.views in ui-nyla/src/types/mandate.ts ist laut Header (TODO: Remove after all references are migrated to use backend navigation.) ohnehin geplant zu entsorgen -- in dieser Iteration nur sicherstellen, dass keine 'positions'/'documents'-Eintraege mehr drin sind.

Ziel und Nicht-Ziele

  • Ziel: Code-Klarheit -- Standalone-Files TrusteePositionsView.tsx / TrusteeDocumentsView.tsx werden entweder (a) im Ordner dataTables/ als Tab-Body umbenannt (TrusteePositionsTab.tsx, TrusteeDocumentsTab.tsx) oder (b) bleiben dort, aber bekommen einen Header-Kommentar "Mounted only as a tab inside TrusteeDataTablesView".
  • Ziel: index.ts exportiert die Komponenten nur noch wenn sie tatsaechlich extern referenziert werden; sonst entfernen.
  • Ziel: Stichprobe pruefen, dass keine externe Quick-Action / Notification / Mail-Template / Workflow-Definition mehr auf /trustee/{instanceId}/positions oder /documents verlinkt.
  • Ziel: mainTrustee.py -- letzter Sweep: keine Restrolle/Permission referenziert ui.feature.trustee.positions / .documents.
  • Ziel: pageRegistry.tsx und ggf. MandateNavigation-Defaults / quickActions (Backend) -- alle Verweise raus.
  • Explizit NICHT: Loeschen der TrusteePositionsView / TrusteeDocumentsView Logik. Sie bleiben funktional erhalten -- nur die "Top-Level-Page"-Doppelung wird beseitigt.
  • Explizit NICHT: Aenderungen am Backend-Datenmodell oder den REST-Endpoints von Position/Document.

Betroffene Module

  • Frontend:
    • ui-nyla/src/pages/views/trustee/TrusteePositionsView.tsx, TrusteeDocumentsView.tsx: Header-Kommentar / Renaming.
    • ui-nyla/src/pages/views/trustee/index.ts: Exporte pruefen (nur was extern noch noetig ist, bleibt).
    • ui-nyla/src/pages/FeatureView.tsx: Sicherstellen, dass VIEW_COMPONENTS.trustee keine 'positions'/'documents'-Eintraege hat.
    • ui-nyla/src/App.tsx: Suche nach Restrouten mit positions / documents.
    • ui-nyla/src/types/mandate.ts: FEATURE_REGISTRY.trustee.views (legacy) -- Eintraege sauber halten, ggf. ganzen Block deprecaten.
    • ui-nyla/src/components/Navigation/*: Pruefen, ob noch Icons / Default-Routes auf positions / documents zeigen.
  • Gateway:
    • platform-core/modules/features/trustee/mainTrustee.py: Sweep UI_OBJECTS, TEMPLATE_ROLES, QUICK_ACTIONS -- keine ui.feature.trustee.positions / .documents mehr.
    • platform-core/modules/features/trustee/routeFeatureTrustee.py: kein Code-Change geplant (REST-Endpunkte fuer Position/Document bleiben).
  • Wiki:
    • wiki/b-reference/ui-nyla/architecture.md und platform-core/architecture.md: pruefen, ob in den trustee-Mentions noch positions/documents als Top-Level-Pages stehen.
  • DB-Migration: nein.

Entscheidungen

Datum Entscheidung Begruendung
2026-04-21 TrusteePositionsView / TrusteeDocumentsView werden NICHT geloescht Sie liefern weiterhin die Spezialdarstellung im neuen TrusteeDataTablesView-Tab.
2026-04-21 Keine sofortige Umbennenung in *Tab.tsx Reduziert Diff-Risiko fuer eine reine Aufraeum-Iteration; Header-Kommentar reicht.

Umsetzungs-Checkliste

Sweep / Cleanup

  • TrusteePositionsView.tsx Header-Kommentar Mounted only as a tab inside TrusteeDataTablesView ergaenzt (inkl. Hinweis, dass kein Re-Export mehr ueber index.ts existiert).
  • TrusteeDocumentsView.tsx analog ergaenzt.
  • ui-nyla/src/pages/views/trustee/index.ts: TrusteePositionsView + TrusteeDocumentsView aus dem Re-Export entfernt; Header-Kommentar erklaert die Aenderung. Direkte Imports (./TrusteePositionsView) durch TrusteeDataTablesView funktionieren weiter -- Build verifiziert.
  • grep "ui.feature.trustee.positions\|ui.feature.trustee.documents" durch Gateway + Frontend: keine Live-Code-Treffer mehr (nur Plan-/Doku-/Changelog-Eintraege + 1 erklaerender Kommentar in mainTrustee.py:28).
  • grep "/trustee/.*positions\|/trustee/.*documents" (Mail-Templates, Workflows, QuickActions): die verbleibenden Treffer sind ausschliesslich REST-API-Endpunkte (/api/trustee/{instanceId}/positions, /api/trustee/{instanceId}/documents -- POST/PUT/DELETE), keine UI-Routen. Diese sind weiterhin gueltig (sie werden von den Tab-Bodies in data-tables aufgerufen).
  • mainTrustee.py.QUICK_ACTIONS: alle URLs sind API-Endpunkte (POST/PUT/DELETE) -- keine UI-Navigation, keine Aenderung noetig. „Neuer Beleg" / „Neue Position" oeffnen das Modal in der data-tables-Tab-Body-Komponente.
  • Navigation-Defaults: FEATURE_REGISTRY.trustee.views in ui-nyla/src/types/mandate.ts enthaelt nur noch dashboard, data-tables, position-documents, import-process, instance-roles, settings -- kein positions/documents mehr; App.tsx hat ebenfalls keine entsprechenden Routen.

Verifikation

  • Manueller Smoke-Test (Daten-Tabellen -> Tab Positionen): Edit + Beleg-Download via TrusteePositionsView-Tab-Body funktional unveraendert.
  • Manueller Smoke-Test (Daten-Tabellen -> Tab Dokumente): Edit + Download via TrusteeDocumentsView-Tab-Body funktional unveraendert.
  • npm run build im Frontend: keine neuen TypeScript-Fehler durch entfernte index.ts-Exporte. Die zwei verbleibenden Build-Errors (PeriodPickerLogic.ts unused param, RedmineStatsView.tsx 'allTime'-Period-Mismatch) sind pre-existing, gehoeren nicht in diesen Plan.
  • Gateway-Tests platform-core/tests/test_routeFeatureTrustee_* -- nicht beruehrt (kein Backend-Change in dieser Iteration).

Akzeptanzkriterien

# Kriterium (Given-When-Then) Prio
1 Given die konsolidierte Seite Daten-Tabellen, When der User Tab Positionen oeffnet, Then funktioniert Edit / Delete / Beleg-Download / Sync wie in der alten Top-Level-Seite. must
2 Given Code-Suche ui.feature.trustee.positions und ui.feature.trustee.documents, When grep durchlaeuft, Then liefert sie keinen Treffer (ausser Migrations-/Doku-Notizen). must
3 Given eine Quick-Action / ein Mail-Template, When es auf eine Trustee-Tabelle verlinkt, Then zeigt der Link auf /data-tables?tab=positions (oder tab=documents), nicht auf eine Top-Level-Route. should
4 Given das Frontend-Build, When npm run build laeuft, Then schlaegt nichts wegen entfernter Exporte fehl. must

Testplan

ID AC Art Automatisiert Repo-Pfad Status
T1 1 manual UI nein -- done (smoke ok)
T2 2 grep manuell platform-core/, ui-nyla/ done (keine Live-Treffer)
T3 3 grep + manual manuell mainTrustee.py, mail-templates done (nur API-URLs verbleiben)
T4 4 build ja ui-nyla npm run build done (keine neuen Fehler)
  • Vorgaenger-Plan: wiki/c-work/4-done/2026-04-trustee-data-tables-page.md
  • Konsolidierte Seite: ui-nyla/src/pages/views/trustee/TrusteeDataTablesView.tsx
  • Eingebettete Tab-Bodies: ui-nyla/src/pages/views/trustee/TrusteePositionsView.tsx, TrusteeDocumentsView.tsx

Abschluss

  • Dieses Dokument -> c-work/4-done/ (Cleanup war eine reine Aufraeum-Iteration ohne Backend-Migration; keine separate Build-/Validate-Phase noetig).
  • Code-Aenderungen:
    • ui-nyla/src/pages/views/trustee/TrusteePositionsView.tsx -- Header-Kommentar (Mounted only as a tab inside TrusteeDataTablesView).
    • ui-nyla/src/pages/views/trustee/TrusteeDocumentsView.tsx -- analog.
    • ui-nyla/src/pages/views/trustee/index.ts -- die beiden Komponenten aus dem Re-Export entfernt; Header-Kommentar erklaert die Aenderung. Niemand importiert sie ueber index.ts.
  • Audit ohne Code-Aenderung:
    • Backend (mainTrustee.py): keine UI-Object-Keys ui.feature.trustee.positions/.documents mehr; QUICK_ACTIONS zielen auf REST-API.
    • Frontend (App.tsx, FeatureView.tsx, pageRegistry.tsx, mandate.ts): keine Top-Level-Routen / Default-Views fuer positions/documents mehr.
    • Verbleibende /trustee/.../positions|documents-Treffer sind ausschliesslich /api/-Endpunkte fuer die Datentabellen -- weiterhin korrekt.