/**
 * Navigation Structure for Admin v2
 *
 * Main categories with color-coded modules.
 * All DSGVO and Compliance modules are now consolidated under the SDK.
 */

export type CategoryId = 'communication' | 'ai' | 'education' | 'website' | 'sdk-docs'

export interface NavModule {
  id: string
  name: string
  href: string
  description: string
  purpose: string
  audience: string[]
  gdprArticles?: string[]
  oldAdminPath?: string // Reference to old admin for migration
  subgroup?: string // Optional subgroup for visual grouping in sidebar
}

export interface NavCategory {
  id: CategoryId
  name: string
  icon: string
  color: string
  colorClass: string
  description: string
  modules: NavModule[]
}

export const navigation: NavCategory[] = [
  // =========================================================================
  // Kommunikation — Video, Voice, Alerts
  // =========================================================================
  {
    id: 'communication',
    name: 'Kommunikation',
    icon: 'mail',
    color: '#f59e0b', // Amber-500
    colorClass: 'communication',
    description: 'Video & Chat, Voice Service, E-Mail, Alerts',
    modules: [
      {
        id: 'mail',
        name: 'Unified Inbox',
        href: '/communication/mail',
        description: 'E-Mail-Konten & KI-Analyse',
        purpose: 'E-Mail-Konten verwalten und KI-Kategorisierung nutzen. IMAP/SMTP Konfiguration, Vorlagen und Audit-Log.',
        audience: ['Support', 'Admins'],
      },
      {
        id: 'alerts',
        name: 'Alerts Monitoring',
        href: '/communication/alerts',
        description: 'Google Alerts & Feed-Ueberwachung',
        purpose: 'Google Alerts und RSS-Feeds fuer relevante Neuigkeiten ueberwachen. Topics, Regeln, Relevanz-Profil und Digest-Generierung.',
        audience: ['Marketing', 'Admins'],
      },
    ],
  },
  // =========================================================================
  // KI & Automatisierung
  // =========================================================================
  {
    id: 'ai',
    name: 'KI & Automatisierung',
    icon: 'brain',
    color: '#14b8a6', // Teal
    colorClass: 'ai',
    description: 'LLM, OCR, RAG & Machine Learning',
    modules: [
      // -----------------------------------------------------------------------
      // KI-Daten-Pipeline: Magic Help -> OCR -> Indexierung -> Suche
      // -----------------------------------------------------------------------
      {
        id: 'magic-help',
        name: 'Magic Help (TrOCR)',
        href: '/ai/magic-help',
        description: 'TrOCR Testing & Fine-Tuning',
        purpose: 'Testen und verbessern Sie die TrOCR-Handschrifterkennung. Laden Sie Bilder hoch, um die OCR-Qualitaet zu pruefen, und trainieren Sie das Modell mit LoRA Fine-Tuning. Bidirektionaler Austausch mit OCR-Labeling.',
        audience: ['Entwickler', 'Administratoren', 'QA'],
        oldAdminPath: '/admin/magic-help',
        subgroup: 'KI-Daten-Pipeline',
      },
      {
        id: 'ocr-labeling',
        name: 'OCR-Labeling',
        href: '/ai/ocr-labeling',
        description: 'Handschrift-Training & Labels',
        purpose: 'Labeln Sie Handschrift-Samples fuer das Training von TrOCR-Modellen. Erstellen Sie Ground Truth Daten, die zur RAG Pipeline exportiert werden koennen.',
        audience: ['Entwickler', 'Data Scientists', 'QA'],
        oldAdminPath: '/admin/ocr-labeling',
        subgroup: 'KI-Daten-Pipeline',
      },
      {
        id: 'rag-pipeline',
        name: 'RAG Pipeline',
        href: '/ai/rag-pipeline',
        description: 'Dokument-Indexierung',
        purpose: 'RAG-Pipeline fuer Bildungsdokumente: NiBiS Erwartungshorizonte, Schulordnungen, Custom EH. OCR, Chunking und Vektor-Indexierung in Qdrant.',
        audience: ['Entwickler', 'Data Scientists', 'Bildungs-Admins'],
        oldAdminPath: '/admin/training',
        subgroup: 'KI-Daten-Pipeline',
      },
      {
        id: 'rag',
        name: 'Daten & RAG',
        href: '/ai/rag',
        description: 'Vektor-Suche & Collections',
        purpose: 'Verwalten und durchsuchen Sie indexierte Dokumente. Zeigt Status aller Qdrant Collections und ermoeglicht semantische Suche.',
        audience: ['Entwickler', 'Data Scientists', 'Compliance Officer'],
        oldAdminPath: '/admin/rag',
        subgroup: 'KI-Daten-Pipeline',
      },
      // -----------------------------------------------------------------------
      // KI-Werkzeuge: Standalone-Tools fuer Entwicklung & QA
      // -----------------------------------------------------------------------
      {
        id: 'ocr-kombi',
        name: 'OCR Kombi',
        href: '/ai/ocr-kombi',
        description: 'Modulare 11-Schritt-Pipeline',
        purpose: 'Modulare OCR-Pipeline mit Dual-Engine (PP-OCRv5 + Tesseract), Strukturerkennung, Grid-Aufbau und Review. Multi-Page-Dokument-Unterstuetzung.',
        audience: ['Entwickler'],
        subgroup: 'KI-Werkzeuge',
      },
      {
        id: 'test-quality',
        name: 'Test Quality (BQAS)',
        href: '/ai/test-quality',
        description: 'Golden Suite, RAG & Synthetic Tests',
        purpose: 'BQAS Dashboard mit Golden Suite (97 Referenz-Tests), RAG/Korrektur Tests und Synthetic Test Generierung. Ueberwacht die Qualitaet der KI-Ausgaben.',
        audience: ['Entwickler', 'Data Scientists', 'QA'],
        oldAdminPath: '/admin/quality',
        subgroup: 'KI-Werkzeuge',
      },
      // -----------------------------------------------------------------------
      // KI-Anwendungen: Endnutzer-orientierte KI-Module
      // -----------------------------------------------------------------------
      {
        id: 'ocr-regression',
        name: 'OCR Regression',
        href: '/ai/ocr-regression',
        description: 'Regressions-Tests & Ground Truth',
        purpose: 'Regressions-Tests fuer die OCR-Pipeline ausfuehren. Zeigt Pass/Fail pro Ground-Truth Session, Diff-Details und Verlauf vergangener Laeufe.',
        audience: ['Entwickler', 'QA'],
        subgroup: 'KI-Werkzeuge',
      },
      {
        id: 'ocr-ground-truth',
        name: 'Ground Truth Review',
        href: '/ai/ocr-ground-truth',
        description: 'Ground Truth pruefen & markieren',
        purpose: 'Effiziente Massenpruefung von OCR-Sessions. Split-View mit Confidence-Highlighting, Quick-Accept und Batch-Markierung als Ground Truth.',
        audience: ['Entwickler', 'QA'],
        subgroup: 'KI-Werkzeuge',
      },
      {
        id: 'agents',
        name: 'Agent Management',
        href: '/ai/agents',
        description: 'Multi-Agent System & SOUL-Editor',
        purpose: 'Verwaltung des Multi-Agent-Systems. Bearbeiten Sie Agent-Persoenlichkeiten (SOUL-Files), ueberwachen Sie Sessions und analysieren Sie Agent-Statistiken. Architektur-Dokumentation fuer Entwickler.',
        audience: ['Entwickler', 'Lehrer', 'Admins'],
        subgroup: 'KI-Anwendungen',
      },
    ],
  },
  // =========================================================================
  // Bildung & Schule
  // =========================================================================
  {
    id: 'education',
    name: 'Bildung & Schule',
    icon: 'graduation',
    color: '#3b82f6', // Blue
    colorClass: 'education',
    description: 'Bildungsquellen & Lehrplaene',
    modules: [
      {
        id: 'edu-search',
        name: 'Education Search',
        href: '/education/edu-search',
        description: 'Bildungsquellen & Crawler',
        purpose: 'Verwalten Sie Bildungsquellen und konfigurieren Sie Crawler fuer neue Inhalte.',
        audience: ['Content Manager'],
        oldAdminPath: '/admin/edu-search',
      },
      {
        id: 'zeugnisse-crawler',
        name: 'Zeugnisse-Crawler',
        href: '/education/zeugnisse-crawler',
        description: 'Zeugnis-Daten',
        purpose: 'Verwalten Sie gecrawlte Zeugnis-Strukturen und -Formate.',
        audience: ['Entwickler'],
        oldAdminPath: '/admin/zeugnisse-crawler',
      },
      {
        id: 'abitur-archiv',
        name: 'Abitur-Archiv',
        href: '/education/abitur-archiv',
        description: 'Zentralabitur-Materialien 2021-2025',
        purpose: 'Durchsuchen und filtern Sie Abitur-Aufgaben und Erwartungshorizonte. Themensuche mit semantischer Suche via RAG. Integration mit Klausur-Korrektur fuer schnelle Vorlagen-Nutzung.',
        audience: ['Lehrer', 'Entwickler'],
      },
      {
        id: 'klausur-korrektur',
        name: 'Klausur-Korrektur',
        href: '/education/klausur-korrektur',
        description: 'Abitur-Korrektur mit KI',
        purpose: 'KI-gestuetzte Korrektur von Abitur- und Vorabitur-Klausuren. Nutzt die RAG-Pipeline fuer Erwartungshorizont-Vorschlaege.',
        audience: ['Lehrer', 'Entwickler'],
        oldAdminPath: '/admin/klausur-korrektur',
      },
    ],
  },
  // =========================================================================
  // Website
  // =========================================================================
  {
    id: 'website',
    name: 'Website',
    icon: 'globe',
    color: '#0ea5e9', // Sky-500
    colorClass: 'website',
    description: 'Website Content & Management',
    modules: [
      {
        id: 'uebersetzungen',
        name: 'Uebersetzungen',
        href: '/website/uebersetzungen',
        description: 'Website Content & Sprachen',
        purpose: 'Verwalten Sie Website-Inhalte und Uebersetzungen.',
        audience: ['Content Manager'],
        oldAdminPath: '/admin/content',
      },
      {
        id: 'manager',
        name: 'Website Manager',
        href: '/website/manager',
        description: 'CMS Dashboard',
        purpose: 'Visuelles CMS-Dashboard fuer die BreakPilot Website. Alle Sektionen bearbeiten mit Live-Preview.',
        audience: ['Content Manager', 'Entwickler'],
      },
    ],
  },
  // =========================================================================
  // SDK Dokumentation
  // =========================================================================
  {
    id: 'sdk-docs',
    name: 'SDK Dokumentation',
    icon: 'code-2',
    color: '#06b6d4', // Cyan
    colorClass: 'sdk-docs',
    description: 'Consent SDK Dokumentation & Integration',
    modules: [
      {
        id: 'consent-sdk',
        name: 'Consent SDK',
        href: '/developers/sdk/consent',
        description: 'DSGVO/TTDSG-konformes Consent Management',
        purpose: 'Vollstaendige Dokumentation des Consent SDK fuer Web, PWA und Mobile Apps. Inklusive Framework-Integrationen (React, Vue, Angular) und Mobile SDKs (iOS, Android, Flutter).',
        audience: ['Entwickler', 'Frontend-Entwickler', 'Mobile-Entwickler'],
        gdprArticles: ['Art. 6', 'Art. 7', 'Art. 13', 'Art. 14', 'Art. 17', 'Art. 20'],
      },
      {
        id: 'sdk-installation',
        name: 'Installation',
        href: '/developers/sdk/consent/installation',
        description: 'SDK Installation & Setup',
        purpose: 'Schritt-fuer-Schritt Anleitung zur Installation des Consent SDK in verschiedenen Umgebungen.',
        audience: ['Entwickler'],
      },
      {
        id: 'sdk-frameworks',
        name: 'Frameworks',
        href: '/developers/sdk/consent/frameworks',
        description: 'React, Vue, Angular Integration',
        purpose: 'Framework-spezifische Integrationen mit Hooks, Composables und Services.',
        audience: ['Frontend-Entwickler'],
      },
      {
        id: 'sdk-mobile',
        name: 'Mobile SDKs',
        href: '/developers/sdk/consent/mobile',
        description: 'iOS, Android, Flutter',
        purpose: 'Native Mobile SDKs fuer iOS (Swift), Android (Kotlin) und Flutter (Dart).',
        audience: ['Mobile-Entwickler'],
      },
      {
        id: 'sdk-api',
        name: 'API Referenz',
        href: '/developers/sdk/consent/api-reference',
        description: 'Vollstaendige API-Dokumentation',
        purpose: 'Detaillierte Dokumentation aller Methoden, Konfigurationsoptionen und Events.',
        audience: ['Entwickler'],
      },
      {
        id: 'sdk-security',
        name: 'Sicherheit',
        href: '/developers/sdk/consent/security',
        description: 'Security Best Practices',
        purpose: 'Sicherheits-Features, DSGVO/TTDSG Compliance-Hinweise und Best Practices.',
        audience: ['Entwickler', 'DSB', 'Security'],
        gdprArticles: ['Art. 6', 'Art. 7', '§ 25 TTDSG'],
      },
    ],
  },
]

// Meta modules (always visible)
export const metaModules: NavModule[] = [
  {
    id: 'dashboard',
    name: 'Dashboard',
    href: '/dashboard',
    description: 'Uebersicht & Statistiken',
    purpose: 'Zentrale Uebersicht ueber alle Systeme mit wichtigen Kennzahlen.',
    audience: ['Alle'],
    oldAdminPath: '/admin',
  },
  {
    id: 'architecture',
    name: 'Architektur',
    href: '/architecture',
    description: 'Backend-Module & Datenfluss',
    purpose: 'Uebersicht aller Backend-Module und deren Verbindung zum Frontend. Essentiell fuer Migration und Audit.',
    audience: ['Entwickler', 'DevOps', 'Auditoren', 'Manager'],
  },
  {
    id: 'onboarding',
    name: 'Onboarding',
    href: '/onboarding',
    description: 'Lern-Wizards',
    purpose: 'Gefuehrte Tutorials fuer neue Benutzer.',
    audience: ['Alle'],
    oldAdminPath: '/admin/onboarding',
  },
  {
    id: 'backlog',
    name: 'Production Backlog',
    href: '/backlog',
    description: 'Go-Live Checkliste',
    purpose: 'Verfolgen Sie den Fortschritt zum Production-Launch.',
    audience: ['Entwickler', 'Manager'],
    oldAdminPath: '/admin/backlog',
  },
  {
    id: 'rbac',
    name: 'RBAC',
    href: '/rbac',
    description: 'Rollen & Berechtigungen',
    purpose: 'Verwalten Sie Benutzerrollen und Zugriffsrechte.',
    audience: ['Admins', 'DSB'],
    oldAdminPath: '/admin/rbac',
  },
]

// Helper function to get category by ID
export function getCategoryById(id: CategoryId): NavCategory | undefined {
  return navigation.find(cat => cat.id === id)
}

// Helper function to get module by href
export function getModuleByHref(href: string): { category: NavCategory; module: NavModule } | undefined {
  for (const category of navigation) {
    const module = category.modules.find(m => m.href === href)
    if (module) {
      return { category, module }
    }
  }
  return undefined
}

// Helper function to get all modules flat
export function getAllModules(): NavModule[] {
  return [...navigation.flatMap(cat => cat.modules), ...metaModules]
}
