1.6 KiB
1.6 KiB
Feature Spec: AI Research-Klipper ("Ctrl+A Workflow")
Filsti: docs/features/ai_research_klipper.md
1. Konsept
Et internt redaksjonelt verktøy for å samle inn research fra nettet. Programlederne limer inn uformatert tekst (ofte med menyer, annonser og støy fra "Ctrl+A"-kopiering), og en AI renser teksten og trekker ut strukturert kunnskap.
2. Arkitektur & Dataflyt
- Input (SvelteKit): En modal i grensesnittet der brukeren limer inn råtekst og valgfri kilde-URL, og knytter det til et Tema (f.eks. "Skolepolitikk").
- Prosessering (Jobbkø + OpenRouter):
- Backend mottar teksten og oppretter en
research_clip-jobb i jobbkøen (sedocs/features/jobbkø.md). Rust-workeren plukker opp jobben og sender request til OpenRouter (Claude-modell). - System Prompt: Skal instruere AI-en til å returnere JSON med følgende struktur:
{ "title": "...", "summary": ["..."], "cleaned_text": "...", "actors": ["..."], "factoids": ["..."] }
- Backend mottar teksten og oppretter en
- Lagring (PostgreSQL): Backend lagrer resultatet relasjonelt i Kunnskapsgrafen. Aktører som ikke finnes opprettes. Faktoider kobles til aktørene. Selve artikkelen knyttes til det valgte Temaet.
- Broadcast (SpacetimeDB): Når lagringen er ferdig, sendes et signal via SpacetimeDB slik at chatten/tema-visningen oppdateres hos alle innloggede brukere med et "Kort" som viser det nye sammendraget.
3. Instruks for Claude Code
- Sørg for at OpenRouter API-kallet forventer og validerer streng JSON-struktur.
- Lagringen i PostgreSQL må håndtere "upserts" for Aktører elegant, slik at vi ikke får duplikater av f.eks. "Arbeiderpartiet".