# 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=]`) 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 | ## Links - 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/`.