From c32b7722937c31e1539db9ac51c4cdcca0027d3d Mon Sep 17 00:00:00 2001 From: vegard Date: Mon, 16 Mar 2026 14:47:57 +0100 Subject: [PATCH] Fiks: prompt-redigering toggle, AI-pulsering ved feil, error-status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rediger-knappen i prompt-seksjonen fungerer som Avbryt når editoren er åpen - Fjernet separat Avbryt-knapp fra prompt-editor footer - pollJob sjekker nå også 'error'-status (ikke bare completed/failed) - Worker rydder ai_processing-flagget fra metadata ved feil Co-Authored-By: Claude Opus 4.6 --- web/src/lib/blocks/ChatBlock.svelte | 2 +- web/src/routes/server-admin/ai/+page.svelte | 3 ++- worker/src/handlers/ai_text_process.rs | 30 +++++++++++++++++++-- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/web/src/lib/blocks/ChatBlock.svelte b/web/src/lib/blocks/ChatBlock.svelte index f807071..8f14ac2 100644 --- a/web/src/lib/blocks/ChatBlock.svelte +++ b/web/src/lib/blocks/ChatBlock.svelte @@ -78,7 +78,7 @@ const res = await fetch(`/api/jobs/${jobId}`); if (!res.ok) { clearInterval(interval); return; } const job = await res.json(); - if (job.status === 'completed' || job.status === 'failed') { + if (job.status === 'completed' || job.status === 'failed' || job.status === 'error') { clearInterval(interval); await chat?.refresh(); } diff --git a/web/src/routes/server-admin/ai/+page.svelte b/web/src/routes/server-admin/ai/+page.svelte index 5dfe67b..c5eb8ed 100644 --- a/web/src/routes/server-admin/ai/+page.svelte +++ b/web/src/routes/server-admin/ai/+page.svelte @@ -1187,6 +1187,8 @@ ... {:else if saved === prompt.action} OK + {:else if editingPrompt === prompt.action} + {:else} {/if} @@ -1212,7 +1214,6 @@ diff --git a/worker/src/handlers/ai_text_process.rs b/worker/src/handlers/ai_text_process.rs index 17fe4de..91dd25a 100644 --- a/worker/src/handlers/ai_text_process.rs +++ b/worker/src/handlers/ai_text_process.rs @@ -73,6 +73,34 @@ impl JobHandler for AiTextProcessHandler { .parse() .context("Ugyldig message_id UUID")?; + // Wrapper som rydder ai_processing-flagget ved feil + let result = self.handle_inner(pool, workspace_id, job_id, payload, message_id).await; + if result.is_err() { + let _ = sqlx::query( + r#" + UPDATE messages + SET metadata = COALESCE(metadata, '{}'::jsonb) - 'ai_processing' + WHERE id = $1 + "#, + ) + .bind(message_id) + .execute(pool) + .await; + } + result + } +} + +impl AiTextProcessHandler { + async fn handle_inner( + &self, + pool: &PgPool, + workspace_id: &Uuid, + job_id: &Uuid, + payload: &Value, + message_id: Uuid, + ) -> anyhow::Result> { + let action = payload .get("action") .and_then(|v| v.as_str()) @@ -262,9 +290,7 @@ impl JobHandler for AiTextProcessHandler { } }))) } -} -impl AiTextProcessHandler { /// Oppdater meldingen i SpacetimeDB via edit_message reducer, /// slik at frontend (som leser fra SpacetimeDB) ser AI-resultatet. async fn update_spacetimedb(