Fixed min. required example for edit.
parent
810827e0bb
commit
be165144ad
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue