refactor(admin): split 9 more oversized lib/ files into focused modules

Files split by agents before rate limit:
  - dsr/api.ts (669 → barrel + helpers)
  - einwilligungen/context.tsx (669 → barrel + hooks/reducer)
  - export.ts (753 → barrel + domain exporters)
  - incidents/api.ts (845 → barrel + api-helpers)
  - tom-generator/context.tsx (720 → barrel + hooks/reducer)
  - vendor-compliance/context.tsx (1010 → 234 provider + hooks/reducer)
  - api-docs/endpoints.ts — partially split (3 domain files created)
  - academy/api.ts — partially split (helpers extracted)
  - whistleblower/api.ts — partially split (helpers extracted)

next build passes. api-client.ts (885) deferred to next session.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sharang Parnerkar
2026-04-10 19:12:09 +02:00
parent 786bb409e4
commit 58e95d5e8e
29 changed files with 5785 additions and 4383 deletions

View File

@@ -0,0 +1,191 @@
/**
* Python/FastAPI endpoints — Core compliance modules
* (framework, audit, change-requests, company-profile, projects,
* compliance-scope, dashboard, generation, extraction, modules)
*/
import { ApiModule } from './types'
export const pythonCoreModules: ApiModule[] = [
{
id: 'compliance-framework',
name: 'Compliance Framework — Regulierungen, Anforderungen & Controls',
service: 'python',
basePath: '/api/compliance',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/regulations', description: 'Alle Regulierungen auflisten', service: 'python' },
{ method: 'GET', path: '/regulations/{code}', description: 'Regulierung nach Code laden', service: 'python' },
{ method: 'GET', path: '/regulations/{code}/requirements', description: 'Anforderungen einer Regulierung', service: 'python' },
{ method: 'GET', path: '/requirements', description: 'Anforderungen auflisten (paginiert)', service: 'python' },
{ method: 'GET', path: '/requirements/{requirement_id}', description: 'Einzelne Anforderung laden', service: 'python' },
{ method: 'POST', path: '/requirements', description: 'Anforderung erstellen', service: 'python' },
{ method: 'PUT', path: '/requirements/{requirement_id}', description: 'Anforderung aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/requirements/{requirement_id}', description: 'Anforderung loeschen', service: 'python' },
{ method: 'GET', path: '/controls', description: 'Alle Controls auflisten', service: 'python' },
{ method: 'GET', path: '/controls/paginated', description: 'Controls paginiert laden', service: 'python' },
{ method: 'GET', path: '/controls/{control_id}', description: 'Einzelnes Control laden', service: 'python' },
{ method: 'PUT', path: '/controls/{control_id}', description: 'Control aktualisieren', service: 'python' },
{ method: 'PUT', path: '/controls/{control_id}/review', description: 'Control-Review durchfuehren', service: 'python' },
{ method: 'GET', path: '/controls/by-domain/{domain}', description: 'Controls nach Domain filtern', service: 'python' },
{ method: 'POST', path: '/export', description: 'Audit-Export erstellen', service: 'python' },
{ method: 'GET', path: '/export/{export_id}', description: 'Export-Status abfragen', service: 'python' },
{ method: 'GET', path: '/export/{export_id}/download', description: 'Export-Datei herunterladen', service: 'python' },
{ method: 'GET', path: '/exports', description: 'Alle Exports auflisten', service: 'python' },
{ method: 'POST', path: '/init-tables', description: 'Datenbanktabellen initialisieren', service: 'python', exposure: 'admin' },
{ method: 'POST', path: '/create-indexes', description: 'Datenbank-Indizes erstellen', service: 'python', exposure: 'admin' },
{ method: 'POST', path: '/seed-risks', description: 'Risikodaten einspielen', service: 'python', exposure: 'admin' },
{ method: 'POST', path: '/seed', description: 'Systemdaten einspielen', service: 'python', exposure: 'admin' },
],
},
{
id: 'audit',
name: 'Audit — Sitzungen & Checklisten',
service: 'python',
basePath: '/api/compliance/audit',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/sessions', description: 'Audit-Sitzung erstellen', service: 'python' },
{ method: 'GET', path: '/sessions', description: 'Alle Audit-Sitzungen auflisten', service: 'python' },
{ method: 'GET', path: '/sessions/{session_id}', description: 'Sitzung laden', service: 'python' },
{ method: 'PUT', path: '/sessions/{session_id}/start', description: 'Sitzung starten', service: 'python' },
{ method: 'PUT', path: '/sessions/{session_id}/complete', description: 'Sitzung abschliessen', service: 'python' },
{ method: 'PUT', path: '/sessions/{session_id}/archive', description: 'Sitzung archivieren', service: 'python' },
{ method: 'DELETE', path: '/sessions/{session_id}', description: 'Sitzung loeschen', service: 'python' },
{ method: 'GET', path: '/sessions/{session_id}/report/pdf', description: 'Sitzungsbericht als PDF exportieren', service: 'python' },
{ method: 'GET', path: '/checklist/{session_id}', description: 'Checkliste einer Sitzung laden', service: 'python' },
{ method: 'PUT', path: '/checklist/{session_id}/items/{requirement_id}/sign-off', description: 'Anforderung abzeichnen', service: 'python' },
{ method: 'GET', path: '/checklist/{session_id}/items/{requirement_id}', description: 'Abzeichnung-Details laden', service: 'python' },
],
},
{
id: 'ai-systems',
name: 'AI Act — KI-Systeme & Risikobewertung',
service: 'python',
basePath: '/api/compliance/ai',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/systems', description: 'KI-Systeme auflisten', service: 'python' },
{ method: 'POST', path: '/systems', description: 'KI-System erstellen', service: 'python' },
{ method: 'GET', path: '/systems/{system_id}', description: 'KI-System laden', service: 'python' },
{ method: 'PUT', path: '/systems/{system_id}', description: 'KI-System aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/systems/{system_id}', description: 'KI-System loeschen', service: 'python' },
{ method: 'POST', path: '/systems/{system_id}/assess', description: 'KI-Compliance bewerten', service: 'python' },
],
},
{
id: 'change-requests',
name: 'Change Requests — Aenderungsantraege',
service: 'python',
basePath: '/api/compliance/change-requests',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/stats', description: 'CR-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/{cr_id}', description: 'Einzelnen CR laden', service: 'python' },
{ method: 'POST', path: '/{cr_id}/accept', description: 'CR akzeptieren', service: 'python' },
{ method: 'POST', path: '/{cr_id}/reject', description: 'CR ablehnen', service: 'python' },
{ method: 'POST', path: '/{cr_id}/edit', description: 'CR bearbeiten', service: 'python' },
{ method: 'DELETE', path: '/{cr_id}', description: 'CR loeschen', service: 'python' },
],
},
{
id: 'company-profile',
name: 'Stammdaten — Unternehmensprofil',
service: 'python',
basePath: '/api/v1/company-profile',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Unternehmensprofil laden', service: 'python' },
{ method: 'POST', path: '/', description: 'Profil erstellen/aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/', description: 'Profil loeschen', service: 'python' },
{ method: 'GET', path: '/template-context', description: 'Profil als Template-Kontext (flach)', service: 'python' },
{ method: 'GET', path: '/audit', description: 'Profil-Aenderungsprotokoll laden', service: 'python' },
],
},
{
id: 'projects',
name: 'Projekte — Multi-Projekt-Verwaltung',
service: 'python',
basePath: '/api/compliance/v1/projects',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Alle Projekte des Tenants auflisten', service: 'python' },
{ method: 'POST', path: '/', description: 'Neues Projekt erstellen (optional mit Stammdaten-Kopie)', service: 'python' },
{ method: 'GET', path: '/{project_id}', description: 'Einzelnes Projekt laden', service: 'python' },
{ method: 'PATCH', path: '/{project_id}', description: 'Projekt aktualisieren (Name, Beschreibung)', service: 'python' },
{ method: 'DELETE', path: '/{project_id}', description: 'Projekt archivieren (Soft Delete)', service: 'python' },
],
},
{
id: 'compliance-scope',
name: 'Compliance Scope — Geltungsbereich',
service: 'python',
basePath: '/api/v1/compliance-scope',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Compliance-Scope laden', service: 'python' },
{ method: 'POST', path: '/', description: 'Compliance-Scope erstellen/aktualisieren', service: 'python' },
],
},
{
id: 'dashboard',
name: 'Dashboard — Compliance-Uebersicht & Reports',
service: 'python',
basePath: '/api/compliance/dashboard',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/dashboard', description: 'Haupt-Dashboard laden', service: 'python' },
{ method: 'GET', path: '/score', description: 'Compliance-Score berechnen', service: 'python' },
{ method: 'GET', path: '/dashboard/executive', description: 'Executive-Dashboard laden', service: 'python' },
{ method: 'GET', path: '/dashboard/trend', description: 'Compliance-Trendverlauf laden', service: 'python' },
{ method: 'GET', path: '/reports/summary', description: 'Zusammenfassungsbericht laden', service: 'python' },
{ method: 'GET', path: '/reports/{period}', description: 'Periodenbericht generieren', service: 'python' },
],
},
{
id: 'generation',
name: 'Dokumentengenerierung — Automatische Erstellung',
service: 'python',
basePath: '/api/compliance/generation',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/preview/{doc_type}', description: 'Generierungs-Vorschau laden', service: 'python' },
{ method: 'POST', path: '/apply/{doc_type}', description: 'Dokument generieren und anwenden', service: 'python' },
],
},
{
id: 'extraction',
name: 'Extraktion — Anforderungen aus RAG',
service: 'python',
basePath: '/api/compliance',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/extract-requirements-from-rag', description: 'Anforderungen aus RAG-Korpus extrahieren', service: 'python' },
],
},
{
id: 'modules',
name: 'Module — Compliance-Modul-Verwaltung',
service: 'python',
basePath: '/api/compliance/modules',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/modules', description: 'Module auflisten', service: 'python' },
{ method: 'GET', path: '/modules/overview', description: 'Modul-Uebersicht laden', service: 'python' },
{ method: 'GET', path: '/modules/{module_id}', description: 'Modul laden', service: 'python' },
{ method: 'POST', path: '/modules/seed', description: 'Module einspielen', service: 'python', exposure: 'admin' },
{ method: 'POST', path: '/modules/{module_id}/activate', description: 'Modul aktivieren', service: 'python' },
{ method: 'POST', path: '/modules/{module_id}/deactivate', description: 'Modul deaktivieren', service: 'python' },
{ method: 'POST', path: '/modules/{module_id}/regulations', description: 'Regulierungs-Zuordnung hinzufuegen', service: 'python' },
],
},
]