server/docs/features/ai_research_klipper.md

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

  1. 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").
  2. Prosessering (Jobbkø + OpenRouter):
    • Backend mottar teksten og oppretter en research_clip-jobb i jobbkøen (se docs/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": ["..."] }
  3. 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.
  4. 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".