Fix classifier import and duplicate output

This commit is contained in:
mirivlad 2026-05-11 00:19:26 +08:00
parent 28a2f63713
commit fcee065231
2 changed files with 28 additions and 5 deletions

View File

@ -457,6 +457,18 @@
events.scrollTop = events.scrollHeight; events.scrollTop = events.scrollHeight;
} }
function eventsInclude(eventsList, type) {
return Array.isArray(eventsList) && eventsList.some((event) => event.type === type);
}
function shouldRenderImmediateResult(data) {
if (!data || !data.status) return false;
if (data.status === "completed" && eventsInclude(data.events, "task_completed")) {
return false;
}
return true;
}
async function loadRecentEvents() { async function loadRecentEvents() {
const response = await fetch("/events?limit=1000"); const response = await fetch("/events?limit=1000");
const data = await response.json(); const data = await response.json();
@ -611,8 +623,10 @@
if (data.events && Array.isArray(data.events)) { if (data.events && Array.isArray(data.events)) {
data.events.forEach(addEvent); data.events.forEach(addEvent);
} }
if (shouldRenderImmediateResult(data)) {
renderRuntimeResult(data.result, data.status); renderRuntimeResult(data.result, data.status);
} }
}
async function resolveSecret(secret) { async function resolveSecret(secret) {
if (!lastSecretRequest) { if (!lastSecretRequest) {
@ -641,8 +655,10 @@
}); });
const data = await response.json(); const data = await response.json();
data.events.forEach(addEvent); data.events.forEach(addEvent);
if (shouldRenderImmediateResult(data)) {
renderRuntimeResult(data.result, data.status); renderRuntimeResult(data.result, data.status);
} }
}
async function resolvePassword(password) { async function resolvePassword(password) {
if (!lastPasswordRequest) { if (!lastPasswordRequest) {
@ -671,8 +687,10 @@
}); });
const data = await response.json(); const data = await response.json();
data.events.forEach(addEvent); data.events.forEach(addEvent);
if (shouldRenderImmediateResult(data)) {
renderRuntimeResult(data.result, data.status); renderRuntimeResult(data.result, data.status);
} }
}
async function sendTask() { async function sendTask() {
const taskId = "web-" + Date.now(); const taskId = "web-" + Date.now();
@ -707,7 +725,9 @@
clearSecretControls(); clearSecretControls();
clearPasswordControls(); clearPasswordControls();
data.events.forEach(addEvent); data.events.forEach(addEvent);
if (shouldRenderImmediateResult(data)) {
renderRuntimeResult(data.result, data.status); renderRuntimeResult(data.result, data.status);
}
if (data.task_id) { if (data.task_id) {
attachStream(data.task_id); attachStream(data.task_id);
} }
@ -742,8 +762,10 @@
data.retry_result.events.forEach(addEvent); data.retry_result.events.forEach(addEvent);
} }
currentTaskId = data.retry_result.task_id || currentTaskId; currentTaskId = data.retry_result.task_id || currentTaskId;
if (shouldRenderImmediateResult(data.retry_result)) {
renderRuntimeResult(data.retry_result.result, data.retry_result.status); renderRuntimeResult(data.retry_result.result, data.retry_result.status);
} }
}
if (data.status !== "ok") { if (data.status !== "ok") {
addSystemMessage("Feedback", data.message || "Не удалось сохранить feedback."); addSystemMessage("Feedback", data.message || "Не удалось сохранить feedback.");
} }

View File

@ -3,6 +3,7 @@ from __future__ import annotations
import asyncio import asyncio
import json import json
import logging import logging
import re
from typing import Any from typing import Any
from app.core.contracts import ExecutionDirective from app.core.contracts import ExecutionDirective