feat(iace): Einsatzbereich / Branche — filtert branchenspezifische Patterns
Build + Deploy / build-admin-compliance (push) Successful in 2m7s
Build + Deploy / build-backend-compliance (push) Successful in 13s
Build + Deploy / build-ai-sdk (push) Successful in 55s
Build + Deploy / build-developer-portal (push) Successful in 12s
Build + Deploy / build-tts (push) Successful in 34s
Build + Deploy / build-document-crawler (push) Successful in 12s
Build + Deploy / build-dsms-gateway (push) Successful in 13s
Build + Deploy / build-dsms-node (push) Successful in 14s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 18s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 3m5s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Successful in 46s
CI / test-python-backend (push) Successful in 37s
CI / test-python-document-crawler (push) Successful in 26s
CI / test-python-dsms-gateway (push) Successful in 22s
CI / validate-canonical-controls (push) Successful in 15s
Build + Deploy / trigger-orca (push) Successful in 2m19s
Build + Deploy / build-admin-compliance (push) Successful in 2m7s
Build + Deploy / build-backend-compliance (push) Successful in 13s
Build + Deploy / build-ai-sdk (push) Successful in 55s
Build + Deploy / build-developer-portal (push) Successful in 12s
Build + Deploy / build-tts (push) Successful in 34s
Build + Deploy / build-document-crawler (push) Successful in 12s
Build + Deploy / build-dsms-gateway (push) Successful in 13s
Build + Deploy / build-dsms-node (push) Successful in 14s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 18s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 3m5s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Successful in 46s
CI / test-python-backend (push) Successful in 37s
CI / test-python-document-crawler (push) Successful in 26s
CI / test-python-dsms-gateway (push) Successful in 22s
CI / validate-canonical-controls (push) Successful in 15s
Build + Deploy / trigger-orca (push) Successful in 2m19s
Neues Feld "Einsatzbereich" auf Interview-Seite (Sektion 7) mit 15 Branchen. Pattern Engine bekommt MachineTypes aus MatchInput → branchenfremde Patterns (Medizin, Aufzug, Bau etc.) feuern nur wenn die Branche ausgewählt ist. Refactoring: iace_handler_init.go aufgeteilt in init + init_helpers (LOC-Limit). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+17
@@ -7,6 +7,7 @@ import {
|
||||
AREA_OF_USE_OPTIONS,
|
||||
OPERATING_MODE_OPTIONS,
|
||||
PERSON_GROUP_OPTIONS,
|
||||
INDUSTRY_SECTOR_OPTIONS,
|
||||
type LimitsFormData,
|
||||
} from '../_types'
|
||||
|
||||
@@ -204,6 +205,22 @@ export function LimitsFormSections({ data, onChange, prefilled }: LimitsFormSect
|
||||
rows={4}
|
||||
/>
|
||||
</SectionCard>
|
||||
|
||||
{/* Section 7: Einsatzbereich / Branche */}
|
||||
<SectionCard section={FORM_SECTIONS[6]}>
|
||||
<div className="bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-3 mb-2">
|
||||
<p className="text-xs text-blue-700 dark:text-blue-300">
|
||||
Die Branchenauswahl steuert welche branchenspezifischen Gefaehrdungsmuster (z.B. Medizintechnik, Lebensmittel, Aufzuege) bei der Risikoanalyse beruecksichtigt werden. Branchenfremde Muster werden automatisch ausgeblendet.
|
||||
</p>
|
||||
</div>
|
||||
<CheckboxGroup
|
||||
label="Einsatzbereiche"
|
||||
values={data.industry_sectors}
|
||||
onChange={(v) => onChange('industry_sectors', v)}
|
||||
options={INDUSTRY_SECTOR_OPTIONS}
|
||||
helpText="Waehlen Sie alle zutreffenden Branchen. Bei Mehrfachauswahl werden alle relevanten Gefaehrdungen beruecksichtigt."
|
||||
/>
|
||||
</SectionCard>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -35,6 +35,9 @@ export interface LimitsFormData {
|
||||
// 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 = {
|
||||
@@ -59,6 +62,7 @@ export const EMPTY_LIMITS_FORM: LimitsFormData = {
|
||||
pneumatic_hydraulic_interfaces: '',
|
||||
person_groups: [],
|
||||
qualification_requirements: '',
|
||||
industry_sectors: [],
|
||||
}
|
||||
|
||||
export const AREA_OF_USE_OPTIONS = [
|
||||
@@ -77,6 +81,43 @@ export const OPERATING_MODE_OPTIONS = [
|
||||
'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',
|
||||
@@ -93,7 +134,7 @@ export interface FormSection {
|
||||
number: number
|
||||
title: string
|
||||
description: string
|
||||
icon: 'clipboard' | 'target' | 'alert' | 'box' | 'link' | 'users'
|
||||
icon: 'clipboard' | 'target' | 'alert' | 'box' | 'link' | 'users' | 'briefcase'
|
||||
}
|
||||
|
||||
export const FORM_SECTIONS: FormSection[] = [
|
||||
@@ -139,4 +180,11 @@ export const FORM_SECTIONS: FormSection[] = [
|
||||
description: 'Personengruppen und Qualifikationsanforderungen',
|
||||
icon: 'users',
|
||||
},
|
||||
{
|
||||
id: 'industry_sector',
|
||||
number: 7,
|
||||
title: 'Einsatzbereich / Branche',
|
||||
description: 'Branche bestimmt welche branchenspezifischen Gefaehrdungen beruecksichtigt werden',
|
||||
icon: 'briefcase',
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user