/**
 * SDK Flow — Shared Types and Package Metadata
 */

export interface SDKFlowStep {
  id: string
  name: string
  nameShort: string
  package: 'vorbereitung' | 'analyse' | 'dokumentation' | 'rechtliche-texte' | 'betrieb'
  seq: number
  checkpointId?: string
  checkpointType?: 'REQUIRED' | 'RECOMMENDED' | 'OPTIONAL' | 'CONDITIONAL'
  checkpointReviewer?: 'NONE' | 'DSB' | 'LEGAL'

  // Beschreibung
  description: string
  descriptionLong: string
  legalBasis?: string

  // Datenfluss
  inputs: string[]
  outputs: string[]
  prerequisiteSteps: string[]

  // Infrastruktur
  dbTables: string[]
  dbMode: 'read' | 'write' | 'read/write' | 'none'
  ragCollections: string[]
  ragPurpose?: string

  // Generierung
  generates?: string[]
  isOptional?: boolean
  url: string

  /**
   * Fertigstellungsgrad in Prozent (0–100).
   * Nur für Betrieb-Module gesetzt (außer academy/training).
   * Berechnung: Frontend-Reifegrad + Backend-Persistenz + API-Abdeckung.
   */
  completion?: number
}

export const FLOW_PACKAGES = {
  vorbereitung: {
    name: 'Vorbereitung',
    nameShort: 'Vorb.',
    icon: '🎯',
    color: { bg: '#dbeafe', border: '#3b82f6', text: '#1e40af' },
  },
  analyse: {
    name: 'Analyse',
    nameShort: 'Analyse',
    icon: '🔍',
    color: { bg: '#fef3c7', border: '#f59e0b', text: '#92400e' },
  },
  dokumentation: {
    name: 'Dokumentation',
    nameShort: 'Doku',
    icon: '📋',
    color: { bg: '#ede9fe', border: '#7c3aed', text: '#5b21b6' },
  },
  'rechtliche-texte': {
    name: 'Rechtliche Texte',
    nameShort: 'Legal',
    icon: '📝',
    color: { bg: '#d1fae5', border: '#10b981', text: '#065f46' },
  },
  betrieb: {
    name: 'Betrieb',
    nameShort: 'Betrieb',
    icon: '⚙️',
    color: { bg: '#f1f5f9', border: '#64748b', text: '#334155' },
  },
} as const
