SpacetimeDB er nå helt fjernet fra Synops. Sanntid håndteres av PG LISTEN/NOTIFY + WebSocket i portvokteren (maskinrommet). Kode fjernet: - spacetimedb/ Rust-modul og spacetime.json - maskinrommet/src/stdb.rs (HTTP-klient for STDB-reducers) - frontend module_bindings/ (23 auto-genererte filer) - spacetimedb npm-avhengighet fra package.json - scripts/test-sanntid.sh (testet STDB-flyt) Infrastruktur: - Docker-container stoppet og fjernet fra docker-compose.yml - Caddy: fjernet /spacetime/* reverse proxy - maskinrommet-env.sh: fjernet STDB_IP og SPACETIMEDB_*-variabler - .env.example: fjernet SpacetimeDB-seksjoner Dokumentasjon oppdatert: - CLAUDE.md: stack, lagmodell, kjerneprinsipper, driftsmodell - docs/arkitektur.md: skrivestien, lesestien, datalag, teknologivalg - docs/retninger/datalaget.md: migrasjonshistorikk, status "fjernet" - 37 andre docs oppdatert (features, concepts, infra, ops, retninger) - Alle kode-kommentarer med STDB-referanser oppdatert Verifisert: maskinrommet bygger og starter OK, frontend bygger OK, helsesjekk returnerer 200. Caddy reloadet.
66 lines
3.2 KiB
Markdown
66 lines
3.2 KiB
Markdown
# Feature: Live AI (Faktoid-oppslag & Referent)
|
|
**Filsti:** `docs/features/live_ai.md`
|
|
|
|
## 1. Konsept
|
|
AI-drevet analyse av sanntids transkripsjon. Opererer i to moduser med samme underliggende pipeline (Whisper → NER → handling), men ulik output.
|
|
|
|
## 2. Studio-modus: Faktoid-oppslag
|
|
Brukes i Studioet (se `docs/concepts/studioet.md`). En "virtuell co-host" som dytter relevante faktoider til programlederne i sanntid.
|
|
|
|
### 2.1 Dataflyt
|
|
1. Live transkripsjon (se `docs/features/live_transkripsjon.md`) leverer tekst-chunks.
|
|
2. Rust-tjenesten analyserer for egennavn (Named Entity Recognition).
|
|
3. Lynraskt oppslag i PostgreSQL: `SELECT * FROM factoids JOIN actors... WHERE actor.name = $1`.
|
|
4. Treff dytter `LiveFactoidEvent` via WebSocket til frontend.
|
|
5. SvelteKit-studio viser faktoiden lydløst i en egen boks.
|
|
|
|
### 2.2 Lagring
|
|
Live-transkripsjonsloggen er flyktig (TTL 30 dager):
|
|
|
|
```sql
|
|
live_transcription_log (
|
|
id SERIAL,
|
|
session_id UUID,
|
|
chunk_timestamp TIMESTAMPTZ,
|
|
chunk_text TEXT,
|
|
matched_entities TEXT[],
|
|
pushed_factoids UUID[],
|
|
created_at TIMESTAMPTZ DEFAULT now()
|
|
)
|
|
```
|
|
|
|
En nattlig jobbkø-jobb sletter rader eldre enn TTL.
|
|
|
|
## 3. Møte-modus: AI-Referent
|
|
Brukes i Møterommet (se `docs/concepts/møterommet.md`). Genererer referat og action points.
|
|
|
|
### 3.1 Dataflyt
|
|
1. **Under møtet:** Whisper transkriberer i chunks. Aha-markører fra deltakerne lagres med tidsstempler.
|
|
2. **Ved møteslutt:** En `meeting_summarize`-jobb opprettes i jobbkøen (se `docs/infra/jobbkø.md`).
|
|
3. Rust-worker sender transkripsjonen + Aha-markører til AI Gateway (`sidelinja/rutine`) med instruksjon om å generere:
|
|
* Referat (strukturert Markdown)
|
|
* Action points (foreslåtte Kanban-kort)
|
|
* Identifiserte `#Temaer` og `@Aktører`
|
|
4. Referatet lagres som melding i relevant Tema-chat. Foreslåtte Kanban-kort vises for godkjenning.
|
|
5. `graph_edges` opprettes automatisk mellom møtesegmenter og identifiserte Temaer/Aktører.
|
|
|
|
### 3.2 Off-the-record
|
|
Når off-the-record er aktivt, stopper Whisper-strømmen og ingen data lagres. Visuell indikator i alle deltakeres grensesnitt. Transkripsjonen får et gap i tidslinja.
|
|
|
|
## 4. Kill Switch
|
|
Studio-modus har en **kill switch** — en synlig "Stopp AI"-knapp i studio-grensesnittet som umiddelbart:
|
|
1. Stopper NER-analyse av nye chunks
|
|
2. Skjuler faktoid-boksen
|
|
3. Logger tidspunkt og grunn (manuelt felt, valgfritt)
|
|
|
|
Nødvendig fordi AI-en kan dytte feil eller irrelevante faktoider under live innspilling. Programlederen må kunne slå den av uten å forlate studio-viewet.
|
|
|
|
Kill switch-status (`ai_enabled: bool`) lagres i kommunikasjonsnoden metadata i PG og synkes til alle klienter via WebSocket.
|
|
|
|
## 5. Instruks for Claude Code
|
|
* Begge moduser deler samme Whisper-pipeline — ikke dupliser transkripsjonskode.
|
|
* Studio-modus krever lav latens — hold NER-oppslaget raskt (indekserte spørringer).
|
|
* Møte-modus er asynkron — prosessér via jobbkøen etter møteslutt.
|
|
* All AI-kode peker på `http://ai-gateway:4000/v1`, aldri direkte til leverandør.
|
|
* Kill switch skal alltid være tilgjengelig i studio-modus — default: AI aktivert.
|
|
* Tilgang styres via `node_access`-matrisen.
|