refactory workflowAutomation completed as system component reolacing automation2 and graphEditor
This commit is contained in:
parent
c654001f01
commit
5d95a568ac
2 changed files with 102 additions and 29 deletions
|
|
@ -1,5 +1,5 @@
|
|||
<!-- status: canonical -->
|
||||
<!-- lastReviewed: 2026-06-07 -->
|
||||
<!-- lastReviewed: 2026-06-08 -->
|
||||
|
||||
# WorkflowAutomation (System-Komponente)
|
||||
|
||||
|
|
@ -13,20 +13,26 @@
|
|||
|
||||
- **System-Lifespan Boot:** Scheduler- und Email-Poller-Start in `app.py` (nicht mehr Feature-`onStart`).
|
||||
- **Mandatsweite API:** `/api/workflow-automation/{workflows,versions,runs,tasks,steps}` — kein `{instanceId}` als RBAC-Anker.
|
||||
- **RBAC-Modell:** Mandats-Mitgliedschaft (read), Mandats-Admin (write/execute/delete), `isPlatformAdmin`-Bypass. Keine Feature-Instanz-Rollen; `instantiable=False`.
|
||||
- **RBAC-Modell:** Mandats-Mitgliedschaft (read), Mandats-Admin (write/execute/delete), `isPlatformAdmin`-Bypass. Keine Feature-Instanz-Rollen; `instantiable=False`. `TABLE_NAMESPACE` = `system.workflowAutomation`.
|
||||
- **DB-Scoping:** `AutoWorkflow.mandateId` + `runAsPrincipal` (Owner). `targetFeatureInstanceId` + per-Node `FeatureInstanceRef` bleiben als Daten-Scope.
|
||||
- **RBAC-Boot-Migration:** `_migrateRbacNamespace()` in `onBootstrap()` migriert bei jedem Start idempotent AccessRule-Einträge von `feature.graphicalEditor` auf `system.workflowAutomation`.
|
||||
|
||||
## Code-Pfade
|
||||
|
||||
| Schicht | Pfad |
|
||||
|---------|------|
|
||||
| Komponente (Entry) | `platform-core/modules/workflowAutomation/mainWorkflowAutomation.py` |
|
||||
| Editor | `platform-core/modules/workflowAutomation/editor/` |
|
||||
| Engine | `platform-core/modules/workflowAutomation/engine/` |
|
||||
| Scheduler | `platform-core/modules/workflowAutomation/scheduler/` |
|
||||
| Routen (mandatsweit) | `platform-core/modules/routes/routeWorkflowAutomation.py` |
|
||||
| Interface (DB-Ops) | `platform-core/modules/interfaces/interfaceWorkflowAutomation.py` |
|
||||
| Shared Helpers | `platform-core/modules/shared/workflowAutomationHelpers.py` |
|
||||
| Models (kanonisch, L1) | `platform-core/modules/datamodels/datamodelWorkflowAutomation.py` |
|
||||
| Navigation-Sektion | `platform-core/modules/datamodels/datamodelNavigation.py` (Block `workflowAutomation`) |
|
||||
| Feature-Mantel (deprecated) | `platform-core/modules/features/graphicalEditor/` |
|
||||
| Graph-Engine | `platform-core/modules/workflows/automation2/` |
|
||||
| Scheduler | `platform-core/modules/workflows/scheduler/` |
|
||||
| Frontend | `ui-nyla/src/pages/WorkflowAutomationPage.tsx` |
|
||||
| Frontend Hub | `ui-nyla/src/pages/workflowAutomation/WorkflowAutomationHubPage.tsx` |
|
||||
| Frontend Tabs | `ui-nyla/src/pages/workflowAutomation/tabs/{WorkflowsTab,RunsTab,RunDetailTab,EditorTab,TemplatesTab}.tsx` |
|
||||
| Frontend API Client | `ui-nyla/src/api/workflowAutomationApi.ts` |
|
||||
|
||||
## API
|
||||
|
||||
|
|
@ -36,14 +42,24 @@
|
|||
|---------|------|--------------|
|
||||
| GET | `/workflows` | Workflows mandatsweit (RBAC-gefiltert) |
|
||||
| GET | `/workflows/{id}` | Einzelner Workflow |
|
||||
| POST | `/workflows/{id}/execute` | Workflow ausführen |
|
||||
| DELETE | `/workflows/{id}` | Workflow + Cascade löschen |
|
||||
| GET | `/versions/{workflowId}` | Versionen eines Workflows |
|
||||
| POST | `/versions/{id}/publish` | Version publizieren |
|
||||
| GET | `/runs` | Läufe mandatsweit |
|
||||
| GET | `/runs/{id}` | Einzelner Run |
|
||||
| GET | `/runs/{id}/detail` | Run-Detail mit Steps |
|
||||
| GET | `/runs/{id}/stream` | SSE Run-Stream |
|
||||
| POST | `/runs/{id}/stop` | Run stoppen |
|
||||
| DELETE | `/runs/{id}` | Run + Steps löschen |
|
||||
| GET | `/tasks` | Human-Tasks mandatsweit |
|
||||
| POST | `/tasks/{id}/complete` | Task abschliessen |
|
||||
| POST | `/tasks/{id}/cancel` | Task abbrechen |
|
||||
| GET | `/steps/{runId}` | Step-Logs eines Runs |
|
||||
| DELETE | `/workflows/{id}` | Workflow + Cascade löschen |
|
||||
| DELETE | `/runs/{id}` | Run + Steps löschen |
|
||||
| GET | `/metrics` | Workflow-Metriken |
|
||||
| GET | `/node-types` | Node-Typ-Katalog |
|
||||
| GET | `/templates` | Workflow-Vorlagen |
|
||||
| GET | `/connections` | Verfügbare Connections |
|
||||
|
||||
## Navigation
|
||||
|
||||
|
|
@ -54,10 +70,6 @@ Statischer Block `workflowAutomation` (order 25) mit UI-Objekten:
|
|||
- `page.system.workflowAutomation.runs`
|
||||
- `page.system.workflowAutomation.tasks`
|
||||
|
||||
## Migration
|
||||
|
||||
Feature-Routen `/api/workflows/{instanceId}/…` bleiben aktiv (Koexistenz). Die GE-Feature-Registrierung (Store, `TEMPLATE_ROLES`, `UI_OBJECTS`) ist DEPRECATED, wird aber für bestehende Instanzen noch ausgeliefert. Vollständige Entfernung des Feature-Mantels erfolgt nach Abschluss der Datenmigration.
|
||||
|
||||
## Siehe auch
|
||||
|
||||
- Plan-Dokument: `c-work/2-build/2026-06-automation-system-component.md`
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
<!-- status: plan -->
|
||||
<!-- status: done -->
|
||||
<!-- started: 2026-06-05 -->
|
||||
<!-- completed: 2026-06-08 -->
|
||||
<!-- component: gateway | ui-nyla | platform -->
|
||||
|
||||
# WorkflowAutomation als System-Komponente — `graphicalEditor` raus aus dem Feature-Modell
|
||||
|
||||
> **Migration Status: COMPLETE (2026-06-08).** Alle `graphicalEditor`-Code-Referenzen eliminiert. Code aus `features/graphicalEditor/`, `workflows/automation2/`, `workflows/scheduler/` verschoben nach `modules/workflowAutomation/{editor,engine,scheduler}/`. Originale gelöscht, `__init__.py`-Shims als Safety-Net. Test-Imports, DEPRECATED-Kommentare, Store/RBAC-Namespace, Demo-Configs, Frontend-Kommentare/Logs bereinigt. `graphicalEditorRunFileLogger.py` → `runFileLogger.py`. `datamodelFeatureGraphicalEditor.py` gelöscht. Frontend-Monolith gesplittet (D1-D3). RBAC-Migration als idempotente Boot-Routine. Verbleibend: AC5 per-Node Billing + AC7 Run-as-Principal (Scope CustomerCases), automatisierte Tests T1-T5 (pending), Smoke-Test Scheduler (manuell bei Deploy).
|
||||
|
||||
> **Treiber:** Entscheid aus `c-work/0-ideas/2026-06-CustomerCases-step1-architecture.md` / `…-step3-features-plan.md` **A0.4**. Dort wurde die Entkopplung als Roadmap markiert; sie wird **vorgezogen**, weil sie sonst die Solution-Schicht (Ownership/RBAC/Billing) später erneut einholt.
|
||||
>
|
||||
> **Namens-Konvention:** Die System-Komponente heisst **`WorkflowAutomation`** (Code-Token `WorkflowAutomation`/`workflowAutomation`) — semantisch eindeutig und gut greppbar. Das generische Wort «Automation» ist im Bestand schon mehrfach belegt (`AutomationsDashboardPage`, `routeAutomationWorkspace`, `/automations`, `workflows/automation2`) und bleibt dort **unverändert**. UI-Label (kundensichtbar): **«Workflow-Automation»** / «Automatisierung».
|
||||
|
|
@ -215,6 +218,57 @@ api/workflowAutomationApi.ts # /api/workflow-automation/... (ersetzt workfl
|
|||
|
||||
## Umsetzungs-Checkliste
|
||||
|
||||
**Phase A — Code-Migration (Copy to new locations + re-export shims):**
|
||||
- [x] A2: `modules/workflows/automation2/*.py` → `modules/workflowAutomation/engine/` (executionEngine, graphUtils, runEnvelope, scheduleCron, graphicalEditorRunFileLogger, pickNotPushMigration, featureInstanceRefMigration, workflowArtifactVisibility, clickupTaskUpdateMerge, udmUpstreamShapes) *(2026-06-07)*
|
||||
- [x] A2: `modules/workflows/automation2/executors/*.py` → `modules/workflowAutomation/engine/executors/` (actionNodeExecutor, inputExecutor, flowExecutor, triggerExecutor, ioExecutor, dataExecutor) *(2026-06-07)*
|
||||
- [x] A3: `modules/workflows/scheduler/mainScheduler.py` → `modules/workflowAutomation/scheduler/mainScheduler.py` *(2026-06-07)*
|
||||
- [x] A5: `modules/features/graphicalEditor/{portTypes,adapterValidator,nodeRegistry,nodeAdapter,switchOutput,entryPoints,conditionOperators,upstreamPathsService,_workflowFileSchema}.py` → `modules/workflowAutomation/editor/` *(2026-06-07)*
|
||||
- [x] A5: `modules/features/graphicalEditor/nodeDefinitions/*.py` → `modules/workflowAutomation/editor/nodeDefinitions/` *(2026-06-07)*
|
||||
- [x] A5: `modules/features/graphicalEditor/emailPoller.py` → `modules/workflowAutomation/scheduler/emailPoller.py` *(2026-06-07)*
|
||||
- [x] Re-export shims created at old `__init__.py` locations for backward compatibility
|
||||
|
||||
**Phase F — Delete old originals (cleanup):**
|
||||
- [x] F1: Deleted all individual .py files from `modules/features/graphicalEditor/` (shims: interfaceFeatureGraphicalEditor.py, mainGraphicalEditor.py; originals: portTypes, adapterValidator, nodeRegistry, nodeAdapter, switchOutput, entryPoints, conditionOperators, upstreamPathsService, _workflowFileSchema, emailPoller + all nodeDefinitions/*.py) *(2026-06-07)*
|
||||
- [x] F2: Deleted all individual .py files from `modules/workflows/automation2/` and `executors/` (executionEngine, graphUtils, runEnvelope, scheduleCron, graphicalEditorRunFileLogger, pickNotPushMigration, featureInstanceRefMigration, workflowArtifactVisibility, clickupTaskUpdateMerge, udmUpstreamShapes + 6 executor files) *(2026-06-07)*
|
||||
- [x] F3: Deleted `modules/workflows/scheduler/mainScheduler.py` *(2026-06-07)*
|
||||
- [x] F4: `nodeDefinitions/__init__.py` converted to re-export shim (imports STATIC_NODE_TYPES from new location)
|
||||
- [x] F4: `routeWorkflowAutomation.py` imports updated to `modules.workflowAutomation.editor._workflowFileSchema`
|
||||
- [x] `automation2/__init__.py`, `automation2/executors/__init__.py`, `scheduler/__init__.py` retained as re-export shims → backward compat for remaining importers
|
||||
- [x] `datamodelFeatureGraphicalEditor.py` gelöscht (keine Caller mehr) *(2026-06-08)*
|
||||
- [x] Test file imports (`tests/unit/`, `tests/integration/`, `tests/demo/`) updated to canonical `modules.workflowAutomation.*` paths *(2026-06-08)*
|
||||
|
||||
**Phase D — Frontend Struktur (D1-D3):**
|
||||
- [x] D1: `WorkflowAutomationPage.tsx` monolith (1566 lines) split into `pages/workflowAutomation/` with Hub + 5 tab components + types.ts *(2026-06-08)*
|
||||
- [x] D2: Editor views re-exported from `pages/workflowAutomation/views/` *(2026-06-08)*
|
||||
- [x] D3: FlowEditor components re-export shim at `components/workflowAutomation/FlowEditor/` *(2026-06-08)*
|
||||
|
||||
**Phase A10 — RBAC Namespace Migration (Boot-integriert):**
|
||||
- [x] `_migrateRbacNamespace()` as idempotent routine in `onBootstrap()` — migrates AccessRule objectKeys from `feature.graphicalEditor` to `system.workflowAutomation` on every boot *(2026-06-08)*
|
||||
- [x] `TABLE_NAMESPACE` in `interfaceRbac.py` updated from `feature.graphicalEditor` to `system.workflowAutomation` *(2026-06-08)*
|
||||
- [x] Standalone script `scripts/script_db_migrate_rbac_workflow_automation.py` retained as manual fallback *(2026-06-07)*
|
||||
|
||||
**Cleanup — Stale DEPRECATED-Bereinigung:**
|
||||
- [x] Stale DEPRECATED-Kommentare entfernt: `i18nBootSync.py` (2x), `workflowTools.py` (5x) — Imports zeigen bereits auf `modules.workflowAutomation.*` *(2026-06-08)*
|
||||
- [x] `resource.store.graphicalEditor` → `resource.store.workflowAutomation` in `interfaceBootstrap.py` + `mainSystem.py` *(2026-06-08)*
|
||||
- [x] `toolboxRegistry.py`: `featureCode="graphicalEditor"` → `"workflowAutomation"` *(2026-06-08)*
|
||||
- [x] `datamodelFeatureGraphicalEditor.py` gelöscht (toter Re-Export-Shim, keine Caller) *(2026-06-08)*
|
||||
- [x] `nodeDefinitions/__init__.py`: DEPRECATED-Label durch neutrales Shim-Label ersetzt *(2026-06-08)*
|
||||
- [x] `routeWorkflowAutomation.py`: fehlender `DatabaseConnector`-Import ergänzt (Boot-Fix) *(2026-06-08)*
|
||||
- [x] `routeWorkflowAutomation.py`: staler Import `modules.workflows.automation2.runEnvelope` → `modules.workflowAutomation.engine.runEnvelope` *(2026-06-08)*
|
||||
- [x] `graphicalEditorRunFileLogger.py` → `runFileLogger.py` umbenannt + alle 4 Import-Stellen aktualisiert *(2026-06-08)*
|
||||
- [x] `graphicalEditorDatabase` Alias in `interfaceWorkflowAutomation.py` entfernt (kein Caller) *(2026-06-08)*
|
||||
- [x] Alle verbliebenen `graphicalEditor`-Kommentare/Docstrings in 7 Backend-Dateien neutralisiert *(2026-06-08)*
|
||||
- [x] Demo-Configs: `graphicalEditor` aus Feature-Listen entfernt (`pwgDemo2026.py`, `investorDemo2026.py`) *(2026-06-08)*
|
||||
- [x] Frontend: `console.error('[graphicalEditor]` → `'[workflowAutomation]` (6 Stellen), Kommentare aktualisiert *(2026-06-08)*
|
||||
- [x] `_FEATURES_WITH_EDITOR`: `'graphicalEditor'` entfernt (WA ist kein Feature; nur `'workspace'` verbleibt) *(2026-06-08)*
|
||||
- [x] Test-Dateien: `graphicalEditor` aus Parametrize-Listen und Assertions entfernt *(2026-06-08)*
|
||||
- [x] UDB-Surface `'graphEditor'` → `'workflowAutomation'` (UnifiedDataBar.tsx, FilesTab.tsx, Automation2FlowEditor.tsx) *(2026-06-08)*
|
||||
- [x] `Automation2FlowEditor.tsx`: 12 stale `instanceId`-Parameter aus API-Calls entfernt (API war bereits migriert) *(2026-06-08)*
|
||||
- [x] `FilesTab.tsx`: `importWorkflowFromFile` Signatur korrigiert (stale `instanceId` entfernt) *(2026-06-08)*
|
||||
- [x] Log-Prefixe `[automations]` → `[workflowAutomation]` in RunsTab.tsx + WorkflowsTab.tsx *(2026-06-08)*
|
||||
- [x] Dead code entfernt: `WorkflowTasksPage.tsx` (942 LOC), `WorkflowTasks.module.css` *(2026-06-08)*
|
||||
- [x] UDB generifiziert: `UdbSurface` → `string` (kein hardcoded Feature-Enum mehr); Workflow-Import-Logik aus `FilesTab.tsx` entfernt → Consumer (`Automation2FlowEditor`) uebernimmt via `onFileSelect`; `onWorkflowImportedFromFile` Prop entfernt *(2026-06-08)*
|
||||
|
||||
**Phase 0 — Scheduler-Boot entkoppeln (risikoarm, zuerst):**
|
||||
- [x] Scheduler-Start in System-Lifespan (`app.py`, **nach** `setSchedulerMainLoop`/`eventManager.start()`); Poller bleibt **on-demand** (`ensureRunning`), `onStop`-Stop verlagert (Scheduler + Email-Poller in `app.py` Shutdown Schritt 3.5); GE-`onStart`/`onStop` **entfernt** *(2026-06-07)*
|
||||
- [x] Routen-Registrierung via `loadFeatureMainModules()` weiterhin aktiv (Feature-Mantel noch da)
|
||||
|
|
@ -226,7 +280,7 @@ api/workflowAutomationApi.ts # /api/workflow-automation/... (ersetzt workfl
|
|||
- [x] `PauseForHumanTaskError` + `PauseForEmailWaitError` → `datamodels/serviceExceptions.py` (kanonisch); Re-Export-Shim in `automation2/executors/inputExecutor.py`; Caller `methods/methodContext/actions/setContext.py` umgebogen *(2026-06-07)*
|
||||
- [x] `coerceDocumentDataToBytes` + `_looksLikeAsciiBase64Payload` → `shared/documentUtils.py` (kanonisch); Re-Export-Shim in `automation2/executors/actionNodeExecutor.py`; Caller `methods/methodFile/actions/create.py` umgebogen *(2026-06-07)*
|
||||
- [x] Guard-Test: `modules.workflows.{methods.methodContext.actions.setContext, methods.methodFile.actions.create}` importierbar **ohne** `modules.workflows.automation2.*` → bestätigt, kein `automation2`-Modul transitiv geladen *(2026-06-07)*
|
||||
- [ ] Node-Katalog (`STATIC_NODE_TYPES`, `features/graphicalEditor/nodeDefinitions/`): bleibt beim Editor, zieht mit ihm um; cross-Caller `system/i18nBootSync.py` + `serviceAgent/workflowTools.py` beachten
|
||||
- [x] Node-Katalog (`STATIC_NODE_TYPES`, `features/graphicalEditor/nodeDefinitions/`): moved to `workflowAutomation/editor/nodeDefinitions/`; old `__init__.py` converted to re-export shim; cross-Caller `system/i18nBootSync.py` + `serviceAgent/workflowTools.py` work via shim *(2026-06-07)*
|
||||
|
||||
**Phase 1 — Mandatsweite API + System-RBAC (parallel zur Bestands-API):**
|
||||
- [x] `AutoWorkflow.runAsPrincipal` in `datamodels/datamodelWorkflowAutomation.py` ergänzt (Optional[str], nullable, softFk → UserInDB)
|
||||
|
|
@ -240,7 +294,14 @@ api/workflowAutomationApi.ts # /api/workflow-automation/... (ersetzt workfl
|
|||
- [x] `/workflow-automation`-Route + `WorkflowAutomationPage.tsx` Hub-Seite mit Tabs (Workflows · Läufe · Tasks), `?tab=`-Deeplinks; Import in `App.tsx`
|
||||
- [x] Icons in `pageRegistry.tsx` für `page.system.workflowAutomation.*` registriert (FaSitemap, FaProjectDiagram, FaCopy, FaPlay, FaTasks)
|
||||
- [x] `MandateNavigation.tsx`: `extraStaticBlocks`-Logik — unbekannte statische Blöcke werden als eigene Nav-Sektionen gerendert (nicht mehr in System-Block gemergt)
|
||||
- Mandanten-Scope-Selector / Editor-Entkopplung / Keep-Alive: spätere Iteration (Editor braucht instanceId bis Feature-Mantel vollständig entfernt)
|
||||
- [x] Kontext-Selector (Alle Mandanten / Mandant X) im Hub — BillingDataView-Pattern; `selectedMandateId` an alle Tabs *(2026-06-08)*
|
||||
- [x] Editor-Entkopplung: `mandateId` ist primaerer Kontext; `instanceId` nur noch Access-Gate fuer Workspace-Datasource-APIs *(2026-06-08)*
|
||||
- [x] WorkflowsTab/RunsTab: Server-seitige Mandantenfilterung via `mandateId`-Query-Param *(2026-06-08)*
|
||||
- [x] TasksTab im Hub verdrahtet (neue API `/api/workflow-automation/tasks`) *(2026-06-08)*
|
||||
- [x] WorkflowsTab Edit-Navigation korrigiert: `/workflow-automation?tab=editor&workflowId=...` (statt mandate-scoped Feature-Route) *(2026-06-08)*
|
||||
- [x] `_FEATURES_WITH_EDITOR`: `'workflowAutomation'` entfernt (ist kein Feature) *(2026-06-08)*
|
||||
- [x] Dead code entfernt: `WorkflowTasksPage.tsx` (942 LOC, instance-scoped legacy), `WorkflowTasks.module.css` *(2026-06-08)*
|
||||
- Keep-Alive fuer Editor-Tab: separate Iteration (aktuell wird der gesamte Hub kept-alive)
|
||||
|
||||
**Phase 3 — DB & Datenmigration:**
|
||||
- [x] `AutoWorkflow.featureInstanceId` → `Optional[str]` (default=None, softFk=True); Pydantic-only, **kein DDL** — Spalte bereits DB-nullable
|
||||
|
|
@ -281,7 +342,7 @@ api/workflowAutomationApi.ts # /api/workflow-automation/... (ersetzt workfl
|
|||
## Offene Fragen
|
||||
|
||||
1. **RBAC-Granularität (grösstenteils entschieden):** Modell = Mandats-Mitgliedschaft + Mandats-Admin + `isPlatformAdmin`; GE-Feature-Rollen (`graphicalEditor-*`) entfallen. Offen nur: brauchen Power-User ohne Admin eine eigene System-Rolle `workflowAutomation-user`, oder genügt Mandats-`user`? (Feature-Instanz-Rollen sind keine Option mehr — `instantiable=False` + `rbac-role-separation.mdc`.)
|
||||
2. **API-Pfad:** `/api/workflow-automation/…` neu vs. bestehendes `/api/system/workflow-runs` ausbauen — konsolidieren?
|
||||
2. **API-Pfad:** ~~`/api/workflow-automation/…` neu vs. bestehendes `/api/system/workflow-runs` ausbauen — konsolidieren?~~ **Entschieden (2026-06-08):** `/api/workflow-automation/…` ist der kanonische Pfad. `routeWorkflowAutomation.py` registriert alle Endpunkte dort. `/api/system/workflow-runs` bleibt als Legacy-Alias (Dashboard).
|
||||
3. **Run-as-Principal-Verwaltung:** Ersteller-Identität vs. dedizierter Service-Principal (siehe CustomerCases offene Frage #1).
|
||||
4. **Alt-URLs:** wie lange Redirects der `{instanceId}`-Pfade halten (Bookmarks/Deeplinks)?
|
||||
5. **Datei-/Doku-Rename:** dieses Plan-Dokument ggf. auf `…-workflowautomation-system-component.md` umbenennen (aktuell `…-automation-system-component.md`) — Konsistenz vs. Referenz-Churn.
|
||||
|
|
@ -290,22 +351,22 @@ api/workflowAutomationApi.ts # /api/workflow-automation/... (ersetzt workfl
|
|||
|
||||
- Architektur/Entscheid: `c-work/0-ideas/2026-06-CustomerCases-step1-architecture.md` (A0.4), `…-step3-features-plan.md` (A0)
|
||||
- Prior Art: `c-work/4-done/2026-04-automation-unification.md`, `2026-04-automation-central-admin.md`, `2026-04-generic-graph-editor.md`
|
||||
- Code (Backend): `modules/features/graphicalEditor/`, `modules/workflows/{automation2,scheduler}/`, `modules/datamodels/{datamodelPortTypes,datamodelWorkflowAutomation,datamodelNavigation}.py`, `modules/routes/{routeWorkflowDashboard,routeAutomationWorkspace,routeSystem}.py`, `app.py`
|
||||
- Code (Backend): `modules/workflowAutomation/{editor,engine,scheduler}/`, `modules/datamodels/{datamodelPortTypes,datamodelWorkflowAutomation,datamodelNavigation}.py`, `modules/routes/{routeWorkflowAutomation,routeWorkflowDashboard,routeAutomationWorkspace,routeSystem}.py`, `app.py`
|
||||
- Import-/Layer-Stand (Refactoring 2026-06-05/06, inkl. Deferred-Liste für diese Komponente): `local/notes/refernce-analysis/platform-core-import-analyse.md`
|
||||
- Code (Frontend): `ui-nyla/src/pages/AutomationsDashboardPage.tsx`, `components/Navigation/MandateNavigation.tsx`, `pages/FeatureView.tsx`, `App.tsx`
|
||||
- RBAC: `b-reference/platform/rbac.md`, `.cursor/rules/rbac-role-separation.mdc`, `.cursor/rules/feature-instance-scoping.mdc`
|
||||
|
||||
## Abschluss
|
||||
|
||||
- [ ] `b-reference/`: neue Kanon-Seite «WorkflowAutomation (System-Komponente)»; `graphicalEditor`-Feature-Seite umschreiben
|
||||
- [ ] `.cursor/rules/rbac-role-separation.mdc` + `feature-instance-scoping.mdc` aktualisieren (WorkflowAutomation als dokumentierte Ausnahme; stale Globs `gateway/`/`frontend_nyla/` → `platform-core/`/`ui-nyla/` korrigieren)
|
||||
- [ ] `TOPICS.md` aktualisieren (WorkflowAutomation = System-Komponente)
|
||||
- [ ] **Cross-Import Assessment** (nach Umsetzung): Import-Analyse erneut durchfuehren und pruefen:
|
||||
- [ ] `workflows -> features.graphicalEditor` (~40 Imports): Alle via Komponenten-Umzug eliminiert?
|
||||
- [ ] `serviceCenter -> features.graphicalEditor` (5x workflowTools): entfaellt?
|
||||
- [ ] `interfaces/interfaceDbManagement.py:936` -> `workflowArtifactVisibility`: mit Engine-Umzug erledigt?
|
||||
- [ ] Re-Export-Shims (`datamodelFeatureGraphicalEditor.py`, `stateTools.py`): entfernbar?
|
||||
- [ ] Verbleibende interne Zyklen in `workflows/` (30 lazy Imports): reduziert nach Restructuring?
|
||||
- [ ] Finale Folder-Summary und Import-Zahlen neu generieren
|
||||
- [ ] `local/notes/refernce-analysis/platform-core-import-analyse.md` finalisieren
|
||||
- [ ] Dieses Dokument → `c-work/2-build/` bei Annahme, dann `4-done/`
|
||||
- [x] `b-reference/platform/workflowAutomation.md`: Kanon-Seite aktualisiert (Code-Pfade, API, RBAC, Navigation) *(2026-06-08)*
|
||||
- [x] `.cursor/rules/rbac-role-separation.mdc` + `feature-instance-scoping.mdc`: WorkflowAutomation als dokumentierte Ausnahme eingetragen *(2026-06-08)*
|
||||
- [x] `topics-todo.md` aktualisiert (WorkflowAutomation = System-Komponente, DONE) *(2026-06-08)*
|
||||
- [x] `features/graphicalEditor/` Verzeichnis komplett gelöscht (keine Dateien, keine Caller) *(2026-06-08)*
|
||||
- [x] **Cross-Import Assessment**:
|
||||
- [x] `workflows -> features.graphicalEditor` (~40 Imports): eliminiert — alle Imports auf `modules.workflowAutomation.*` *(2026-06-08)*
|
||||
- [x] `serviceCenter -> features.graphicalEditor` (5x workflowTools): eliminiert — kanonische Pfade *(2026-06-08)*
|
||||
- [x] `interfaces/interfaceDbManagement.py:936` -> `workflowArtifactVisibility`: erledigt — `modules.workflowAutomation.engine.workflowArtifactVisibility` *(2026-06-08)*
|
||||
- [x] Re-Export-Shims: `datamodelFeatureGraphicalEditor.py` gelöscht; `stateTools.py` Shim bleibt (7 Caller via `processing/shared/`, nicht Teil dieser Migration) *(2026-06-08)*
|
||||
- [x] Keine `from modules.features.graphicalEditor` oder `from modules.workflows.automation2` Imports mehr im gesamten Codebase (verifiziert via grep) *(2026-06-08)*
|
||||
- [ ] Lazy Imports in `workflows/` reduzieren (separates Refactoring-Thema, nicht Teil dieser Migration)
|
||||
- [ ] Dieses Dokument → `4-done/` verschieben
|
||||
Loading…
Reference in a new issue