Steg-för-steg-guide för administratörer
!RAJDAR Logotyp{ width=500px }
\newpage
En praktisk guide för att skapa och underhålla radarbilder
- Sökflödet steg för steg - Sökalternativ och inställningar - Datalagring - var sparas informationen? - Vektordatabasen och semantisk sökning
- AI-genererade sökkriterier från initiativ - Webbsökningsindikator - AI-analysflödet i detalj - Nyhetsbrevhantering - Nätverksgraf (endast superadmin) - Audit Logging - Loggvisning - Noteringar med Beslut och Åtgärder - Arkivering av initiativ - Relevanssortering - Progressiv laddning (Load More) - Beröringspunktsanalys
Denna handledning är skriven för administratörer av Radarbilden-systemet. Som administratör har du ansvar för att:
Observera: Vissa funktioner kräver superadmin-behörighet (t.ex. skapa organisationer, hantera användare, nätverksgraf). Se Avancerade funktioner för superadmin-specifika verktyg.
Adminpanel: https://app.rajdar.se/admin.html
Du behöver användaruppgifter med admin-behörighet för din organisation.
En radarbild är ett visuellt verktyg för att följa digitala trender och initiativ inom ett specifikt område. Den hjälper din organisation att:
Att skapa och underhålla en radarbild följer en strukturerad process i tre faser: UPPTÄCK - ANALYSERA - AGERA
![Se bifogad SVG-fil "Rajdarmetoden.svg" för visuell representation av metoden]
RAJDAR METODEN - UPPTÄCK-ANALYSERA-AGERA
FAS 1: UPPTÄCK (Grön)
--------------------------------------------
Radarbild
|
+-> Kategori 1, Kategori 2, ... Kategori n
|
+-> Sökkriteria 1, 2, ... n
|
+-> Sök resultat (databas)
|
v
FAS 2: ANALYSERA (Gul)
--------------------------------------------
Analys
|
+-> Initiativ 1, 2, ... n
|
+-> Dialog, Framtid, Strategi
|
v
FAS 3: AGERA
--------------------------------------------
Rapport -> Beslut och handling
Definiera och samla information
Vad:
Hur:
Resultat:
Skapa insikter och identifiera initiativ
Vad:
- Dialog: Vad diskuteras just nu? - Framtid: Vad är på gång framöver? - Strategi: Vilka strategiska implikationer finns?
Hur:
Resultat:
Kommunicera och fatta beslut
Vad:
Hur:
- Sammanfattning av alla initiativ - Tabeller sorterade per år och kategori - Trendanalyser och rekommendationer - Dialog-, framtids- och strategiperspektiv
Resultat:
Rajdarmetoden är en kontinuerlig cykel. Efter att ha delat resultaten återgår du till Fas 1 för att:
Denna sektion beskriver den rekommenderade arbetsordningen för att skapa en komplett radarbild från grunden.
Tidsåtgång: 2-4 timmar första gången, 30-60 minuter för efterföljande radarbilder
Innan du börjar i systemet, ta tid att planera:
Svara på följande frågor:
Skriv en detaljerad beskrivning (2-4 meningar) av vad ni vill bevaka.
Exempel på bra beskrivning: > "Vi vill bevaka digitala innovationer och AI-lösningar inom svensk hälso- och sjukvård, inklusive elektroniska patientjournaler, telemedicin, AI-diagnostik, automatisering av administrativa processer, samt regionala och nationella digitaliseringsinitiativ som rör vård och omsorg."
Tips:
Gör en snabb research:
Spara dessa som en lista - du kommer att använda dem senare.
Observera: Om radarbildsobjektet redan finns (t.ex. skapat av superadmin), hoppa till Steg 3.
- Namn: Ett kort, beskrivande namn (t.ex. "Digital hälsa") - Beskrivning: En översiktlig beskrivning av radarbildens syfte - Kategori: Välj relevant kategori från listan
Resultat: Du har nu en radarbild som kan innehålla flera sökkriterier.
Ett sökkriterium definierar exakt vad systemet ska leta efter och var det ska leta.
Namn:
Beskrivning:
Kategori:
Detta är en nyckelsteg! AI-genererade sökord ger mycket bättre täckning än manuella sökord.
Granska förslagen:
- Kärntermer (t.ex. "artificiell intelligens") - Synonymer (t.ex. "AI", "maskininlärning") - Relaterade begrepp (t.ex. "deep learning", "neurala nätverk") - Kontextspecifika termer (t.ex. "AI i vården", "digital diagnostik")
Välj sökord:
Rekommendation:
Extra tips:
Om AI missade viktiga termer:
Exempel på termer att lägga till manuellt:
SearXNG-webbsökning är aktiverad som standard för alla sökkriterier och kompletterar dina RSS-källor med allmänna webbsökningsresultat.
Inställning:
När avaktivera webbsökning?
Fördelar med webbsökning:
Observera: Spara INTE ännu om du vill använda AI-källdiscovery (rekommenderas).
Källdiscovery är ett kraftfullt verktyg som automatiskt hittar relevanta RSS-flöden åt dig.
Fyll i formuläret:
Kategorinamn:
Kategoribeskrivning:
Språk:
sv för svenska källor (rekommenderas för svensk offentlig sektor)en för internationella källorPrimär region:
SE för svenska källorSE/EU för både svenska och europeiska källorEU för europeiska källorMax antal källor:
Timeout (sekunder):
Vad händer under sökningen?
När sökningen är klar visas en lista med hittade källor.
För varje källa ser du:
- Relevance: Hur väl den matchar din beskrivning - Authority: Källans trovärdighet - Freshness: Uppdateringsfrekvens - Final: Sammanvägd poäng
Rekommenderad strategi:
Godkänn (relevanspoäng > 70%):
Granska (relevanspoäng 50-70%):
Avvisa (relevanspoäng < 50%):
Resultat: Du bör ha 15-30 godkända källor för ett bra sökkriterium.
Tips: Håll Källdiscovery-fliken öppen i en separat flik så du lätt kan kopiera URL:er.
I fältet "Källor/RSS-feeds":
Exempel:
https://www.socialstyrelsen.se/rss
https://www.ehalsomyndigheten.se/feed
https://www.skr.se/rss/nyheter
Tips:
- Myndighetskällor (hög trovärdighet) - Branschnyhetssajter (snabb rapportering) - Forskningsinstitutioner (djupanalys)
- Namn - Beskrivning - Kategori - Sökord (15-20 st) - Källor (10-15 st)
Grattis! Du har nu skapat ett komplett sökkriterium.
Nu är det dags att köra den första insamlingen.
Vad händer?
Förväntat resultat:
Efter första sökningen:
Om inga initiativ visas:
Efter datainsamlingen kan du köra en AI-analys för att få insikter.
Vad händer?
Efter att analysen är klar:
Analysen innehåller:
Användning:
Efter insamling och analys kan du generera en professionell rapport.
- Tidsperiod: T.ex. "2025-2030" - AI-modell: - GPT-5 för detaljerade rapporter (långsammare, dyrare) - GPT-4 för standard rapporter (snabbare, billigare) - Inkludera: Välj vilka sökkriterier som ska ingå
Rapporten innehåller:
Efter genereringen:
- Är alla initiativ korrekt kategoriserade? - Finns det uppenbara fel eller hallucinationer från AI? - Är analysen relevant och insiktsfull?
- Lägg till organisationsspecifik kontext - Ta bort irrelevanta delar - Förbättra formuleringen - Lägg till logotyper och branding
Om du vill kommunicera nya fynd till användare:
- Titel: T.ex. "Ny radarbild publicerad: Digital hälsa" - Sammanfattning: Kort beskrivning (1-2 meningar) - Innehåll: Längre text med huvudsakliga insikter (stödjer Markdown) - Status: Välj "Publicerad" - Publiceringsdatum: Dagens datum
Resultat: Nyheten visas på startsidan för alla besökare.
För att radarbilden ska hålla sig uppdaterad, schemalägg regelbundna datainsamlingar.
- Typ: "Scraping" (datainsamling) - Sökkriterium: Välj ditt sökkriterium - Frekvens: - Daglig: Kl. 06:00 (rekommenderas för aktiva områden) - Veckovis: Varje måndag kl. 06:00 (rekommenderas för mindre aktiva områden) - Månadsvis: Den första i månaden (för översiktlig bevakning) - Aktivt: Ja
Tips:
Resultat: Din radarbild uppdateras nu automatiskt!
Du har nu skapat en komplett radarbild med:
Tidsåtgång totalt: 2-4 timmar första gången
Nästa steg: Underhåll och utveckling (se nästa sektion)
En radarbild är inte statisk - den behöver kontinuerligt underhåll för att förbli relevant och värdefull.
Frekvens: En gång per vecka (t.ex. varje måndag morgon)
Åtgärder:
Kontrollera:
Vid behov:
Kontrollera:
Åtgärd:
Kontrollera:
Åtgärd om källa är trasig:
Frekvens: En gång per månad (t.ex. sista fredagen i månaden)
Åtgärder:
- Klicka " Analysera" - Vänta på att analysen är klar - Granska resultaten
Notera:
Åtgärder:
Användning:
Frekvens: Varannan månad
Åtgärder:
Resultat: Radarbilden får bredare täckning och fångar fler initiativ.
Kontrollera:
Exempel: Om du har ett sökkriterium "AI inom vården" som blivit mycket stort:
Frekvens: En gång per kvartal
Åtgärder:
- Är fokusområdet fortfarande relevant? - Har organisationens intressen förändrats? - Behöver radarbilden breddas eller smalnas av?
Frågor att ställa:
Kontrollera:
Åtgärder vid problem:
Åtgärder:
- Antal nya initiativ - Fördelning per kategori - Trender över tid
Efter att ha etablerat och underhållit radarbilden kan du utveckla den vidare.
När ett område växer kan du lägga till relaterade sökkriterier:
Exempel - Från "Digital hälsa" till bredare täckning:
Ursprungligt sökkriterium:
Utökade sökkriterier:
Resultat: En mycket bredare radarbild med djupare insikter.
Om din radarbild främst fokuserar på Sverige:
- Språk: en - Region: EU eller Global
Fördelar:
För strategiskt viktiga rapporter:
- Mer nyanserade analyser - Bättre kontextförståelse - Djupare samband mellan initiativ - Mer stringenta rekommendationer
När använda GPT-5:
När använda GPT-4:
Om du har flera radarbilder kan du få mervärde genom att:
Exempel:
Skapa en komplett automatiseringskedja:
Måndag kl. 06:00:
Måndag kl. 07:00:
Första måndagen i månaden kl. 08:00:
Resultat: Radarbilden uppdateras helt automatiskt med minimal manuell insats.
Konfigurera automatiska notifieringar:
För att öka värdet av radarbilden:
Skapa en feedback-loop:
- Vilka insikter är mest värdefulla? - Vilka områden bör bevakas mer? - Vilka initiativ saknas?
Håll korta utbildningar:
Om systemet stödjer dataexport:
- Business Intelligence-verktyg (Power BI, Tableau) - Projekthanteringssystem (Jira, Asana) - Kunskapsbaser (Confluence, SharePoint)
Fördelar:
Om du har teknisk kompetens:
- Automatisk publicering av nya initiativ på intranät - Push-notifieringar till mobilappar - Integration med CRM för säljstöd
Denna sektion beskriver i detalj hur sökprocessen fungerar, vilka alternativ som finns för att konfigurera sökningen, samt var och hur all insamlad information lagras.
När du klickar på "Sök" för ett sökkriterium körs följande process:
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 1: INITIERING │
│ - Hämta sökkriterium med alla inställningar från databasen │
│ - Identifiera aktiva sökkällor (RSS, webb, EU-dokument) │
│ - Förbereda nyckelord för filtrering │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 2: DATAINSAMLING │
│ För varje aktiv källa: │
│ - Google News RSS: Söker nyheter baserat på nyckelord │
│ - SearXNG webb: Söker allmän webb med nyckelord │
│ - RSS/Atom-flöden: Hämtar senaste artiklarna │
│ - EU-dokument: Söker EUR-Lex via RSS och SPARQL (beta) │
│ - Webbsidor: Skrapar innehåll från angivna URL:er │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 3: FILTRERING │
│ - Matcha artiklar mot nyckelord (hela ord eller exakta fraser) │
│ - Exakta fraser: "artificiell intelligens" matchar endast den frasen │
│ - Enkla ord: AI matchar hela ordet, inte del av annat ord │
│ - Artiklar utan matchning filtreras bort │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 4: LAGRING I POSTGRESQL │
│ För varje relevant artikel: │
│ - Kontrollera om artikeln redan finns (undvik dubbletter) │
│ - Spara fulltext, titel, URL, källa, datum, nyckelord │
│ - Koppla till sökkriterium och radarbild │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 5: EMBEDDING-GENERERING │
│ För varje ny artikel: │
│ - Skapa textrepresentation: titel + innehåll │
│ - Generera embedding via OpenAI text-embedding-3-small │
│ - Embedding = 1536-dimensionell vektor som fångar semantisk betydelse │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 6: LAGRING I VEKTORDATABASEN (QDRANT) │
│ - Spara embedding-vektorn med unikt ID │
│ - Spara metadata: titel, URL, källa, kategori, datum │
│ - Spara textförhandsvisning (första 500 tecken) │
│ - Möjliggör semantisk sökning vid analys │
└─────────────────────────────────────────────────────────────────────────────┘
Varje sökkriterium kan konfigureras med följande alternativ:
| Källa | Beskrivning | Aktiveras av |
|---|---|---|
| Google News | Söker svenska nyheter via Google News RSS | Lägg till GOOGLE_NEWS i källistan |
| SearXNG webbsökning | Söker allmän webb med nyckelord | Kryssruta "Använd SearXNG-webbsökning" (standard: PÅ) |
| RSS/Atom-flöden | Hämtar från specifika RSS-källor | Lägg till RSS-URL:er i källistan |
| EU-dokument | Söker EUR-Lex (kommissionens förslag, lagstiftning) | Kryssruta "Använd EU-dokumentsökning" (beta) |
| Webbsidor | Skrapar innehåll från specifika webbsidor | Lägg till webb-URL:er i källistan |
Grundinställningar:
Sökalternativ (kryssrutor):
| Inställning | Standard | Beskrivning |
|---|---|---|
| SearXNG-webbsökning | PÅ | Söker allmän webb utöver RSS-källor. Ger bredare täckning men kan ge mer brus. |
| EU-dokumentsökning | AV | Söker EU-kommissionens dokument via EUR-Lex. Beta-funktion för EU-bevakning. |
Avancerade inställningar:
Systemet använder intelligent nyckelordsfiltrering:
Enkla ord (t.ex. AI, digitalisering):
AI matchar "AI-strategi" men inte "Thailand"Exakta fraser (med citattecken, t.ex. "artificiell intelligens"):
"artificiell intelligens" matchar inte "intelligens artificiell"Rekommendation för nyckelord:
Systemet använder två databaser för att lagra all insamlad information:
Tabell: scraped_content - All insamlad artikeldata
| Kolumn | Innehåll |
|---|---|
id | Unikt ID för artikeln |
search_criteria_id | Koppling till sökkriterium |
radar_id | Koppling till radarbild |
title | Artikelns rubrik |
content | Fullständig artikeltext (upp till 3000 tecken) |
url | Källans URL |
source | Källans namn (t.ex. "SVT Nyheter") |
published_date | Publiceringsdatum |
keywords | Nyckelord som matchade |
category | Kategori från sökkriteriet |
embedding_id | Referens till vektordatabasen |
processed | Om embedding har genererats |
created_at | När artikeln sparades |
Tabell: uploaded_documents - Manuellt uppladdade dokument
| Kolumn | Innehåll |
|---|---|
id | Unikt ID |
organization_id | Ägande organisation |
title | Dokumenttitel |
original_filename | Ursprungligt filnamn |
document_type | Filtyp (PDF, DOCX, etc.) |
file_size | Filstorlek |
status | Bearbetningsstatus |
Tabell: document_chunks - Uppdelade dokumentsegment
| Kolumn | Innehåll |
|---|---|
document_id | Koppling till dokument |
chunk_text | Textsegment |
chunk_index | Position i dokumentet |
page_number | Sidnummer (om tillämpligt) |
section_title | Avsnittsrubrik |
Collection: radarbild_content - Alla embeddings
| Fält | Innehåll |
|---|---|
id | Samma ID som i PostgreSQL |
vector | 1536-dimensionell embedding-vektor |
payload.title | Artikelns titel |
payload.url | Källans URL |
payload.source | Källans namn |
payload.category | Kategori |
payload.published_date | Publiceringsdatum |
payload.searchCriteriaId | Koppling till sökkriterium |
payload.text | Textförhandsvisning (500 tecken) |
payload.sourceType | Typ: 'web' eller 'document' |
payload.timestamp | När embedding skapades |
En embedding är en matematisk representation av text som en vektor med 1536 tal. Denna vektor fångar textens semantiska betydelse - dess mening och kontext.
Exempel:
Vid sökning (scraping):
Vid analys:
| Traditionell sökning | Semantisk sökning |
|---|---|
| Matchar exakta ord | Förstår betydelse och kontext |
| "AI" hittar bara "AI" | "AI" hittar också "maskininlärning", "neural" |
| Missar synonymer | Hittar relaterat innehåll |
| Ordningsföljd spelar roll | Meningsförståelse |
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ RSS/Webb/EU │ ---> │ Filtrering │ ---> │ PostgreSQL │
│ (rådata) │ │ (nyckelord) │ │ (fulltext) │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ OpenAI API │
│ (embedding) │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Qdrant │
│ (vektorer) │
└──────────────────┘
Vid analys:
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Sökord │ ---> │ Qdrant │ ---> │ PostgreSQL │
│ (fråga) │ │ (vektor-sök) │ │ (hämta text) │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ GPT-4 │
│ (trendanalys) │
└──────────────────┘
Denna sektion beskriver avancerade funktioner som utökar radarbildens kapacitet.
Funktion: Automatiskt skapa sökkriterier baserat på manuellt inlagda initiativ.
Användningsområde:
Vad händer:
Viktigt att veta:
Visuell markering:
För varje sökkriterium i listan visas nu en statusindikator för webbsökning:
Ändra inställning:
När du klickar på "Analysera" för ett sökkriterium körs ett avancerat analysflöde som kombinerar vektorsökning (RAG - Retrieval-Augmented Generation) med AI-analys. Här beskrivs exakt vad som händer.
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 1: INITIERING │
│ - Anslut till vektordatabasen (Qdrant) │
│ - Hämta sökkriterium från PostgreSQL │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 2: VEKTORSÖKNING (Semantic Search) │
│ - Skapa embedding av sökorden med OpenAI text-embedding-3-small │
│ - Sök i Qdrant efter semantiskt liknande dokument │
│ - Returnerar topp 20 mest relevanta träffar │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 3: BERIKA MED FULLTEXT │
│ - För varje träff: hämta fullständigt innehåll från PostgreSQL │
│ - Kombinera vektorscore med artikelns fulltext │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 4: AI-ANALYS (GPT-4) │
│ - Bygg prompt med: radarbild-kontext + sökkriterium + artiklar │
│ - Skicka till OpenAI GPT-4 │
│ - AI returnerar: identifierade trender, analys, rekommendationer │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEG 5: SPARA RESULTAT │
│ - Spara analysresultat i analysis_results-tabellen │
│ - Skapa initiativ i initiatives-tabellen │
│ - Koppla initiativ till sökkriterium och radarbild │
└─────────────────────────────────────────────────────────────────────────────┘
1. Vektordatabasen (Qdrant)
radarbild_content2. PostgreSQL-databasen
3. Uppladdade dokument (om finns)
Beroende på sökkriterium inkluderas data från:
| Källa | Aktiveras av | Beskrivning |
|---|---|---|
| Google News | GOOGLE_NEWS i källor | Nyhetsartiklar via RSS |
| SearXNG | use_web_search = true | Webbsökningsresultat |
| RSS/Atom-feeds | URL:er i källor | Konfigurerade RSS-flöden |
| EU Documents | use_eu_search = true | EUR-Lex RSS + SPARQL (BETA) |
| Uppladdade dokument | Manuell uppladdning | PDF:er och dokument |
AI:n får följande kontext för att genomföra analysen:
Du kan anpassa hur AI:n analyserar innehållet genom att ange en custom AI-prompt på sökkriteriets.
Var hittar du inställningen:
Standard-prompten (om ingen custom prompt anges):
Du är en expert analytiker som identifierar trender och initiativ
baserat på artiklar och dokument. Analysera innehållet med hänsyn
till den specifika kontexten och identifiera konkreta åtgärder
eller utvecklingar.
Exempel på anpassade prompts:
Mer fokuserat på risker:
Du är en riskanalytiker som identifierar potentiella hot och
utmaningar. Fokusera särskilt på regulatoriska förändringar,
tekniska risker och marknadsförändringar som kan påverka
organisationen.
Fokuserat på möjligheter:
Du är en omvärldsanalytiker som identifierar affärsmöjligheter
och innovativa trender. Fokusera på nya teknologier,
marknadstrender och samarbetsmöjligheter.
Specifikt för offentlig sektor:
Du är en expert på digitalisering inom offentlig sektor.
Identifiera initiativ och trender som påverkar svenska
myndigheter och kommuner, med fokus på regelefterlevnad,
effektivisering och medborgarservice.
AI:n instrueras att returnera resultat i följande format:
## IDENTIFIERADE TRENDER
### TREND: [Namn på trenden/initiativet]
- **Kategori**: [kategori från radarbilden]
- **Tidsram**: [YYYY-YYYY eller YYYY]
- **Status**: [planning/in-progress/monitoring]
- **Påverkan**: [high/medium/low]
- **Kort etikett**: [Max 3 ord]
- **Beskrivning**: [1-2 meningar]
---
## ÖVERGRIPANDE ANALYS
[3-4 stycken med:]
1. Övergripande mönster
2. Implikationer och möjligheter
3. Konkreta rekommendationer
Fil som hanterar analysflödet: backend/services/openai-rag-service.js
Viktiga funktioner:
analyzeTrends() - Huvudfunktion för hela analysflödetretrieveRelevantContent() - Vektorsökning i QdrantperformGPT4Analysis() - Skickar prompt till OpenAIparseTrendsFromAnalysis() - Extraherar trender från AI-svarcreateInitiativesFromTrends() - Skapar initiativ i databasenEmbedding-modell: OpenAI text-embedding-3-small (1536 dimensioner)
Analysmodell: OpenAI gpt-4 (eller gpt-4-turbo beroende på konfiguration)
Funktion: Hantera nyhetsbrevprenumerationer och mottagna nyhetsbrev för att automatiskt skapa initiativ.
Nyhetsbrevfliken i adminpanelen innehåller tre sektioner:
Vad är det: En lista som visar nyhetsbrevs-avsändare vars e-post har mottagits men som inte är kopplade till någon radarbild. Dessa nyhetsbrev behandlas inte automatiskt.
Varför är det viktigt:
Så här kopplar du en avsändare:
- Avsändarens namn och e-postadress - Antal mottagna nyhetsbrev - Datum för senaste nyhetsbrev
Resultat: Framtida nyhetsbrev från denna avsändare analyseras automatiskt.
Du kan nu filtrera listan över mottagna nyhetsbrev per radarbild:
Tips: Kombinera med statusfiltret (Alla/Ej bearbetade/Bearbetade) för ännu mer specifik filtrering.
Varje nyhetsbrev i listan visar nu vilka radarbilder det är kopplat till:
Funktion: Markera flera nyhetsbrev och ta bort dem samtidigt.
Så här gör du:
Användningsområden:
Varning: Borttagningen kan inte ångras!
Kräver: Superadmin-behörighet
Funktion: Visualisera relationerna mellan alla initiativ i systemet som en interaktiv nätverksgraf.
Åtkomst:
Vad visar nätverksgrafen:
- Gemensamma kategorier - Delade taggar (starkaste kopplingen) - Överlappande tidsperioder - Samma organisation (svagare koppling)
Interaktivitet:
Användningsområden:
Statistik som visas:
Tips:
Funktion: Visa och granska alla användaråtgärder inom din organisation för revision och spårbarhet.
https://app.rajdar.se/radarbild/logs.htmlFiltrering efter radarbild:
Filtrering efter användare:
Filtrering efter modul:
Filtrering efter åtgärdstyp:
Filtrering efter entitetstyp:
Datumfiltrering:
Klicka på kolumnrubrikerna för att växla sorteringsordning.
Varje loggpost visar:
Klicka på en loggpost för att expandera och se:
Vanlig admin:
Superadmin:
Funktion: Dokumentera analyser, beslut och uppföljningsåtgärder kopplade till enskilda initiativ eller narrativ.
Noteringssystemet nås via knappen "Noteringar & Åtgärder" i initiativets detaljvy. Det öppnar en sidopanel till höger med tre funktionsområden: noteringar, beslut och åtgärder.
- Titel: Kort beskrivning av noteringens syfte - Synlighet: Välj vem som kan se noteringen: - Privat – Bara du - Team – Ditt team - Organisation – Alla i organisationen - Status: Ange noteringstillstånd: - Utkast – Under arbete - Slutgiltig – Färdigställd - Arkiverad – Äldre, inte längre aktiv
- Fet, kursiv, understruken text - Rubriker (H1, H2, H3) - Punktlistor och numrerade listor - Hyperlänkar
Koppla beslut direkt till en notering för att dokumentera vad som bestämts.
- Titel (obligatoriskt): Kort sammanfattning av beslutet - Beskrivning: Detaljer om beslutet och dess bakgrund - Beslutsdatum: Sätts automatiskt till dagens datum, men kan justeras
Beslut visas med en informationsikon och metadata (beslutsfattare, datum, status).
Möjliga beslutsstatusar: Väntande, Godkänt, Avvisat, Uppskjutet, Ersatt.
Koppla uppföljningsåtgärder till en notering för att spåra vad som ska göras.
- Titel (obligatoriskt): Vad ska göras? - Beskrivning: Detaljer om åtgärden - Deadline: Sista datum för slutförande - Prioritet: Låg, Medium, Hög eller Kritisk
Åtgärder kan markeras som slutförda via kryssrutan bredvid varje åtgärd. Slutförda åtgärder visas med genomstruken text.
Möjliga åtgärdsstatusar: Öppen, Pågående, Blockerad, Avbruten, Klar.
I noteringsredigeraren finns en "Exportera"-knapp som ger möjlighet att ladda ner noteringen i olika format.
Funktion: Arkivera initiativ som inte längre är aktuella utan att ta bort dem permanent.
I adminpanelen kan du filtrera efter arkiveringsstatus:
OBS: Arkiverade initiativ exkluderas som standard i radarbildsvyn, matrisvyn och delade vyer. De visas enbart i adminpanelen när du aktivt filtrerar efter arkiverade.
Funktion: Sortera initiativ efter en sammanvägd relevansbedömning som kombinerar flera faktorer.
Relevanssortering är det förvalda sorteringsalternativet och rangordnar initiativ baserat på:
| Faktor | Beskrivning |
|---|---|
| Status | Pågående viktas högst, följt av planering, övervakning och genomförda |
| Prioritet | Kritisk och hög prioritet viktas högre |
| Aktualitet | Initiativ nära innevarande år rankas högre |
| Nyhet | Nyligen tillagda initiativ ges extra vikt |
| Lagstiftningsstadium | För lagstiftningsradarbilder viktas aktiva stadier högre |
Relevanssorteringen finns tillgänglig i radarbildsvyns sorteringsmeny under "Relevans".
Initiativlistan i radarbildsvyn laddar 30 initiativ åt gången istället för alla på en gång. Längst ner i listan finns en "Ladda fler"-knapp som hämtar nästa omgång.
Detta gäller även:
Progressiv laddning förbättrar sidladdningstiden avsevärt för radarbilder med många initiativ.
Beröringspunktsanalysen låter dig ladda upp dokument (PDF, DOCX, TXT, XLSX, HTML) och automatiskt hitta kopplingar mot radarbildens initiativ eller artiklar.
Från radarbildsvyn, klicka på "Beröringspunkter"-knappen i verktygsfältet. Du kommer till en dedikerad sida för dokumentanalys.
Analysen kombinerar tre olika metoder för att hitta relevanta kopplingar:
| Metod | Vikt | Beskrivning |
|---|---|---|
| Semantisk likhet | 50% | AI-embeddings jämför textens betydelse. Fungerar mellan svenska och engelska. |
| Nyckelordsmatchning | 25% | LLM extraherar nyckelord på båda språken och beräknar Jaccard-koefficient. |
| Entitetsmatchning | 25% | LLM identifierar organisationer, lagar, platser och begrepp. Case-insensitive matchning. |
Den kombinerade poängen beräknas som:
finalScore = 0.50 × embeddingScore + 0.25 × keywordScore + 0.25 × entityScore
Tröskelvärden:
Systemet hanterar dokument på olika språk automatiskt:
text-embedding-3-small) ger nativt flerspråkigt stödTypiskt scenario: Ladda upp ett engelskt EU-policydokument → matcha mot svenska initiativ → få förklaringar på svenska.
I initiativläge genereras en AI-driven kunskapsgraf som visar:
Grafen använder Cytoscape.js med cola-layout. Klicka på en nod för att se detaljer.
Varje beröringspunkt visar:
Klicka "Exportera PDF" för att generera en rapport med alla beröringspunkter, analysmetoder och kunskapsgraf.
För att minimera LLM-anrop grupperas nyckelords- och entitetsextraktion i batchar om 5 texter per anrop. En analys av ett dokument mot ~100 initiativ genererar typiskt 6-10 extra LLM-anrop utöver embeddings.
Alla analyser sparas och kan återskapas via historiklistan i sidomenyn. Analyser kan också raderas.
"Veckans hetaste" är en separat vy som visar de hetaste topics (klustrade artikelämnen) under den senaste veckan per radarbild. Funktionen är driven av BERTopic — en algoritm som klustrar artiklar semantiskt och identifierar dominerande nyckelord per kluster.
weekly_topics-tabellen, och kopplingen till artiklar i weekly_topic_articlestrending.html?radarId=X visar topics som kort med trend-pil, antal artiklar och representativa nyckelordUnder Admin → Global schemaläggning finns kortet "🔥 Veckans hetaste":
Knappen "🔥 Veckans hetaste" i radarbildens header är aktiv endast när det finns topics genererade för den aktuella radarbilden. Saknas data är knappen nedtonad och visar tooltip "Inga topics genererade ännu". Detta hindrar användare från att klicka sig till en tom vy.
| Symptom | Orsak | Åtgärd |
|---|---|---|
| Inga topics genereras | För få artiklar senaste veckan | Öka skrapningsfrekvensen eller utöka sökord |
| Topics ser märkliga ut | För få artiklar för meningsfulla kluster | Vänta tills volymen ökar; BERTopic behöver minst 15 artiklar |
| Knappen saknas | bertopic-workern är nere | Kontrollera docker ps att containern kör |
Framtidsanalys (fliken Framtid i radarbildens topbar) låter användare generera strategiska framtidsanalyser grundade i radarbildens egna signaler. Fyra metoder finns: Tre horisonter, Scenarioplanering (2×2), Framtidshjul och Cross-impact. Slutfunktionen och hur användaren tolkar utfallet beskrivs i användarhandledningen — här beskrivs den administrativa sidan: konfiguration, modeller, aktivering, data och felsökning.
foresight_analyses (append-only/versionerad) och kan öppnas igen eller exporteras.Varje metod är en rad i ai_prompts med en egen prompttyp och redigeras av superadmin under Admin → AI-promptar (ai-prompts-admin.html). Filtrera på prompttyperna som börjar med "Framtidsanalys:". Per metod kan du styra:
reasoning_effort) — för resonerande modeller (gpt-5): minimal/low/medium/high. Högre = djupare men långsammare.System-defaults (organisation = tom) gäller alla. Vill du tuna för en enskild organisation, duplicera prompten och sätt organisation — den org-specifika versionen används då i stället.
| Metod | Standardmodell | Reasoning-djup | Ungefärlig tid |
|---|---|---|---|
| Tre horisonter | gpt-4o | – | ~10 sek |
| Scenarioplanering (2×2) | gpt-5 | low | ~1 min |
| Framtidshjul | gpt-5 | low | ~1 min |
| Cross-impact | gpt-5 | low | ~1 min |
Viktigt: håll de resonerande metoderna på reasoning_effort = low. På medium tar de flera minuter och riskerar att slå i proxyns timeout (180 s). Behöver du djupare analys, testa på en radarbild med mindre underlag först.
Framtid-fliken styrs per organisation via flaggan tab_framtidsanalys under Organisationer (kryssrutan "Framtidsanalys" i "Vy-flikar i topbaren"). Som övriga vy-flikar är den på som standard (opt-out) — avmarkera för att dölja modulen för en organisation.
Analyserna blir bara så bra som underlaget. En radarbild behöver ett minimum av initiativ och trender — annars svarar systemet "otillräckligt underlag" i stället för att spekulera. För bäst resultat:
foresight_analyses med både resultat och det evidens-paket (input_snapshot) som användes — bra för spårbarhet.foresight_<metod> och syns i debiteringsrapporten.| Symptom | Orsak | Åtgärd |
|---|---|---|
| "Otillräckligt underlag" | För få initiativ/trender i radarbilden | Lägg till/generera fler initiativ; aktivera Veckans hetaste |
| Genereringen tar mycket lång tid / timeout | reasoning_effort för högt på gpt-5-metod | Sätt tillbaka till low i AI-promptar |
| Visualiseringen ser trasig ut | JSON-schemat i prompt-mallen har ändrats | Återställ schemadelen i mallen till standard |
| Metoden syns inte i Framtid-fliken | Prompt-raden inaktiv, eller tab_framtidsanalys avstängd för org | Aktivera prompten / kryssa i vy-fliken under Organisationer |
| PDF-export långsam under hög last | Delad Chromium-tjänst (rendering) | Enstaka export är snabb; undvik många parallella exporter |
Specialbilden för utlysningar (granular-radar.html) är en valbar tilläggsmodul som samlar utlysningar och bidrag från ett växande antal finansiärer. Till skillnad från vanliga radarbilder hämtas data direkt från officiella API:er och webbsajter — inte via Google News-sökning.
När aktiverad visas modulen som ett kort under Specialfunktioner på dashboarden för alla användare i organisationen.
| Källa | Typ | Volym | Datakälla |
|---|---|---|---|
| 🏛️ Vinnova | Innovation/FoU | ~3 800 | GDP OpenAPI |
| 🎓 Vetenskapsrådet (VR) | Grundforskning | ~375 | GDP OpenAPI |
| 🌱 Formas | Hållbarhet/miljö | ~270 | GDP OpenAPI |
| ❤️ Forte | Hälsa/arbetsliv/välfärd | ~125 | GDP OpenAPI |
| ⚡ Energimyndigheten | Energi/klimat | varierar | GDP OpenAPI |
| 🇪🇺 EU F&T | Horisont Europa, Digital Europe m.fl. | ~1 500 | F&T-portalens API |
| 🇪🇺 ESF+ | Europeiska socialfonden+ | ~260 | esf.se (HTML) |
| 🎓 Wallenbergstiftelserna | 11 stiftelser (KAW, MMW...) | ~24 | wallenberg.org (HTML-scraping) |
| ❤️ Allmänna Arvsfonden | 3 stödformer + 6 beslutsmöten/år | 3 + 6 | arvsfonden.se (HTML) |
| 🛡️ MSB | Forskning + 2:4-, 2:6-anslag, naturolyckor | 1-4 + 3 | msb.se (HTML) |
GDP-API:et exponerar två endpoints: /metadata och /utlysningar. Vi prenumererar på alla fem federerade instanser (vinnova, vr, formas, forte, energi) via separata API-nycklar konfigurerade i .env (GDP_VINNOVA_KEY, etc.).
Schemalagt jobb "GDP — Forskningsutlysningar" körs kl 03:30 dagligen och fyller gdp_utlysningar-tabellen + Qdrant-collection (gdp_utlysningar) med embeddings för semantisk klassificering. Per-finansiär kan aktiveras/inaktiveras separat.
Hämtas via EU:s F&T-portal-API. Jobb "EU Funding & Tenders — Topics" körs dagligen. Lagras i eu_ft_topics-tabell + Qdrant-collection.
HTML-scraping av esf.se. Jobb "ESF+ — Svenska ESF-rådet" körs dagligen. Lagras i esf_utlysningar.
HTML-scraping av wallenberg.org/sv (Drupal 11 SSR — aggregeringssida med deadlines för ~11 stiftelser). Jobb "Wallenberg — Forskningsutlysningar". funder_subcode markerar vilken stiftelse (KAW, MMW, MAW etc.).
3 hårdkodade stödformer (Projektstöd, Lokalstöd, Effektstöd). Scrapern hämtar de 6 beslutsmötena per år från arvsfonden.se och uppdaterar stangningsdatum till nästa kommande beslut. Arvsfonden har inga deadlines per ansökan — fältet visar nästa beslutsmöte som mjuk indikator.
Hybridstrategi: 3 fasta anslag (2:6 ideella, 2:4 myndigheter, statsbidrag naturolyckor) + scrapad lista av aktuella forskningsutlysningar från msb.se. Change-detection körs endast på forskningsutlysningar — anslagen rörs aldrig.
Alla utlysningstabeller har samma kolumnstruktur:
funder_code, diarienummer, funder_subcode, finansiar_namn, finansiar_orgnr, titel, titel_eng, beskrivning, beskrivning_eng, status (Pågående/Kommande/Stängd), oppningsdatum, stangningsdatum, budget_belopp, budget_valuta, publiceringsplatser, bidragsformer, program, lank_url, raw (JSONB), last_seen_at, fetched_at, updated_at.
Utlysningar klassificeras automatiskt mot organisationens samlade kategorier (alla kategorier från alla radarbilder i orgen) via cosine similarity mellan utlysningens embedding och kategori-embedding. Endast kategorier med träffar visas i sidofiltret.
Modal med organisationens befintliga AI-prompts (samma bibliotek som vanlig radarbild). Två knappar per prompt:
report_subscriptions med report_type='granular_grants'. Schemaläggaren kör samma prompt med samma filter regelbundet och skickar Word-rapporten via e-postFör GDP-källorna får 99,7 % av utlysningarna direktlänk till finansiärens egen sida:
publiceringsplatser.webbadress om GDP-API:et tillhandahåller denvinnova.se/ao/<DNR> för Vinnova (alltid)För övriga källor används lank_url-kolumnen som extraheras vid scraping/ingest.
Funktionen är primärt värdefull för organisationer som söker eller administrerar bidrag. För rena nyhetsbevakningsteam behövs den inte.
Kategori-klassningen baseras på din organisations samlade kategorier. Tydliga, fokuserade kategorier ger bättre träffar. Otydliga kategorier (t.ex. "Övrigt") får många falska matchningar.
Det första användaren bör göra är att skapa en veckovis prenumeration. Annars måste hen logga in manuellt — vilket ofta inte sker. Kommunicera detta vid introduktion.
stangningsdatum per utlysning. Flerstegsutlysningar (t.ex. Driving Urban Transitions med steg 1 + steg 2) har bara administrationens slutdatum, inte mellanstegens deadlinesOm en datakälla slutar leverera:
failed?backend/services/providers/__tests__/<namn>-handler.test.js) för att se om DOM-struktur ändrats.env)Provider-modellen är arkitekturen som gör det möjligt att enkelt lägga till nya utlysningskällor till specialbilden — utan att förändra grundsystemet. Mellan våren och sommaren 2026 fördubblades antalet källor från 5 till 10 tack vare denna modell.
En provider är en konfigurerbar datakälla registrerad i providers-tabellen med en handler-modul som följer ett standardgränssnitt. Det finns två typer:
| Typ | Användning | Datalagring | Exempel |
|---|---|---|---|
ingest_match(utlysnings-providers) | System-wide daglig ingest. Visas i specialbilden för utlysningar | Egen tabell (t.ex. gdp_utlysningar) + Qdrant-collection. Matchas semantiskt mot organisationens kategorier | GDP, EU F&T, ESF+, Wallenberg, Arvsfonden, MSB |
keyword_search(sökord-providers) | Per sökkriterium. Triggas vid varje radarbilds-skrape | Vanliga scraped_content-tabellen med source_type + provider_code | SwePub |
Tio finansiärer är idag integrerade som ingest_match-providers. Varje har sitt eget cron-jobb i Global schemaläggning:
| Provider | Handler-modul | Tabell | Cron-jobb | Datakälla |
|---|---|---|---|---|
| GDP (5 finansiärer) | gdp-handler | gdp_utlysningar | global_gdp_ingest | API per finansiär |
| EU F&T | eu-ft-handler | eu_ft_topics | global_eu_ft_ingest | F&T-portalens API |
| ESF+ | esf-handler | esf_utlysningar | global_esf_ingest | esf.se HTML-scraping |
| Wallenberg | wallenberg-handler | wallenberg_utlysningar | global_wallenberg_ingest | wallenberg.org HTML-scraping |
| Arvsfonden | arvsfonden-handler | arvsfonden_utlysningar | global_arvsfonden_ingest | Hårdkodade stödformer + arvsfonden.se |
| MSB | msb-handler | msb_utlysningar | global_msb_ingest | Hårdkodade anslag + msb.se |
Alla utlysnings-handlers följer samma kontrakt och exporterar:
module.exports = {
type: 'ingest_match',
ingestAll(provider, mergedConfig), // schemalagd daglig hämtning
matchForRadar(radarId, mergedConfig), // semantisk matchning mot radar
_internals: { /* parser-funktioner för fixture-test */ }
};
Detta gör att schedulern kan anropa vilken provider som helst på samma sätt — och att nya providers kan läggas till med minimal kod.
Alla utlysningstabeller (*_utlysningar) har samma kolumner: funder_code, diarienummer, funder_subcode, finansiar_namn, titel, beskrivning, status, oppningsdatum, stangningsdatum, budget_belopp, lank_url, raw (JSONB) m.fl. Det innebär att UI:t, AI-sammanfattningar och filter fungerar identiskt oavsett källa.
Hämtar svensk forskning via OpenAlex (institutions.country_code:se). Aktiveras per sökkriterium under Sökkällor → "🔌 Tilläggsprovider" i "Källtyper"-fliken. Triggas vid varje skrapning av sökkriteriet.
Processen för att lägga till en ny utlysningskälla (för dig som intresserar dig av utvecklingsprocessen):
Ny tabell <namn>_utlysningar som speglar Wallenberg-schemat. Lägg till provider i providers-tabellen + cron-jobb i global_jobs.
backend/services/providers/<namn>-handler.js implementerar ingestAll och matchForRadar enligt standardgränssnittet. Cheerio-baserad parser för HTML-källor eller axios för API-källor.
Spara HTML-snapshot i __fixtures__/ och skriv test i __tests__/ som låser parsern mot snapshoten. Skyddar mot tysta brytningar när källsajten ändrar layout.
Lägg till provider i INGEST_JOB_HANDLERS-mappen i scheduler-service.js.
Frontend-integration i tre filer: granular-grants-data-service.js (UNION ALL för gemensam datavy), granular-radar.html (FUNDER_LABELS, FUNDER_COLORS, FUNDER_NAMES_R), samt admin-scheduler.html som visar nya jobbet automatiskt (data-driven).
Sett från användarbasen (kommun/idéburen sektor):
Önskemål om nya källor från en kundorg? Skicka i en feature-request — om det finns flera intresserade kan en ny provider prioriteras.
Per radarbild kan administratören begränsa vilka källtyper som AI-analysen får använda när initiativ genereras. Inställningen finns på Sökkällor-sidan under sektionen "🎯 Källfilter för analys".
| Kod | Beskrivning |
|---|---|
google_news | 📰 Google News |
web_search | 🔎 Webbsökning (SearXNG) |
gsc | ⭐ GSC-källor |
manual_rss | 📡 Manuella RSS |
feed_discovery | 🛰️ Feed Discovery |
eu_search | 🇪🇺 EU-sökningar |
ep_legislative | ⚖️ EP-lagstiftning |
government | 🏛️ Riksdagen/Regeringen |
research | 🔬 Forskning (SwePub) |
web | 📄 Otaggade (legacy) |
document | 📚 Uppladdade dokument |
provider:gdp | 🏛️ GDP forskningsutlysningar |
Bulk-modalen i Sökkällor visar två sektioner:
Det finns en gemensam infrastruktur för schemalagda rapporter (report_subscriptions-tabellen). Tre typer:
report_type | Beskrivning | Skapas från |
|---|---|---|
summary | AI-sammanfattning av filtrerade initiativ från en radarbild | App.html → 🤖 → välj prompt → 📅 |
report | PDF-rapport med initiativtabell | App.html → Rapport-knapp |
granular_grants | Word-sammanfattning av filtrerade utlysningar (org-bunden) | granular-radar.html → 🤖 AI-sammanfattning → 📅 Skapa återkommande |
Alla körningar 06:00 Europe/Stockholm:
0 6 *0 6 1 (måndag)0 6 1 (första i månaden)Användarna ser sina egna prenumerationer på sidan Prenumerationer (länk i app.html-headern). Där kan de pausa, aktivera, slå av e-post och se historik (report_subscription_log).
Superadmin har en utökad vy under Admin med statistik och alla prenumerationer i systemet.
| Symptom | Möjlig orsak |
|---|---|
| Mejl skickas ej | Kontrollera email_enabled i report_subscription_notifications och SMTP-config |
| "AI-prompt har tagits bort" | Användaren måste öppna prenumerationen och välja en aktiv prompt |
granular_grants-prenumeration ger 0 utlysningar | Filterstaten matchar inga utlysningar — vanligast om kategori/finansiär kombinationen är för smal |
Gör:
Undvik:
Gör:
Undvik:
Gör:
Undvik:
Gör:
Undvik:
Gör:
Undvik:
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Lägg till fler källor
Lösning B: Utöka sökorden
Lösning C: Justera beskrivningen
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Förfina sökorden
Lösning B: Reducera källor
Lösning C: Använd fler filterord
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Kontrollera källans status
Lösning B: Hitta ny RSS-URL
Lösning C: Ersätt med alternativ källa
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Manuell rensning
Lösning B: Förbättra beskrivningen
Lösning C: Kontakta superadmin
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Samla mer data
Lösning B: Fokusera sökkriteriet
Lösning C: Använd GPT-5
Symptom:
Möjliga orsaker:
Lösningar:
Lösning A: Kontrollera datakvalitet
start_year och end_yearLösning B: Justera tidslinjeintervallet
Lösning C: Kontrollera filter i dashboard
Vecka 1-2: Grundläggning
Vecka 3-4: Förfining
Vecka 5-8: Etablering
Månad 3+: Utveckling
Dokumentation:
Support:
Lycka till med dina radarbilder!
Denna handledning uppdaterades: 2026-03-31