Fiks: AI-worker oppdaterer PG body direkte, SpacetimeDB er best-effort
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 <noreply@anthropic.com>
This commit is contained in:
parent
2ffcf96be4
commit
d4d43dfcd2
1 changed files with 12 additions and 4 deletions
|
|
@ -245,11 +245,19 @@ impl AiTextProcessHandler {
|
||||||
.await
|
.await
|
||||||
.context("Feil ved oppdatering av metadata")?;
|
.context("Feil ved oppdatering av metadata")?;
|
||||||
|
|
||||||
// 9. Oppdater SpacetimeDB — dette er primær-kanalen til frontend.
|
// 9. Oppdater SpacetimeDB + PG body.
|
||||||
// Gjøres ETTER PG-metadata slik at enrichMessageFromPg finner fersk data.
|
// SpacetimeDB er primær når frontend bruker sanntid, men meldingen
|
||||||
self.update_spacetimedb(&message_id, workspace_id, &ai_resp.content)
|
// 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
|
.await
|
||||||
.context("Kunne ikke oppdatere SpacetimeDB med AI-resultat")?;
|
.context("Feil ved oppdatering av body i PG")?;
|
||||||
|
|
||||||
// 10. Logg tokenforbruk til ai_usage_log
|
// 10. Logg tokenforbruk til ai_usage_log
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue