UI-003: show prediction evaluation feedback

This commit is contained in:
2026-06-14 15:38:11 +02:00
parent 87ae051238
commit 1c5eab14b6
4 changed files with 26 additions and 5 deletions

View File

@@ -225,7 +225,7 @@ async function loadConfiguredActuators() {
}
}
async function showActuator(actuatorId) {
async function showActuator(actuatorId, evaluationMessage = "") {
currentActuatorId = actuatorId;
const box = document.getElementById("actuator-detail");
try {
@@ -273,7 +273,9 @@ async function showActuator(actuatorId) {
<p><strong>Letztes Training:</strong> ${escapeHtml(record.behavior.last_trained_at || "noch nicht")}</p>
<p><strong>Was noch passiert:</strong> ${escapeHtml(record.behavior.reason)}</p>
${activationButton}
<button class="secondary" onclick="evaluateActuator('${escapeHtml(record.actuator_entity_id)}')">Vorhersage jetzt prüfen</button>
<button class="secondary" onclick="evaluateActuator('${escapeHtml(record.actuator_entity_id)}')">Aktuelle Situation auswerten</button>
<p class="muted">Die Prüfung simuliert keinen Sensorwechsel und schaltet keinen Aktor.</p>
${evaluationMessage ? `<p class="ok">${escapeHtml(evaluationMessage)}</p>` : ""}
</div>
</div>
<h3>Was SillyHome aktuell vorhersagt</h3>
@@ -290,9 +292,18 @@ async function showActuator(actuatorId) {
async function evaluateActuator(actuatorId) {
try {
await api(`v1/actuators/${encodeURIComponent(actuatorId)}/evaluate`, {method: "POST"});
const record = await api(
`v1/actuators/${encodeURIComponent(actuatorId)}/evaluate`,
{method: "POST"},
);
const checkedAt = new Date(
record.behavior.last_evaluated_at || Date.now(),
).toLocaleString("de-DE");
const message = record.behavior.prediction
? `Prüfung ${checkedAt}: ${record.behavior.prediction.target_state} mit ${Math.round(record.behavior.prediction.confidence * 100)} % vorhergesagt.`
: `Prüfung ${checkedAt}: Kein frischer passender Sensorwechsel erkannt; aktuell ist keine Aktion fällig.`;
await loadConfiguredActuators();
await showActuator(actuatorId);
await showActuator(actuatorId, message);
} catch (error) {
alert(error.message);
}