Grunnleggende arkitekturbeslutninger tatt og dokumentert: - Alt er noder (brukere, team, innhold, mediefiler, samlings-noder) - Edges definerer hva en node er (freeform typer, metadata i JSONB) - Materialisert tilgangsmatrise (node_access) erstatter workspace-RLS - Visibility (hidden/discoverable/readable/open) på noder - Aliaser via usynlige system-edges - Maskinrommet eier all skriving (SpacetimeDB først, PG asynk) - SpacetimeDB holder hele grafen, PG er persistent backup - Node- og edge-skjema spesifisert (docs/primitiver/) Fjernet workspace-konseptet fra hele dokumentasjonen (~40 filer). Fem retninger besluttet, én åpen (rom, ikke forum). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.2 KiB
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
- Live transkripsjon (se
docs/features/live_transkripsjon.md) leverer tekst-chunks. - Rust-tjenesten analyserer for egennavn (Named Entity Recognition).
- Lynraskt oppslag i PostgreSQL:
SELECT * FROM factoids JOIN actors... WHERE actor.name = $1. - Treff dytter
LiveFactoidEventinn i SpacetimeDB. - SvelteKit-studio viser faktoiden lydløst i en egen boks.
2.2 Lagring
Live-transkripsjonsloggen er flyktig (TTL 30 dager):
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
- Under møtet: Whisper transkriberer i chunks. Aha-markører fra deltakerne lagres med tidsstempler.
- Ved møteslutt: En
meeting_summarize-jobb opprettes i jobbkøen (sedocs/infra/jobbkø.md). - 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
#Temaerog@Aktører
- Referatet lagres som melding i relevant Tema-chat. Foreslåtte Kanban-kort vises for godkjenning.
graph_edgesopprettes 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:
- Stopper NER-analyse av nye chunks
- Skjuler faktoid-boksen
- 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.
- Tilgang styres via
node_access-matrisen.