Fixed min. required example for edit.

pull/110/head
s8613 2025-07-01 19:09:48 +02:00
parent 810827e0bb
commit be165144ad
1 changed files with 67 additions and 53 deletions

View File

@ -73,75 +73,85 @@ export function KPIForm({
setSnackbarMessage("Name ist erforderlich"); setSnackbarMessage("Name ist erforderlich");
setSnackbarSeverity("error"); setSnackbarSeverity("error");
setSnackbarOpen(true); setSnackbarOpen(true);
return; return;
} }
if (!formData.examples || formData.examples.length === 0) { if (mode === "add") {
setSnackbarMessage("Mindestens ein Beispielsatz ist erforderlich"); if (!formData.examples || formData.examples.length === 0) {
setSnackbarSeverity("error"); setSnackbarMessage("Mindestens ein Beispielsatz ist erforderlich");
setSnackbarOpen(true); setSnackbarSeverity("error");
return; setSnackbarOpen(true);
} return;
}
const newExamples = formData.examples.filter( const newExamples = formData.examples.filter(
(ex) => ex.sentence?.trim() && ex.value?.trim(), (ex) => ex.sentence?.trim() && ex.value?.trim(),
);
if (newExamples.length === 0) {
setSnackbarMessage(
"Mindestens ein vollständiger Beispielsatz ist erforderlich.",
); );
setSnackbarSeverity("error");
setSnackbarOpen(true);
return;
}
for (const ex of newExamples) { if (newExamples.length === 0) {
if (!ex.sentence?.trim() || !ex.value?.trim()) { setSnackbarMessage(
setSnackbarMessage("Alle Beispielsätze müssen vollständig sein."); "Mindestens ein vollständiger Beispielsatz ist erforderlich.",
);
setSnackbarSeverity("error"); setSnackbarSeverity("error");
setSnackbarOpen(true); setSnackbarOpen(true);
return; return;
} }
} }
const newExamples = (formData.examples || []).filter(
(ex) => ex.sentence?.trim() && ex.value?.trim(),
);
if (formData.examples && formData.examples.length > 0) {
for (const ex of formData.examples) {
if (!ex.sentence?.trim() && !ex.value?.trim()) continue;
if (!ex.sentence?.trim() || !ex.value?.trim()) {
setSnackbarMessage("Alle Beispielsätze müssen vollständig sein oder leer gelassen werden.");
setSnackbarSeverity("error");
setSnackbarOpen(true);
return;
}
}
}
setIsSaving(true); setIsSaving(true);
try { try {
const spacyEntries = generateSpacyEntries({ if (newExamples.length > 0) {
...formData, const spacyEntries = generateSpacyEntries({
examples: newExamples, ...formData,
}); examples: newExamples,
});
// Für jeden einzelnen Beispielsatz: // Für jeden einzelnen Beispielsatz:
for (const entry of spacyEntries) { for (const entry of spacyEntries) {
// im localStorage speichern (zum Debuggen oder Vorschau) // im localStorage speichern (zum Debuggen oder Vorschau)
const stored = localStorage.getItem("spacyData"); const stored = localStorage.getItem("spacyData");
const existingData = stored ? JSON.parse(stored) : []; const existingData = stored ? JSON.parse(stored) : [];
const updated = [...existingData, entry]; const updated = [...existingData, entry];
localStorage.setItem("spacyData", JSON.stringify(updated)); localStorage.setItem("spacyData", JSON.stringify(updated));
// POST Request an das Flask-Backend // POST Request an das Flask-Backend
const response = await fetch( const response = await fetch(
`${API_HOST}/api/spacy/append-training-entry`, `${API_HOST}/api/spacy/append-training-entry`,
{ {
method: "POST", method: "POST",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
},
body: JSON.stringify(entry),
}, },
body: JSON.stringify(entry),
},
);
const data = await response.json();
if (!response.ok) {
throw new Error(
data.error || "Fehler beim Aufruf von append-training-entry",
); );
}
console.log("SpaCy-Eintrag gespeichert:", data); const data = await response.json();
if (!response.ok) {
throw new Error(
data.error || "Fehler beim Aufruf von append-training-entry",
);
}
console.log("SpaCy-Eintrag gespeichert:", data);
}
} }
const allExamples = const allExamples =
@ -167,9 +177,13 @@ export function KPIForm({
})); }));
} }
setSnackbarMessage( const successMessage = newExamples.length > 0
"Beispielsätze gespeichert. Jetzt auf -Neu trainieren- klicken oder weitere Kennzahlen hinzufügen.", ? "Beispielsätze gespeichert. Jetzt auf -Neu trainieren- klicken oder weitere Kennzahlen hinzufügen."
); : mode === "edit"
? "Kennzahl erfolgreich aktualisiert."
: "Kennzahl erfolgreich erstellt.";
setSnackbarMessage(successMessage);
setSnackbarSeverity("success"); setSnackbarSeverity("success");
setSnackbarOpen(true); setSnackbarOpen(true);
} catch (e: any) { } catch (e: any) {