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:
frontend_nyla/src/pages/FeatureView.tsx: kein direktes'positions' / 'documents'-Mapping mehr (VIEW_COMPONENTS.trustee).frontend_nyla/src/App.tsx: keineRoute path="positions"/path="documents"mehr.gateway/modules/features/trustee/mainTrustee.py:ui.feature.trustee.positionsundui.feature.trustee.documentsentfernt; einziger neuer UI-Eintrag istui.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 neuenTrusteeDataTablesViewproduktiv -- darf nicht versehentlich entfernt werden. - Falls ein simpler
TrusteeDataTab(generischer Wrapper) die Spezialfeatures nicht abdeckt, bleiben die beiden Komponenten erhalten und werden nur in derindex.tsund 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.viewsinfrontend_nyla/src/types/mandate.tsist 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.tsxwerden entweder (a) im OrdnerdataTables/als Tab-Body umbenannt (TrusteePositionsTab.tsx,TrusteeDocumentsTab.tsx) oder (b) bleiben dort, aber bekommen einen Header-Kommentar "Mounted only as a tab insideTrusteeDataTablesView". - Ziel:
index.tsexportiert 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}/positionsoder/documentsverlinkt. - Ziel:
mainTrustee.py-- letzter Sweep: keine Restrolle/Permission referenziertui.feature.trustee.positions/.documents. - Ziel:
pageRegistry.tsxund ggf.MandateNavigation-Defaults /quickActions(Backend) -- alle Verweise raus. - Explizit NICHT: Loeschen der
TrusteePositionsView/TrusteeDocumentsViewLogik. 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, dassVIEW_COMPONENTS.trusteekeine'positions'/'documents'-Eintraege hat.frontend_nyla/src/App.tsx: Suche nach Restrouten mitpositions/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 aufpositions/documentszeigen.
- Gateway:
gateway/modules/features/trustee/mainTrustee.py: SweepUI_OBJECTS,TEMPLATE_ROLES,QUICK_ACTIONS-- keineui.feature.trustee.positions/.documentsmehr.gateway/modules/features/trustee/routeFeatureTrustee.py: kein Code-Change geplant (REST-Endpunkte fuer Position/Document bleiben).
- Wiki:
wiki/b-reference/frontend-nyla/architecture.mdundgateway/architecture.md: pruefen, ob in dentrustee-Mentions nochpositions/documentsals 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.tsxHeader-KommentarMounted only as a tab inside TrusteeDataTablesViewergaenzt (inkl. Hinweis, dass kein Re-Export mehr ueberindex.tsexistiert).TrusteeDocumentsView.tsxanalog ergaenzt.frontend_nyla/src/pages/views/trustee/index.ts:TrusteePositionsView+TrusteeDocumentsViewaus dem Re-Export entfernt; Header-Kommentar erklaert die Aenderung. Direkte Imports (./TrusteePositionsView) durchTrusteeDataTablesViewfunktionieren 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 inmainTrustee.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 indata-tablesaufgerufen).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 derdata-tables-Tab-Body-Komponente.- Navigation-Defaults:
FEATURE_REGISTRY.trustee.viewsinfrontend_nyla/src/types/mandate.tsenthaelt nur nochdashboard,data-tables,position-documents,import-process,instance-roles,settings-- keinpositions/documentsmehr;App.tsxhat ebenfalls keine entsprechenden Routen.
Verifikation
- Manueller Smoke-Test (
Daten-Tabellen-> TabPositionen): Edit + Beleg-Download viaTrusteePositionsView-Tab-Body funktional unveraendert. - Manueller Smoke-Test (
Daten-Tabellen-> TabDokumente): Edit + Download viaTrusteeDocumentsView-Tab-Body funktional unveraendert. npm run buildim Frontend: keine neuen TypeScript-Fehler durch entfernteindex.ts-Exporte. Die zwei verbleibenden Build-Errors (PeriodPickerLogic.tsunused param,RedmineStatsView.tsx'allTime'-Period-Mismatch) sind pre-existing, gehoeren nicht in diesen Plan.- Gateway-Tests
gateway/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 | gateway/, frontend_nyla/ | done (keine Live-Treffer) |
| T3 | 3 | grep + manual | manuell | mainTrustee.py, mail-templates | done (nur API-URLs verbleiben) |
| T4 | 4 | build | ja | frontend_nyla npm run build |
done (keine neuen Fehler) |
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/4-done/(Cleanup war eine reine Aufraeum-Iteration ohne Backend-Migration; keine separate Build-/Validate-Phase noetig). - Code-Aenderungen:
frontend_nyla/src/pages/views/trustee/TrusteePositionsView.tsx-- Header-Kommentar (Mounted only as a tab insideTrusteeDataTablesView).frontend_nyla/src/pages/views/trustee/TrusteeDocumentsView.tsx-- analog.frontend_nyla/src/pages/views/trustee/index.ts-- die beiden Komponenten aus dem Re-Export entfernt; Header-Kommentar erklaert die Aenderung. Niemand importiert sie ueberindex.ts.
- Audit ohne Code-Aenderung:
- Backend (
mainTrustee.py): keine UI-Object-Keysui.feature.trustee.positions/.documentsmehr;QUICK_ACTIONSzielen auf REST-API. - Frontend (
App.tsx,FeatureView.tsx,pageRegistry.tsx,mandate.ts): keine Top-Level-Routen / Default-Views fuerpositions/documentsmehr. - Verbleibende
/trustee/.../positions|documents-Treffer sind ausschliesslich/api/-Endpunkte fuer die Datentabellen -- weiterhin korrekt.
- Backend (