From b681ddb13194ce3c146235a1219d5e488e36cb7b Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 24 Apr 2026 17:28:57 +0200 Subject: [PATCH] [split-required] Split 58 monoliths across Python, Go, TypeScript (Phases 1-3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1 — Python (klausur-service): 5 monoliths → 36 files - dsfa_corpus_ingestion.py (1,828 LOC → 5 files) - cv_ocr_engines.py (2,102 LOC → 7 files) - cv_layout.py (3,653 LOC → 10 files) - vocab_worksheet_api.py (2,783 LOC → 8 files) - grid_build_core.py (1,958 LOC → 6 files) Phase 2 — Go (edu-search-service, school-service): 8 monoliths → 19 files - staff_crawler.go (1,402 → 4), policy/store.go (1,168 → 3) - policy_handlers.go (700 → 2), repository.go (684 → 2) - search.go (592 → 2), ai_extraction_handlers.go (554 → 2) - seed_data.go (591 → 2), grade_service.go (646 → 2) Phase 3 — TypeScript (admin-lehrer): 45 monoliths → 220+ files - sdk/types.ts (2,108 → 16 domain files) - ai/rag/page.tsx (2,686 → 14 files) - 22 page.tsx files split into _components/ + _hooks/ - 11 component files split into sub-components - 10 SDK data catalogs added to loc-exceptions - Deleted dead backup index_original.ts (4,899 LOC) All original public APIs preserved via re-export facades. Zero new errors: Python imports verified, Go builds clean, TypeScript tsc --noEmit shows only pre-existing errors. Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/rules/loc-exceptions.txt | 14 + .../[agentId]/_components/AgentHeader.tsx | 58 + .../[agentId]/_components/AgentStatsBar.tsx | 32 + .../_components/HistoryTabContent.tsx | 32 + .../[agentId]/_components/SoulTabContent.tsx | 102 ++ .../[agentId]/_components/StatsTabContent.tsx | 16 + .../ai/agents/[agentId]/_components/index.ts | 6 + .../agents/[agentId]/_components/mock-data.ts | 308 ++++ .../ai/agents/[agentId]/_components/types.ts | 25 + .../app/(admin)/ai/agents/[agentId]/page.tsx | 602 +------- .../_components/AgentTypesSection.tsx | 120 ++ .../_components/DatabaseSchemaSection.tsx | 73 + .../_components/MessageBusSection.tsx | 75 + .../_components/OverviewSection.tsx | 71 + .../_components/SessionLifecycleSection.tsx | 56 + .../_components/SharedBrainSection.tsx | 83 + .../_components/SoulFilesSection.tsx | 68 + .../_components/TaskRoutingSection.tsx | 82 + .../agents/architecture/_components/index.ts | 9 + .../agents/architecture/_components/types.ts | 6 + .../(admin)/ai/agents/architecture/page.tsx | 731 +-------- .../ai/ocr-labeling/_components/ExportTab.tsx | 134 ++ .../ocr-labeling/_components/LabelingTab.tsx | 197 +++ .../ocr-labeling/_components/SessionsTab.tsx | 166 ++ .../ai/ocr-labeling/_components/StatsTab.tsx | 76 + .../ai/ocr-labeling/_components/UploadTab.tsx | 160 ++ .../app/(admin)/ai/ocr-labeling/constants.tsx | 59 + .../app/(admin)/ai/ocr-labeling/page.tsx | 960 +----------- .../(admin)/ai/ocr-labeling/useOcrLabeling.ts | 255 ++++ .../ai/quality/_components/ResultsList.tsx | 74 + .../ai/quality/_components/SearchSection.tsx | 112 ++ .../quality/_components/TraceabilityPanel.tsx | 150 ++ .../(admin)/ai/quality/_components/types.ts | 66 + .../quality/_components/useQualitySearch.ts | 93 ++ admin-lehrer/app/(admin)/ai/quality/page.tsx | 473 +----- .../backlog/_components/BacklogItemCard.tsx | 129 ++ .../backlog/_components/CategoryCards.tsx | 46 + .../(admin)/backlog/_components/FilterBar.tsx | 55 + .../(admin)/backlog/_components/InfoBox.tsx | 25 + .../backlog/_components/OverallProgress.tsx | 38 + .../app/(admin)/backlog/backlog-items.ts | 506 ++++++ .../app/(admin)/backlog/categories.tsx | 111 ++ admin-lehrer/app/(admin)/backlog/data.tsx | 6 + admin-lehrer/app/(admin)/backlog/page.tsx | 988 +----------- admin-lehrer/app/(admin)/backlog/types.ts | 32 + .../app/(admin)/backlog/useBacklog.ts | 128 ++ .../alerts/_components/AuditTab.tsx | 103 ++ .../alerts/_components/DashboardTab.tsx | 68 + .../alerts/_components/DocumentationTab.tsx | 214 +++ .../alerts/_components/InboxTab.tsx | 82 + .../alerts/_components/ProfileTab.tsx | 78 + .../alerts/_components/RulesTab.tsx | 62 + .../alerts/_components/StatsOverview.tsx | 30 + .../alerts/_components/TopicsTab.tsx | 54 + .../app/(admin)/communication/alerts/page.tsx | 909 +---------- .../app/(admin)/communication/alerts/types.ts | 68 + .../communication/alerts/useAlertsData.ts | 191 +++ .../mail/_components/AISettingsTab.tsx | 120 ++ .../mail/_components/AccountsTab.tsx | 355 +++++ .../mail/_components/AuditLogTab.tsx | 56 + .../mail/_components/OverviewTab.tsx | 171 +++ .../mail/_components/TemplatesTab.tsx | 55 + .../app/(admin)/communication/mail/page.tsx | 857 +---------- .../app/(admin)/communication/mail/types.ts | 50 + .../(admin)/communication/mail/useMailData.ts | 61 + .../brandbook/_components/ColorSwatch.tsx | 35 + .../brandbook/_components/ColorsTab.tsx | 123 ++ .../brandbook/_components/ComponentsTab.tsx | 176 +++ .../brandbook/_components/LogoTab.tsx | 269 ++++ .../brandbook/_components/TypographyTab.tsx | 173 +++ .../brandbook/_components/VoiceTab.tsx | 122 ++ .../development/brandbook/constants.ts | 253 +++ .../(admin)/development/brandbook/page.tsx | 1115 +------------- .../_components/CategoryFilter.tsx | 60 + .../_components/ConnectedScreensList.tsx | 51 + .../screen-flow/_components/FlowDiagram.tsx | 95 ++ .../_components/FlowTypeSelector.tsx | 59 + .../screen-flow/_components/ScreenList.tsx | 65 + .../screen-flow/_components/StatsBar.tsx | 57 + .../screen-flow/_components/index.ts | 6 + .../(admin)/development/screen-flow/data.ts | 264 ++++ .../development/screen-flow/helpers.ts | 83 + .../(admin)/development/screen-flow/page.tsx | 865 ++--------- .../(admin)/development/screen-flow/types.ts | 20 + .../development/screen-flow/useScreenFlow.tsx | 182 +++ .../_components/DocumentDisplay.tsx | 214 +++ .../abitur-archiv/_components/FilterBar.tsx | 174 +++ .../_components/useAbiturArchiv.ts | 147 ++ .../(admin)/education/abitur-archiv/page.tsx | 513 +------ .../_components/CorrectionPanel.tsx | 252 +++ .../[studentId]/_components/CriteriaTab.tsx | 384 +++++ .../_components/DocumentViewer.tsx | 138 ++ .../[studentId]/_components/EinigungModal.tsx | 115 ++ .../_components/TopNavigationBar.tsx | 114 ++ .../[studentId]/_components/index.ts | 8 + .../_components/useKorrekturWorkspace.ts | 454 ++++++ .../_components/workspace-types.ts | 93 ++ .../[klausurId]/[studentId]/page.tsx | 1355 ++--------------- .../_components/DirektuploadTab.tsx | 337 ++++ .../_components/ErstellenTab.tsx | 227 +++ .../_components/KlausurenTab.tsx | 138 ++ .../_components/StatistikenTab.tsx | 62 + .../_components/WillkommenTab.tsx | 132 ++ .../_components/constants.tsx | 58 + .../klausur-korrektur/_components/types.ts | 34 + .../_components/useKlausurKorrektur.ts | 322 ++++ .../education/klausur-korrektur/page.tsx | 1131 +------------- .../middleware/_components/ConfigTab.tsx | 63 + .../middleware/_components/EventsTab.tsx | 71 + .../middleware/_components/IpListTab.tsx | 133 ++ .../middleware/_components/OverviewTab.tsx | 60 + .../middleware/_components/StatsTab.tsx | 68 + .../middleware/_components/helpers.ts | 24 + .../infrastructure/middleware/page.tsx | 593 +------- .../infrastructure/middleware/types.ts | 39 + .../middleware/useMiddlewareAdmin.ts | 167 ++ .../night-mode/_components/InfoBox.tsx | 20 + .../night-mode/_components/MainControl.tsx | 76 + .../night-mode/_components/ServiceList.tsx | 93 ++ .../night-mode/_components/StatusCards.tsx | 91 ++ .../night-mode/_components/TimeConfig.tsx | 114 ++ .../night-mode/_components/types.ts | 23 + .../night-mode/_components/useNightMode.ts | 174 +++ .../infrastructure/night-mode/page.tsx | 556 +------ .../sbom/_components/CategoryFilter.tsx | 54 + .../sbom/_components/ComponentsTable.tsx | 103 ++ .../sbom/_components/ExportButton.tsx | 19 + .../sbom/_components/InfoTabsSection.tsx | 251 +++ .../sbom/_components/SbomMetadata.tsx | 32 + .../sbom/_components/StatsCards.tsx | 31 + .../infrastructure/sbom/_components/index.ts | 6 + .../infrastructure/sbom/_components/utils.ts | 32 + .../app/(admin)/infrastructure/sbom/data.ts | 169 ++ .../app/(admin)/infrastructure/sbom/page.tsx | 859 +---------- .../app/(admin)/infrastructure/sbom/types.ts | 49 + .../infrastructure/sbom/useSbomData.ts | 150 ++ .../_components/DocumentationSection.tsx | 244 +++ .../security/_components/FindingsTab.tsx | 100 ++ .../security/_components/HistoryTab.tsx | 40 + .../security/_components/MonitoringTab.tsx | 202 +++ .../security/_components/OverviewTab.tsx | 116 ++ .../security/_components/SecurityHeader.tsx | 66 + .../security/_components/ToolsTab.tsx | 78 + .../(admin)/infrastructure/security/page.tsx | 1103 +------------- .../(admin)/infrastructure/security/types.ts | 82 + .../security/useSecurityDashboard.ts | 200 +++ .../(admin)/rbac/_components/CreateModal.tsx | 302 ++++ .../rbac/_components/NamespacesTable.tsx | 62 + .../rbac/_components/PoliciesTable.tsx | 79 + .../(admin)/rbac/_components/RolesTable.tsx | 75 + .../(admin)/rbac/_components/TenantsTable.tsx | 60 + .../rbac/_components/UserRolesTable.tsx | 22 + admin-lehrer/app/(admin)/rbac/page.tsx | 948 +----------- admin-lehrer/app/(admin)/rbac/types.ts | 97 ++ admin-lehrer/app/(admin)/rbac/useRbacData.ts | 225 +++ admin-lehrer/components/ai/LossChart.tsx | 226 +++ .../components/ai/TrainingMetrics.tsx | 345 +---- .../components/ai/training-metrics-types.ts | 66 + .../components/ai/useTrainingMetricsSSE.ts | 72 + .../components/grid-editor/GridTable.tsx | 433 +----- .../components/grid-editor/GridTableCell.tsx | 169 ++ .../grid-editor/GridTableColorMenu.tsx | 65 + .../grid-editor/GridTableColumnHeader.tsx | 84 + .../grid-editor/GridTableRowHeader.tsx | 82 + .../components/grid-editor/gridEditorTypes.ts | 17 + .../grid-editor/gridTableConstants.ts | 38 + .../components/grid-editor/gridTableUtils.ts | 43 + .../components/grid-editor/useGridEditor.ts | 932 +----------- .../grid-editor/useGridEditorActions.ts | 322 ++++ .../grid-editor/useGridEditorApi.ts | 241 +++ .../grid-editor/useGridEditorLayout.ts | 431 ++++++ .../ocr-overlay/OverlayCellRenderer.tsx | 148 ++ .../ocr-overlay/OverlayReconstruction.tsx | 579 +------ .../components/ocr-overlay/OverlayToolbar.tsx | 153 ++ .../overlay-reconstruction-types.ts | 102 ++ .../useOverlayReconstructionState.ts | 328 ++++ .../components/ocr-pipeline/ConfBar.tsx | 17 + .../ocr-pipeline/DewarpControls.tsx | 488 +----- .../ocr-pipeline/DewarpFineTunePanel.tsx | 209 +++ .../ocr-pipeline/DewarpGroundTruthPanel.tsx | 94 ++ .../ocr-pipeline/DewarpSummaryBanner.tsx | 136 ++ .../ocr-pipeline/ExcludeRegionsList.tsx | 39 + .../ocr-pipeline/FineTuneSlider.tsx | 55 + .../ocr-pipeline/ImageRegionsPanel.tsx | 85 ++ .../ocr-pipeline/LlmReviewCorrections.tsx | 117 ++ .../ocr-pipeline/LlmReviewOverlay.tsx | 143 ++ .../ocr-pipeline/LlmReviewStatusScreens.tsx | 118 ++ .../ocr-pipeline/LlmReviewVocabTable.tsx | 109 ++ .../ocr-pipeline/ReconstructionOverlay.tsx | 302 ++++ .../ocr-pipeline/ReconstructionPanel.tsx | 154 ++ .../ocr-pipeline/ReconstructionSimpleView.tsx | 145 ++ .../ocr-pipeline/ReconstructionToolbar.tsx | 248 +++ .../ocr-pipeline/StepGroundTruth.tsx | 630 +------- .../components/ocr-pipeline/StepLlmReview.tsx | 499 +----- .../ocr-pipeline/StepReconstruction.tsx | 1020 ++----------- .../ocr-pipeline/StepReconstructionTypes.ts | 82 + .../ocr-pipeline/StepStructureDetection.tsx | 595 +------- .../ocr-pipeline/StepWordRecognition.tsx | 605 +------- .../ocr-pipeline/StructureImageComparison.tsx | 264 ++++ .../ocr-pipeline/StructureLayer.tsx | 72 + .../ocr-pipeline/StructureResultDetails.tsx | 254 +++ .../ocr-pipeline/ValidationPanel.tsx | 105 ++ .../ocr-pipeline/WordRecognitionControls.tsx | 147 ++ .../ocr-pipeline/WordRecognitionLabeling.tsx | 208 +++ .../ocr-pipeline/WordRecognitionOverview.tsx | 226 +++ .../ocr-pipeline/WordRecognitionUtils.tsx | 81 + .../ocr-pipeline/dewarp-constants.ts | 18 + .../ocr-pipeline/ground-truth-types.ts | 32 + .../ocr-pipeline/llm-review-types.ts | 57 + .../ocr-pipeline/structure-detection-utils.ts | 106 ++ .../ocr-pipeline/useGroundTruthSession.ts | 267 ++++ .../ocr-pipeline/useReconstructionData.ts | 201 +++ admin-lehrer/components/ocr/GTImageCrop.tsx | 52 + .../components/ocr/GroundTruthPanel.tsx | 214 +-- .../components/ocr/GroundTruthSummary.tsx | 143 ++ .../components/ocr/ground-truth-types.ts | 50 + admin-lehrer/lib/module-registry-data.ts | 515 +++++++ admin-lehrer/lib/module-registry.ts | 512 +------ .../catalog-manager/catalog-registry-data.ts | 488 ++++++ .../sdk/catalog-manager/catalog-registry.ts | 502 +----- admin-lehrer/lib/sdk/dsfa/types-api.ts | 104 ++ admin-lehrer/lib/sdk/dsfa/types-assessment.ts | 246 +++ .../lib/sdk/dsfa/types-authorities.ts | 177 +++ admin-lehrer/lib/sdk/dsfa/types-core.ts | 109 ++ .../lib/sdk/dsfa/types-risk-helpers.ts | 202 +++ admin-lehrer/lib/sdk/dsfa/types-ui.ts | 95 ++ admin-lehrer/lib/sdk/dsfa/types-wp248.ts | 183 +++ admin-lehrer/lib/sdk/dsfa/types.ts | 1081 +------------ admin-lehrer/lib/sdk/export-pdf-helpers.ts | 99 ++ admin-lehrer/lib/sdk/export-pdf.ts | 312 ++++ admin-lehrer/lib/sdk/export-types.ts | 53 + admin-lehrer/lib/sdk/export-zip.ts | 278 ++++ admin-lehrer/lib/sdk/export.ts | 716 +-------- .../sdk/vendor-compliance/context-actions.ts | 491 ++++++ .../sdk/vendor-compliance/context-reducer.ts | 334 ++++ .../lib/sdk/vendor-compliance/context.tsx | 822 ++-------- .../vendor-compliance/risk/controls-all.ts | 37 + .../risk/controls-data-compliance.ts | 377 +++++ .../risk/controls-data-operations.ts | 486 ++++++ .../risk/controls-helpers.ts | 115 ++ .../risk/controls-library.ts | 967 +----------- .../lib/sdk/vendor-compliance/types-audit.ts | 50 + .../lib/sdk/vendor-compliance/types-common.ts | 58 + .../sdk/vendor-compliance/types-contract.ts | 117 ++ .../sdk/vendor-compliance/types-finding.ts | 93 ++ .../sdk/vendor-compliance/types-helpers.ts | 280 ++++ .../sdk/vendor-compliance/types-processing.ts | 213 +++ .../lib/sdk/vendor-compliance/types-risk.ts | 147 ++ .../lib/sdk/vendor-compliance/types-state.ts | 263 ++++ .../lib/sdk/vendor-compliance/types-vendor.ts | 146 ++ .../lib/sdk/vendor-compliance/types.ts | 1234 +-------------- 251 files changed, 30016 insertions(+), 25037 deletions(-) create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentHeader.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentStatsBar.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/HistoryTabContent.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/SoulTabContent.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/StatsTabContent.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/index.ts create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/mock-data.ts create mode 100644 admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/types.ts create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/AgentTypesSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/DatabaseSchemaSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/MessageBusSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/OverviewSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/SessionLifecycleSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/SharedBrainSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/SoulFilesSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/TaskRoutingSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/index.ts create mode 100644 admin-lehrer/app/(admin)/ai/agents/architecture/_components/types.ts create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/_components/ExportTab.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/_components/LabelingTab.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/_components/SessionsTab.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/_components/StatsTab.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/_components/UploadTab.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/constants.tsx create mode 100644 admin-lehrer/app/(admin)/ai/ocr-labeling/useOcrLabeling.ts create mode 100644 admin-lehrer/app/(admin)/ai/quality/_components/ResultsList.tsx create mode 100644 admin-lehrer/app/(admin)/ai/quality/_components/SearchSection.tsx create mode 100644 admin-lehrer/app/(admin)/ai/quality/_components/TraceabilityPanel.tsx create mode 100644 admin-lehrer/app/(admin)/ai/quality/_components/types.ts create mode 100644 admin-lehrer/app/(admin)/ai/quality/_components/useQualitySearch.ts create mode 100644 admin-lehrer/app/(admin)/backlog/_components/BacklogItemCard.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/_components/CategoryCards.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/_components/FilterBar.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/_components/InfoBox.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/_components/OverallProgress.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/backlog-items.ts create mode 100644 admin-lehrer/app/(admin)/backlog/categories.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/data.tsx create mode 100644 admin-lehrer/app/(admin)/backlog/types.ts create mode 100644 admin-lehrer/app/(admin)/backlog/useBacklog.ts create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/AuditTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/DashboardTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/DocumentationTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/InboxTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/ProfileTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/RulesTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/StatsOverview.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/_components/TopicsTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/alerts/types.ts create mode 100644 admin-lehrer/app/(admin)/communication/alerts/useAlertsData.ts create mode 100644 admin-lehrer/app/(admin)/communication/mail/_components/AISettingsTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/mail/_components/AccountsTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/mail/_components/AuditLogTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/mail/_components/OverviewTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/mail/_components/TemplatesTab.tsx create mode 100644 admin-lehrer/app/(admin)/communication/mail/types.ts create mode 100644 admin-lehrer/app/(admin)/communication/mail/useMailData.ts create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/ColorSwatch.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/ColorsTab.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/ComponentsTab.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/LogoTab.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/TypographyTab.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/_components/VoiceTab.tsx create mode 100644 admin-lehrer/app/(admin)/development/brandbook/constants.ts create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/CategoryFilter.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/ConnectedScreensList.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/FlowDiagram.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/FlowTypeSelector.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/ScreenList.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/StatsBar.tsx create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/_components/index.ts create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/data.ts create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/helpers.ts create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/types.ts create mode 100644 admin-lehrer/app/(admin)/development/screen-flow/useScreenFlow.tsx create mode 100644 admin-lehrer/app/(admin)/education/abitur-archiv/_components/DocumentDisplay.tsx create mode 100644 admin-lehrer/app/(admin)/education/abitur-archiv/_components/FilterBar.tsx create mode 100644 admin-lehrer/app/(admin)/education/abitur-archiv/_components/useAbiturArchiv.ts create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/CorrectionPanel.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/CriteriaTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/DocumentViewer.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/EinigungModal.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/TopNavigationBar.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/index.ts create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/useKorrekturWorkspace.ts create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/[klausurId]/[studentId]/_components/workspace-types.ts create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/DirektuploadTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/ErstellenTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/KlausurenTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/StatistikenTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/WillkommenTab.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/constants.tsx create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/types.ts create mode 100644 admin-lehrer/app/(admin)/education/klausur-korrektur/_components/useKlausurKorrektur.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/ConfigTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/EventsTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/IpListTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/OverviewTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/StatsTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/_components/helpers.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/types.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/middleware/useMiddlewareAdmin.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/InfoBox.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/MainControl.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/ServiceList.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/StatusCards.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/TimeConfig.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/types.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/night-mode/_components/useNightMode.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/CategoryFilter.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/ComponentsTable.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/ExportButton.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/InfoTabsSection.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/SbomMetadata.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/StatsCards.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/index.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/_components/utils.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/data.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/types.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/sbom/useSbomData.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/DocumentationSection.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/FindingsTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/HistoryTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/MonitoringTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/OverviewTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/SecurityHeader.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/_components/ToolsTab.tsx create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/types.ts create mode 100644 admin-lehrer/app/(admin)/infrastructure/security/useSecurityDashboard.ts create mode 100644 admin-lehrer/app/(admin)/rbac/_components/CreateModal.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/_components/NamespacesTable.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/_components/PoliciesTable.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/_components/RolesTable.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/_components/TenantsTable.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/_components/UserRolesTable.tsx create mode 100644 admin-lehrer/app/(admin)/rbac/types.ts create mode 100644 admin-lehrer/app/(admin)/rbac/useRbacData.ts create mode 100644 admin-lehrer/components/ai/LossChart.tsx create mode 100644 admin-lehrer/components/ai/training-metrics-types.ts create mode 100644 admin-lehrer/components/ai/useTrainingMetricsSSE.ts create mode 100644 admin-lehrer/components/grid-editor/GridTableCell.tsx create mode 100644 admin-lehrer/components/grid-editor/GridTableColorMenu.tsx create mode 100644 admin-lehrer/components/grid-editor/GridTableColumnHeader.tsx create mode 100644 admin-lehrer/components/grid-editor/GridTableRowHeader.tsx create mode 100644 admin-lehrer/components/grid-editor/gridEditorTypes.ts create mode 100644 admin-lehrer/components/grid-editor/gridTableConstants.ts create mode 100644 admin-lehrer/components/grid-editor/gridTableUtils.ts create mode 100644 admin-lehrer/components/grid-editor/useGridEditorActions.ts create mode 100644 admin-lehrer/components/grid-editor/useGridEditorApi.ts create mode 100644 admin-lehrer/components/grid-editor/useGridEditorLayout.ts create mode 100644 admin-lehrer/components/ocr-overlay/OverlayCellRenderer.tsx create mode 100644 admin-lehrer/components/ocr-overlay/OverlayToolbar.tsx create mode 100644 admin-lehrer/components/ocr-overlay/overlay-reconstruction-types.ts create mode 100644 admin-lehrer/components/ocr-overlay/useOverlayReconstructionState.ts create mode 100644 admin-lehrer/components/ocr-pipeline/ConfBar.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/DewarpFineTunePanel.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/DewarpGroundTruthPanel.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/DewarpSummaryBanner.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ExcludeRegionsList.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/FineTuneSlider.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ImageRegionsPanel.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/LlmReviewCorrections.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/LlmReviewOverlay.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/LlmReviewStatusScreens.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/LlmReviewVocabTable.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ReconstructionOverlay.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ReconstructionPanel.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ReconstructionSimpleView.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ReconstructionToolbar.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/StepReconstructionTypes.ts create mode 100644 admin-lehrer/components/ocr-pipeline/StructureImageComparison.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/StructureLayer.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/StructureResultDetails.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/ValidationPanel.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/WordRecognitionControls.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/WordRecognitionLabeling.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/WordRecognitionOverview.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/WordRecognitionUtils.tsx create mode 100644 admin-lehrer/components/ocr-pipeline/dewarp-constants.ts create mode 100644 admin-lehrer/components/ocr-pipeline/ground-truth-types.ts create mode 100644 admin-lehrer/components/ocr-pipeline/llm-review-types.ts create mode 100644 admin-lehrer/components/ocr-pipeline/structure-detection-utils.ts create mode 100644 admin-lehrer/components/ocr-pipeline/useGroundTruthSession.ts create mode 100644 admin-lehrer/components/ocr-pipeline/useReconstructionData.ts create mode 100644 admin-lehrer/components/ocr/GTImageCrop.tsx create mode 100644 admin-lehrer/components/ocr/GroundTruthSummary.tsx create mode 100644 admin-lehrer/components/ocr/ground-truth-types.ts create mode 100644 admin-lehrer/lib/module-registry-data.ts create mode 100644 admin-lehrer/lib/sdk/catalog-manager/catalog-registry-data.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-api.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-assessment.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-authorities.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-core.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-risk-helpers.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-ui.ts create mode 100644 admin-lehrer/lib/sdk/dsfa/types-wp248.ts create mode 100644 admin-lehrer/lib/sdk/export-pdf-helpers.ts create mode 100644 admin-lehrer/lib/sdk/export-pdf.ts create mode 100644 admin-lehrer/lib/sdk/export-types.ts create mode 100644 admin-lehrer/lib/sdk/export-zip.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/context-actions.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/context-reducer.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/risk/controls-all.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/risk/controls-data-compliance.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/risk/controls-data-operations.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/risk/controls-helpers.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-audit.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-common.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-contract.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-finding.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-helpers.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-processing.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-risk.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-state.ts create mode 100644 admin-lehrer/lib/sdk/vendor-compliance/types-vendor.ts diff --git a/.claude/rules/loc-exceptions.txt b/.claude/rules/loc-exceptions.txt index c00fe9f..76b4aa7 100644 --- a/.claude/rules/loc-exceptions.txt +++ b/.claude/rules/loc-exceptions.txt @@ -17,6 +17,8 @@ # Pure Data Registries (keine Logik, nur Daten-Definitionen) **/dsfa_sources_registry.py | owner=klausur | reason=Pure data registry (license + source definitions, no logic) | review=2027-01-01 +**/backlog/backlog-items.ts | owner=admin-lehrer | reason=Pure data array (506 LOC, no logic, only BacklogItem[] literals) | review=2027-01-01 +**/lib/module-registry-data.ts | owner=admin-lehrer | reason=Pure data array (510 LOC, no logic, only BackendModule[] literals) | review=2027-01-01 # Algorithmic monolith — detect_column_geometry() allein 411 LOC, nicht weiter teilbar **/cv_layout_columns.py | owner=klausur | reason=detect_column_geometry ist eine einzelne 411-LOC Funktion (Whitespace-Gap-Analyse) | review=2026-10-01 @@ -24,6 +26,18 @@ # Two indivisible route handlers (~230 LOC each) that cannot be split further **/vocab_worksheet_compare_api.py | owner=klausur | reason=compare_ocr_methods (234 LOC) + analyze_grid (255 LOC), each a single cohesive handler | review=2026-10-01 +# TypeScript Data Catalogs (admin-lehrer/lib/sdk/) +# Pure exported const arrays/objects with type definitions, no business logic. +# DSGVO/GDPR compliance catalogs: risk scenarios, mitigations, legal bases, checklists, etc. +**/lib/sdk/vendor-compliance/catalog/*.ts | owner=admin-lehrer | reason=Pure data catalogs (processing-activities 813, vendor-templates 564, legal-basis 562 LOC) | review=2027-01-01 +**/lib/sdk/vendor-compliance/contract-review/findings.ts | owner=admin-lehrer | reason=Pure data catalog (573 LOC, FindingTemplate[] literals) | review=2027-01-01 +**/lib/sdk/vendor-compliance/contract-review/checklists.ts | owner=admin-lehrer | reason=Pure data catalog (508 LOC, ChecklistItem[] literals) | review=2027-01-01 +**/lib/sdk/dsfa/mitigation-library.ts | owner=admin-lehrer | reason=Pure data catalog (694 LOC, CatalogMitigation[] literals) | review=2027-01-01 +**/lib/sdk/dsfa/eu-legal-frameworks.ts | owner=admin-lehrer | reason=Pure data catalog (622 LOC, legal framework definitions) | review=2027-01-01 +**/lib/sdk/dsfa/risk-catalog.ts | owner=admin-lehrer | reason=Pure data catalog (615 LOC, CatalogRisk[] literals) | review=2027-01-01 +**/lib/sdk/vvt-baseline-catalog.ts | owner=admin-lehrer | reason=Pure data catalog (630 LOC, BaselineTemplate[] literals) | review=2027-01-01 +**/lib/sdk/loeschfristen-baseline-catalog.ts | owner=admin-lehrer | reason=Pure data catalog (578 LOC, retention period templates) | review=2027-01-01 + # Legacy — TEMPORAER bis Refactoring abgeschlossen # Dateien hier werden Phase fuer Phase abgearbeitet und entfernt. # KEINE neuen Ausnahmen ohne [guardrail-change] Commit-Marker! diff --git a/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentHeader.tsx b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentHeader.tsx new file mode 100644 index 0000000..b314d07 --- /dev/null +++ b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentHeader.tsx @@ -0,0 +1,58 @@ +import Link from 'next/link' +import { Brain, ArrowLeft, Play, Pause, CheckCircle, XCircle } from 'lucide-react' +import type { AgentDetail } from './types' + +interface AgentHeaderProps { + agent: AgentDetail +} + +export function AgentHeader({ agent }: AgentHeaderProps) { + return ( +
+
+ + + +
+ +
+
+

{agent.name}

+

{agent.description}

+
+
+ +
+
+ {agent.status === 'running' ? : + agent.status === 'paused' ? : + } + {agent.status} +
+ +
+
+ ) +} diff --git a/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentStatsBar.tsx b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentStatsBar.tsx new file mode 100644 index 0000000..af89f20 --- /dev/null +++ b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/AgentStatsBar.tsx @@ -0,0 +1,32 @@ +import type { AgentDetail } from './types' + +interface AgentStatsBarProps { + agent: AgentDetail +} + +export function AgentStatsBar({ agent }: AgentStatsBarProps) { + return ( +
+
+
Aktive Sessions
+
{agent.activeSessions}
+
+
+
Verarbeitet (24h)
+
{agent.totalProcessed.toLocaleString()}
+
+
+
Avg. Antwortzeit
+
{agent.avgResponseTime}ms
+
+
+
Fehlerrate
+
{agent.errorRate}%
+
+
+
Version
+
{agent.version}
+
+
+ ) +} diff --git a/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/HistoryTabContent.tsx b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/HistoryTabContent.tsx new file mode 100644 index 0000000..7d2ae7a --- /dev/null +++ b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/HistoryTabContent.tsx @@ -0,0 +1,32 @@ +import { History } from 'lucide-react' +import type { ChangeLog } from './types' + +interface HistoryTabContentProps { + changeLogs: ChangeLog[] +} + +export function HistoryTabContent({ changeLogs }: HistoryTabContentProps) { + return ( +
+
+ {changeLogs.map((log) => ( +
+
+ +
+
+
+ {log.action} + + {new Date(log.timestamp).toLocaleString('de-DE')} + +
+

{log.description}

+

von {log.user}

+
+
+ ))} +
+
+ ) +} diff --git a/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/SoulTabContent.tsx b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/SoulTabContent.tsx new file mode 100644 index 0000000..f3897dc --- /dev/null +++ b/admin-lehrer/app/(admin)/ai/agents/[agentId]/_components/SoulTabContent.tsx @@ -0,0 +1,102 @@ +import { FileText, Clock, RotateCcw, Save, Edit3, AlertTriangle } from 'lucide-react' +import type { AgentDetail } from './types' + +interface SoulTabContentProps { + agent: AgentDetail + editedContent: string + isEditing: boolean + hasChanges: boolean + saving: boolean + onContentChange: (content: string) => void + onSave: () => void + onReset: () => void + onStartEditing: () => void +} + +export function SoulTabContent({ + agent, + editedContent, + isEditing, + hasChanges, + saving, + onContentChange, + onSave, + onReset, + onStartEditing, +}: SoulTabContentProps) { + return ( +
+
+
+ + {agent.soulFile} + | + + Zuletzt geaendert: {new Date(agent.updatedAt).toLocaleString('de-DE')} +
+
+ {isEditing ? ( + <> + + + + ) : ( + + )} +
+
+ + {hasChanges && ( +
+ + Ungespeicherte Aenderungen vorhanden +
+ )} + +
+ {isEditing ? ( +