+
Neue Produktionslinie erstellen
+
+
+ {/* Stations */}
+
+
+ Stationen (Projekte zuordnen)
+ + Station hinzufuegen
+
+ {selectedStations.length === 0 && (
+
Noch keine Stationen. Klicken Sie "+ Station hinzufuegen" um Projekte zuzuordnen.
+ )}
+
+ {selectedStations.map((s, i) => (
+
+
{i + 1}.
+
updateStation(i, 'projectId', e.target.value)}
+ className="flex-1 px-2 py-1.5 text-sm border border-gray-300 rounded-lg dark:bg-gray-600 dark:border-gray-500 dark:text-white">
+ -- Projekt waehlen --
+ {projects.map((p) => (
+ {p.machine_name} ({p.machine_type})
+ ))}
+
+
updateStation(i, 'stationType', e.target.value)}
+ className="w-40 px-2 py-1.5 text-sm border border-gray-300 rounded-lg dark:bg-gray-600 dark:border-gray-500 dark:text-white">
+ {STATION_TYPES.map((t) => (
+ {t.label}
+ ))}
+
+
removeStation(i)} className="p-1 text-red-400 hover:text-red-600">
+
+
+
+
+
+ ))}
+
+
+
+
+
+ {creating ? 'Wird erstellt...' : 'Produktionslinie erstellen'}
+
+ { setShowCreate(false); setSelectedStations([]) }}
+ className="px-4 py-2 text-gray-600 hover:bg-gray-100 rounded-lg transition-colors">
+ Abbrechen
+
+
+
+ )}
+
{/* Lines list */}
- {lines.length > 0 ? (
+ {lines.length > 0 && (
{lines.map((line) => (
-
-
- {line.name}
-
- {line.description && (
-
- {line.description}
-
- )}
-
-
-
-
-
- {line.station_count} Stationen
-
-
- Aktualisiert: {new Date(line.updated_at || line.created_at).toLocaleDateString('de-DE')}
-
+
+
{line.name}
+ {line.description &&
{line.description}
}
+
+ {line.station_count || 0} Stationen
+ Aktualisiert: {new Date(line.updated_at || line.created_at).toLocaleDateString('de-DE')}
))}
- ) : (
+ )}
+
+ {lines.length === 0 && !showCreate && (
-
+
-
- Noch keine Produktionslinien vorhanden
-
-
+
Noch keine Produktionslinien
+
Produktionslinien verketten mehrere CE-Projekte zu einer Fertigungsstrasse.
- Sie sehen auf einen Blick den Risikostatus aller Stationen und koennen
- Massnahmen priorisieren.
-
+
{ setShowCreate(true); addStation() }}
+ className="mt-6 px-6 py-3 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors font-medium">
Erste Produktionslinie erstellen
-
+
)}
diff --git a/admin-compliance/e2e/test-results/.last-run.json b/admin-compliance/e2e/test-results/.last-run.json
index cbcc1fb..5fca3f8 100644
--- a/admin-compliance/e2e/test-results/.last-run.json
+++ b/admin-compliance/e2e/test-results/.last-run.json
@@ -1,4 +1,4 @@
{
- "status": "passed",
+ "status": "failed",
"failedTests": []
}
\ No newline at end of file
diff --git a/ai-compliance-sdk/internal/api/handlers/iace_handler_norms.go b/ai-compliance-sdk/internal/api/handlers/iace_handler_norms.go
index 0c8cb6c..b2dc5bb 100644
--- a/ai-compliance-sdk/internal/api/handlers/iace_handler_norms.go
+++ b/ai-compliance-sdk/internal/api/handlers/iace_handler_norms.go
@@ -28,6 +28,10 @@ func (h *IACEHandler) ListNormsLibrary(c *gin.Context) {
allNorms = append(allNorms, iace.GetWoodMetalCNorms()...)
allNorms = append(allNorms, iace.GetFoodPkgCNorms()...)
allNorms = append(allNorms, iace.GetLiftMiscCNorms()...)
+ allNorms = append(allNorms, iace.GetMachiningCNorms()...)
+ allNorms = append(allNorms, iace.GetConveyorAutoCNorms()...)
+ allNorms = append(allNorms, iace.GetProcessCNorms()...)
+ allNorms = append(allNorms, iace.GetConstructionCNorms()...)
var filtered []iace.NormReference
for _, norm := range allNorms {
diff --git a/ai-compliance-sdk/internal/iace/norms_engine.go b/ai-compliance-sdk/internal/iace/norms_engine.go
index 6ef0f31..a7cb98c 100644
--- a/ai-compliance-sdk/internal/iace/norms_engine.go
+++ b/ai-compliance-sdk/internal/iace/norms_engine.go
@@ -31,6 +31,10 @@ func SuggestNorms(machineType string, hazardCategories []string, tags []string)
allNorms = append(allNorms, GetWoodMetalCNorms()...)
allNorms = append(allNorms, GetFoodPkgCNorms()...)
allNorms = append(allNorms, GetLiftMiscCNorms()...)
+ allNorms = append(allNorms, GetMachiningCNorms()...)
+ allNorms = append(allNorms, GetConveyorAutoCNorms()...)
+ allNorms = append(allNorms, GetProcessCNorms()...)
+ allNorms = append(allNorms, GetConstructionCNorms()...)
// Build lookup sets for efficient matching
hazardSet := toSet(hazardCategories)