// ==============================================
// Types
// ==============================================

export interface TestResult {
  name: string
  description: string
  expected: string
  actual: string
  status: 'passed' | 'failed' | 'pending' | 'skipped'
  duration_ms: number
  error_message?: string
}

export interface TestCategoryResult {
  category: string
  display_name: string
  description: string
  why_important: string
  tests: TestResult[]
  passed: number
  failed: number
  total: number
  duration_ms: number
}

export interface FullTestResults {
  timestamp: string
  categories: TestCategoryResult[]
  total_passed: number
  total_failed: number
  total_tests: number
  duration_ms: number
}

export type StepStatus = 'pending' | 'active' | 'completed' | 'failed'

export interface WizardStep {
  id: string
  name: string
  icon: string
  status: StepStatus
  category?: string
}

// ==============================================
// Constants
// ==============================================

export const BACKEND_URL = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:8000'

export const INITIAL_STEPS: WizardStep[] = [
  { id: 'welcome', name: 'Willkommen', icon: '👋', status: 'pending' },
  { id: 'request-id', name: 'Request-ID', icon: '🔑', status: 'pending', category: 'request-id' },
  { id: 'security-headers', name: 'Security Headers', icon: '🛡️', status: 'pending', category: 'security-headers' },
  { id: 'rate-limiter', name: 'Rate Limiting', icon: '⏱️', status: 'pending', category: 'rate-limiter' },
  { id: 'pii-redactor', name: 'PII Redaktion', icon: '🔒', status: 'pending', category: 'pii-redactor' },
  { id: 'input-gate', name: 'Input Validierung', icon: '🚧', status: 'pending', category: 'input-gate' },
  { id: 'cors', name: 'CORS', icon: '🌐', status: 'pending', category: 'cors' },
  { id: 'summary', name: 'Zusammenfassung', icon: '📊', status: 'pending' },
]

export const EDUCATION_CONTENT: Record<string, { title: string; content: string[] }> = {
  'welcome': {
    title: 'Willkommen zum Middleware-Test-Wizard',
    content: [
      'Middleware ist die unsichtbare Schutzschicht Ihrer Anwendung. Sie verarbeitet jede Anfrage bevor sie Ihren Code erreicht - und jede Antwort bevor sie den Benutzer erreicht.',
      'In diesem Wizard testen wir alle Middleware-Komponenten und Sie lernen dabei:',
      '• Warum jede Komponente wichtig ist',
      '• Welche Angriffe sie verhindert',
      '• Wie Sie Probleme erkennen und beheben',
      'Klicken Sie auf "Starten" um den Test-Wizard zu beginnen.',
    ],
  },
  'request-id': {
    title: 'Request-ID & Distributed Tracing',
    content: [
      'Stellen Sie sich vor, ein Benutzer meldet einen Fehler. Ohne Request-ID muessen Sie Tausende von Log-Eintraegen durchsuchen. Mit Request-ID finden Sie den genauen Pfad der Anfrage durch alle Microservices in Sekunden.',
      'Request-IDs sind essentiell fuer:',
      '• Fehlersuche in verteilten Systemen',
      '• Performance-Analyse',
      '• Audit-Trails fuer Compliance',
    ],
  },
  'security-headers': {
    title: 'Security Headers - Erste Verteidigungslinie',
    content: [
      'Security Headers sind Anweisungen an den Browser, wie er Ihre Seite schuetzen soll:',
      '• X-Content-Type-Options: nosniff - Verhindert MIME-Sniffing Angriffe',
      '• X-Frame-Options: DENY - Blockiert Clickjacking-Angriffe',
      '• Content-Security-Policy - Stoppt XSS durch Whitelist erlaubter Quellen',
      '• Strict-Transport-Security - Erzwingt HTTPS',
      'OWASP empfiehlt diese Headers als Mindeststandard.',
    ],
  },
  'rate-limiter': {
    title: 'Rate Limiting - Schutz vor Ueberflutung',
    content: [
      'Ohne Rate Limiting kann ein Angreifer:',
      '• Passwort-Brute-Force durchfuehren (Millionen Versuche/Minute)',
      '• Ihre Server mit Anfragen ueberfluten (DDoS)',
      '• Teure API-Aufrufe missbrauchen',
      'BreakPilot limitiert:',
      '• 100 Anfragen/Minute pro IP (allgemein)',
      '• 20 Anfragen/Minute fuer Auth-Endpoints',
      '• 500 Anfragen/Minute pro authentifiziertem Benutzer',
    ],
  },
  'pii-redactor': {
    title: 'PII Redaktion - DSGVO Pflicht',
    content: [
      'Personenbezogene Daten in Logs sind ein DSGVO-Verstoss:',
      '• Email-Adressen: Bussgelder bis 20 Mio. EUR',
      '• IP-Adressen: Gelten als personenbezogen (EuGH-Urteil)',
      '• Telefonnummern: Direkter Personenbezug',
      'Der PII Redactor erkennt automatisch:',
      '• Email-Adressen → [EMAIL_REDACTED]',
      '• IP-Adressen → [IP_REDACTED]',
      '• Deutsche Telefonnummern → [PHONE_REDACTED]',
    ],
  },
  'input-gate': {
    title: 'Input Gate - Der Tuersteher',
    content: [
      'Das Input Gate prueft jede Anfrage bevor sie Ihren Code erreicht:',
      '• Groessenlimit: Blockiert ueberdimensionierte Payloads (DoS-Schutz)',
      '• Content-Type: Erlaubt nur erwartete Formate',
      '• Dateiendungen: Blockiert .exe, .bat, .sh Uploads',
      'Ein Angreifer, der an Ihrem Code vorbeikommt, wird hier gestoppt.',
    ],
  },
  'cors': {
    title: 'CORS - Kontrollierte Zugriffe',
    content: [
      'CORS bestimmt, welche Websites Ihre API aufrufen duerfen:',
      '• Zu offen (*): Jede Website kann Ihre API missbrauchen',
      '• Zu streng: Ihre eigene Frontend-App wird blockiert',
      'BreakPilot erlaubt nur:',
      '• https://breakpilot.app (Produktion)',
      '• http://localhost:3000 (Development)',
    ],
  },
  'summary': {
    title: 'Test-Zusammenfassung',
    content: [
      'Hier sehen Sie eine Uebersicht aller durchgefuehrten Tests:',
      '• Anzahl bestandener Tests',
      '• Fehlgeschlagene Tests mit Details',
      '• Empfehlungen zur Behebung',
    ],
  },
}
