From d4d43dfcd2a7a103e58f6bd9367ade40ad45e928 Mon Sep 17 00:00:00 2001 From: vegard Date: Mon, 16 Mar 2026 15:03:04 +0100 Subject: [PATCH] Fiks: AI-worker oppdaterer PG body direkte, SpacetimeDB er best-effort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Frontend bruker PG-polling i prod (VITE_SPACETIMEDB_URL ikke satt). Meldinger finnes bare i PG, ikke i SpacetimeDB — worker feilet ved STDB-oppdatering og fullførte aldri jobben. Nå: STDB-oppdatering er best-effort (warn ved feil), PG body oppdateres alltid direkte som fallback. Co-Authored-By: Claude Opus 4.6 --- worker/src/handlers/ai_text_process.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/worker/src/handlers/ai_text_process.rs b/worker/src/handlers/ai_text_process.rs index 1919214..c834e01 100644 --- a/worker/src/handlers/ai_text_process.rs +++ b/worker/src/handlers/ai_text_process.rs @@ -245,11 +245,19 @@ impl AiTextProcessHandler { .await .context("Feil ved oppdatering av metadata")?; - // 9. Oppdater SpacetimeDB — dette er primær-kanalen til frontend. - // Gjøres ETTER PG-metadata slik at enrichMessageFromPg finner fersk data. - self.update_spacetimedb(&message_id, workspace_id, &ai_resp.content) + // 9. Oppdater SpacetimeDB + PG body. + // SpacetimeDB er primær når frontend bruker sanntid, men meldingen + // kan også være opprettet via PG-polling — da finnes den ikke i STDB. + if let Err(e) = self.update_spacetimedb(&message_id, workspace_id, &ai_resp.content).await { + warn!(message_id = %message_id, error = %e, "SpacetimeDB-oppdatering feilet, oppdaterer PG direkte"); + } + // Oppdater alltid PG body som fallback (sync ville gjort dette, men kan ta tid) + sqlx::query("UPDATE messages SET body = $1, edited_at = now() WHERE id = $2") + .bind(&ai_resp.content) + .bind(message_id) + .execute(pool) .await - .context("Kunne ikke oppdatere SpacetimeDB med AI-resultat")?; + .context("Feil ved oppdatering av body i PG")?; // 10. Logg tokenforbruk til ai_usage_log sqlx::query(