Files
breakpilot-lehrer/admin-lehrer/components/common/DataFlowDiagramDetails.tsx
Benjamin Admin bd4b956e3c [split-required] Split final 43 files (500-668 LOC) to complete refactoring
klausur-service (11 files):
- cv_gutter_repair, ocr_pipeline_regression, upload_api
- ocr_pipeline_sessions, smart_spell, nru_worksheet_generator
- ocr_pipeline_overlays, mail/aggregator, zeugnis_api
- cv_syllable_detect, self_rag

backend-lehrer (17 files):
- classroom_engine/suggestions, generators/quiz_generator
- worksheets_api, llm_gateway/comparison, state_engine_api
- classroom/models (→ 4 submodules), services/file_processor
- alerts_agent/api/wizard+digests+routes, content_generators/pdf
- classroom/routes/sessions, llm_gateway/inference
- classroom_engine/analytics, auth/keycloak_auth
- alerts_agent/processing/rule_engine, ai_processor/print_versions

agent-core (5 files):
- brain/memory_store, brain/knowledge_graph, brain/context_manager
- orchestrator/supervisor, sessions/session_manager

admin-lehrer (5 components):
- GridOverlay, StepGridReview, DevOpsPipelineSidebar
- DataFlowDiagram, sbom/wizard/page

website (2 files):
- DependencyMap, lehrer/abitur-archiv

Other: nibis_ingestion, grid_detection_service, export-doclayout-onnx

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-25 09:41:42 +02:00

65 lines
1.8 KiB
TypeScript

'use client'
/**
* DataFlowDiagram Module Details Panel
*
* Extracted from DataFlowDiagram.tsx for the selected module details panel.
*/
import { MODULE_REGISTRY, type BackendModule } from '@/lib/module-registry'
interface DataFlowDiagramDetailsProps {
selectedModule: string
onSelectModule: (id: string | null) => void
}
export function DataFlowDiagramDetails({ selectedModule, onSelectModule }: DataFlowDiagramDetailsProps) {
const module = MODULE_REGISTRY.find(m => m.id === selectedModule)
if (!module) return null
return (
<div className="bg-purple-50 border border-purple-200 rounded-xl p-4">
<h4 className="font-medium text-purple-900 mb-2">{module.name}</h4>
<div className="text-sm text-purple-700 space-y-1">
<p>ID: <code className="bg-purple-100 px-1 rounded">{selectedModule}</code></p>
{module.dependencies && (
<p>
Abhaengigkeiten:
{module.dependencies.map(dep => (
<button
key={dep}
onClick={() => onSelectModule(dep)}
className="ml-2 px-2 py-0.5 bg-purple-200 text-purple-800 rounded hover:bg-purple-300"
>
{dep}
</button>
))}
</p>
)}
{module.frontend.adminV2Page && (
<p>
Frontend:
<a href={module.frontend.adminV2Page} className="ml-2 text-purple-600 hover:underline">
{module.frontend.adminV2Page}
</a>
</p>
)}
</div>
</div>
)
}
export const SERVICE_COLORS: Record<string, string> = {
'consent-service': '#8b5cf6',
'python-backend': '#f59e0b',
'klausur-service': '#10b981',
'voice-service': '#3b82f6',
}
export const STATUS_COLORS = {
connected: '#22c55e',
partial: '#eab308',
'not-connected': '#ef4444',
deprecated: '#6b7280',
}