// IACE Limits & Intended Use Form Types — CE Risk Assessment Step 3
// Based on ISO 12100 Sections 5.3 (Intended Use) and 5.4 (Limits)

/** Full form data structure stored in project metadata.limits_form */
export interface LimitsFormData {
  // Section 1: Allgemeine Produktbeschreibung
  machine_designation: string
  machine_type: string
  manufacturer: string
  year_of_construction: string
  serial_number: string
  general_description: string

  // Section 2: Bestimmungsgemasse Verwendung
  intended_purpose: string
  area_of_use: string
  operating_modes: string[]
  variants: string

  // Section 3: Vorhersehbare Fehlanwendung
  foreseeable_misuses: string

  // Section 4: Grenzen der Maschine
  spatial_limits: string
  temporal_limits: string
  operating_conditions: string
  energy_supply: string

  // Section 5: Schnittstellen
  mechanical_interfaces: string
  electrical_interfaces: string
  software_interfaces: string
  pneumatic_hydraulic_interfaces: string

  // Section 6: Betroffene Personen
  person_groups: string[]
  qualification_requirements: string

  // Section 7: Einsatzbereich / Branche (fuer Pattern-Filterung)
  industry_sectors: string[]
}

export const EMPTY_LIMITS_FORM: LimitsFormData = {
  machine_designation: '',
  machine_type: '',
  manufacturer: '',
  year_of_construction: '',
  serial_number: '',
  general_description: '',
  intended_purpose: '',
  area_of_use: '',
  operating_modes: [],
  variants: '',
  foreseeable_misuses: '',
  spatial_limits: '',
  temporal_limits: '',
  operating_conditions: '',
  energy_supply: '',
  mechanical_interfaces: '',
  electrical_interfaces: '',
  software_interfaces: '',
  pneumatic_hydraulic_interfaces: '',
  person_groups: [],
  qualification_requirements: '',
  industry_sectors: [],
}

export const AREA_OF_USE_OPTIONS = [
  'Industriell',
  'Gewerblich',
  'Privat',
  'Oeffentlich',
]

export const OPERATING_MODE_OPTIONS = [
  'Automatikbetrieb',
  'Einrichtbetrieb',
  'Handbetrieb',
  'Sonderbetrieb',
  'Reinigung',
  'Wartung',
]

export const INDUSTRY_SECTOR_OPTIONS = [
  'Allgemeiner Maschinenbau',
  'Automobil / Zulieferer',
  'Robotik / Cobot',
  'Medizintechnik',
  'Lebensmittel / Getraenke',
  'Verpackung',
  'Pharma / Chemie',
  'Bau / Baumaschinen',
  'Forst / Holzbearbeitung',
  'Aufzuege / Foerdertechnik',
  'Textil',
  'Landmaschinen',
  'Druck / Papier',
  'Metall / CNC',
  'Schweissen / Oberflaechentechnik',
]

/** Maps display labels to MachineTypes for pattern engine filtering */
export const INDUSTRY_TO_MACHINE_TYPES: Record<string, string[]> = {
  'Allgemeiner Maschinenbau': ['general_industry'],
  'Automobil / Zulieferer': ['automotive'],
  'Robotik / Cobot': ['robotics_cobot', 'cobot'],
  'Medizintechnik': ['medical_device', 'infusion_pump', 'ventilator', 'patient_monitor'],
  'Lebensmittel / Getraenke': ['food_processing'],
  'Verpackung': ['packaging'],
  'Pharma / Chemie': ['chemical', 'pharmaceutical'],
  'Bau / Baumaschinen': ['construction', 'crane', 'excavator'],
  'Forst / Holzbearbeitung': ['forestry', 'woodworking', 'circular_saw'],
  'Aufzuege / Foerdertechnik': ['elevator', 'lift', 'escalator', 'conveyor'],
  'Textil': ['textile', 'spinning', 'weaving', 'finishing'],
  'Landmaschinen': ['agricultural', 'tractor', 'harvester'],
  'Druck / Papier': ['printing'],
  'Metall / CNC': ['cnc', 'metalworking', 'lathe', 'milling'],
  'Schweissen / Oberflaechentechnik': ['welding', 'surface_treatment'],
}

export const PERSON_GROUP_OPTIONS = [
  'Bedienpersonal',
  'Einrichter',
  'Wartungspersonal',
  'Reinigungspersonal',
  'Auszubildende',
  'Besucher',
  'Fremdfirmenpersonal',
]

/** Section definition for rendering collapsible form cards */
export interface FormSection {
  id: string
  number: number
  title: string
  description: string
  icon: 'clipboard' | 'target' | 'alert' | 'box' | 'link' | 'users' | 'briefcase'
}

export const FORM_SECTIONS: FormSection[] = [
  {
    id: 'product_description',
    number: 1,
    title: 'Allgemeine Produktbeschreibung',
    description: 'Grundlegende Angaben zur Maschine/Anlage',
    icon: 'clipboard',
  },
  {
    id: 'intended_use',
    number: 2,
    title: 'Bestimmungsgemasse Verwendung',
    description: 'Verwendungszweck, Einsatzbereich und Betriebsarten',
    icon: 'target',
  },
  {
    id: 'foreseeable_misuse',
    number: 3,
    title: 'Vorhersehbare Fehlanwendung',
    description: 'Vernuenftigerweise vorhersehbare Fehlanwendungen gemaess ISO 12100 Abschnitt 5.4',
    icon: 'alert',
  },
  {
    id: 'machine_limits',
    number: 4,
    title: 'Grenzen der Maschine',
    description: 'Raeumliche, zeitliche und betriebliche Grenzen',
    icon: 'box',
  },
  {
    id: 'interfaces',
    number: 5,
    title: 'Schnittstellen',
    description: 'Mechanische, elektrische, Software- und pneumatische/hydraulische Schnittstellen',
    icon: 'link',
  },
  {
    id: 'affected_persons',
    number: 6,
    title: 'Betroffene Personen',
    description: 'Personengruppen und Qualifikationsanforderungen',
    icon: 'users',
  },
  {
    id: 'industry_sector',
    number: 7,
    title: 'Einsatzbereich / Branche',
    description: 'Branche bestimmt welche branchenspezifischen Gefaehrdungen beruecksichtigt werden',
    icon: 'briefcase',
  },
]
