synops/docs/features/live_ai.md
vegard 0a467066ba Synops v2: arkitektur, retninger og dokumentasjon
Nystart basert på arkitektonisk innsikt fra Sidelinja v1.
Koden er ny, visjon og primitiver er validert gjennom tidligere arbeid.

Inneholder:
- Komplett arkitekturdokumentasjon (docs/arkitektur.md)
- 6 vedtatte retninger (docs/retninger/)
- Alle concepts, features, proposals og erfaringer fra v1
- Server-oppsett og drift (docs/setup/)
- LiteLLM-konfigurasjon (API-nøkler via env)
- Editor.svelte referanse fra v1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 06:43:08 +01:00

66 lines
3.1 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` inn i SpacetimeDB.
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 på LiveKit-rommet i SpacetimeDB og synkes til alle klienter i rommet.
## 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.
* Alt er workspace-scopet.