wiki/c-work/1-plan/2026-04-trustee-cleanup-positions-documents.md
ValueOn AG 19f28e85d9 upd
2026-04-23 13:32:45 +02:00

8.3 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:

  • frontend_nyla/src/pages/FeatureView.tsx: kein direktes 'positions' / 'documents'-Mapping mehr (VIEW_COMPONENTS.trustee).
  • frontend_nyla/src/App.tsx: keine Route path="positions" / path="documents" mehr.
  • gateway/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 frontend_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:
    • frontend_nyla/src/pages/views/trustee/TrusteePositionsView.tsx, TrusteeDocumentsView.tsx: Header-Kommentar / Renaming.
    • frontend_nyla/src/pages/views/trustee/index.ts: Exporte pruefen (nur was extern noch noetig ist, bleibt).
    • frontend_nyla/src/pages/FeatureView.tsx: Sicherstellen, dass VIEW_COMPONENTS.trustee keine 'positions'/'documents'-Eintraege hat.
    • frontend_nyla/src/App.tsx: Suche nach Restrouten mit positions / documents.
    • frontend_nyla/src/types/mandate.ts: FEATURE_REGISTRY.trustee.views (legacy) -- Eintraege sauber halten, ggf. ganzen Block deprecaten.
    • frontend_nyla/src/components/Navigation/*: Pruefen, ob noch Icons / Default-Routes auf positions / documents zeigen.
  • Gateway:
    • gateway/modules/features/trustee/mainTrustee.py: Sweep UI_OBJECTS, TEMPLATE_ROLES, QUICK_ACTIONS -- keine ui.feature.trustee.positions / .documents mehr.
    • gateway/modules/features/trustee/routeFeatureTrustee.py: kein Code-Change geplant (REST-Endpunkte fuer Position/Document bleiben).
  • Wiki:
    • wiki/b-reference/frontend-nyla/architecture.md und gateway/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 ergaenzen.
  • TrusteeDocumentsView.tsx analog.
  • frontend_nyla/src/pages/views/trustee/index.ts: Exporte pruefen und ueberfluessige entfernen.
  • grep -r "ui.feature.trustee.positions\|ui.feature.trustee.documents" durch gateway + frontend laufen lassen -- alle Treffer adressieren.
  • grep -r "/trustee/.*positions\|/trustee/.*documents" (Mail-Templates, Workflows, QuickActions) -- ggf. auf data-tables?tab=positions umbiegen.
  • mainTrustee.py.QUICK_ACTIONS: pruefen, ob "Neuer Beleg" / "Neue Position"-Quick-Action auf data-tables?tab=positions (oder tab=documents) zeigen sollte statt ggf. veraltete Routen.
  • Navigation-Defaults pruefen: nach Login / nach Feature-Aktivierung sollte die Standard-Trustee-Page weiterhin dashboard sein, nicht positions/documents.

Verifikation

  • Manueller Smoke-Test: Trustee-Instanz oeffnen -> Daten-Tabellen -> Tab Positionen -> Edit + Beleg-Download funktionieren wie vorher.
  • Manueller Smoke-Test: Trustee-Instanz oeffnen -> Daten-Tabellen -> Tab Dokumente -> Edit + Download funktionieren wie vorher.
  • npm run build im Frontend -- kein TypeScript-Fehler durch verschobene/entfernte Exporte.
  • Gateway-Tests gateway/tests/test_routeFeatureTrustee_* laufen gruen.

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 -- pending
T2 2 grep manuell gateway/, frontend_nyla/ pending
T3 3 grep + manual manuell mainTrustee.py, mail-templates pending
T4 4 build ja frontend_nyla npm run build pending
  • Vorgaenger-Plan: wiki/c-work/4-done/2026-04-trustee-data-tables-page.md
  • Konsolidierte Seite: frontend_nyla/src/pages/views/trustee/TrusteeDataTablesView.tsx
  • Eingebettete Tab-Bodies: frontend_nyla/src/pages/views/trustee/TrusteePositionsView.tsx, TrusteeDocumentsView.tsx

Abschluss

  • Dieses Dokument -> c-work/2-build/ (bei Umsetzungsbeginn) -> c-work/3-validate/ -> c-work/4-done/.