Rapporter — Dokumentation
PDF-rapporter med nyckeltal, diagram och källbelagda enterprise-underlag.
Rapporter — Professionella PDF-rapporter
Skapa en rapport
PortalRapporter skapar professionella PDF:er med nyckeltal, tabeller och diagram som du kan ladda ner, skriva ut eller dela med kollegor och beslutsfattare.
Välj rapporttyp
Gå till Rapporter i menyn. Välj en standardrapport eller en enterprise-mall som är aktiverad för organisationens paket.
Fyll i detaljer
Ange vilken skola eller kommun rapporten ska handla om, samt valfria inställningar som jämförelsenivå och tidsperiod.
Ladda ner och dela
När rapporten är klar kan du ladda ner PDF-underlaget. Nämndrapport och rektorsdialog går vidare till kundgranskning före publicering; övriga rapporttyper kan delas via en tidsbegränsad länk.
| Rapport | Typ | Status | |
|---|---|---|---|
| Testskolan — Skolprofil | Skolprofil | Klar |
Fyra rapporttyper
PortalVarje rapporttyp är utformad för ett specifikt syfte:
- Skolprofil — en djupanalys av en enskild skola. Innehåller 6 nyckeltalskort, en jämförelsetabell mot kommunsnitt eller rikssnitt, och 4 trenddiagram som visar utvecklingen över tid.
- Kommunöversikt — visar alla skolor i en kommun i en tabell rankade efter meritvärde. Inkluderar kommunens samlade nyckeltal och ett stapeldiagram med topp 15 skolor.
- Huvudmannarapport — sammanställer alla skolor under en huvudman, grupperade per kommun. Visar aggregerade nyckeltal: antal skolor, totalt elevantal, genomsnittligt meritvärde och behörighet.
- Trendrapport — jämför utvecklingen över tid för upp till 20 skolor eller kommuner. Varje valt nyckeltal visas som ett eget linjediagram med alla enheter som separata linjer.
Enterprise-rapporter och evidence
PortalEnterprise-mallarna är pilotstöd för journalist-, kommun- och koncernflöden. De visas bara när organisationen har reports- och enterprise-reports-tjänsterna, användaren har motsvarande behörigheter (eller är org-admin), samt rätt paket/audience.
- Journalist:
journalist_story_package— storykort, metodnot, källtabell och frågor att ställa. - Kommun:
municipality_board_reportochprincipal_dialogue_brief— nämndrapport eller rektorsdialog från signaler. - Koncern:
group_quarterly_reportochmedia_and_inspection_brief— portföljrisk, medieunderlag och tillsynsdialog.
Enterprise-rapporter måste skapas från en serverlagrad signal eller serververifierade källreferenser. Portalen skickar normalt signalId; API:et hydratiserar evidence på serversidan och avvisar fri klient-evidence.
Färdiga enterprise-jobb med verifierad evidence visar en chart-ready CSV-export via /api/pro/reports/jobs/{jobId}/evidence-export. Rapporten innehåller metod, källor, begränsningar och evidence-hash.
Enterprise-evidence måste bära sourceDataset, sourceGeneratedAt, sourceVersionTag och vid behov sourceSyncId. Saknad dataset/version/timestamp, okänd freshness-policy, framtidsdaterad timestamp eller stale/out-of-SLA evidence blockerar rapportskapande, schemaläggning, delning och CSV-export med stabila koder som missing_source_dataset, missing_source_version, missing_freshness, freshness_policy_missing, future_evidence eller stale_evidence.
Granska och publicera kommunens rapporter
PortalFör nämndrapport och rektorsdialog öppnar du Granska och publicera när rapporten har genererats. Originalutkastet i PDF är underlag för arbetet. Kundens granskade slutversion är ett separat HTML-dokument som kan förhandsvisas och laddas ner.
- Utse rapportansvarig och sakgranskare bland organisationens behöriga användare. Ange användningsändamål och välj mottagare.
- Komplettera kundens sammanfattning och lokala analys. I nämndrapportens övriga avsnitt kan du skriva Kommentar i rapporten. Texten visas som Kommunens kommentar när du sparar en ny version. Sakgranskaren kan välja kommunens kommentar som berörd uppgift och begära rättelse eller utelämning av just den texten. Om kommentaren eller hela avsnittet utesluts visas inte kommentaren. Källuppgifterna är frysta; ett faktabyte kräver källrättelse och ett nytt rapportjobb.
- Spara och lämna versionen till sakgranskaren. Sakgranskaren kan begära rättelser eller godkänna exakt den förhandsvisade versionen.
- Rapportansvarig publicerar den godkända versionen. Förvalt är åtkomst för valda mottagare i portalen. En öppen delningslänk kräver ett uttryckligt val av offentlig publicering. Länken gäller en bestämd version och kan återkallas utan att versionshistoriken tas bort.
Granskare och mottagare behöver rapportbehörighet för organisationens kommunrapporter. Externa mottagare bjuds inte in automatiskt. Granskningsanteckning dokumenterar kontrollen och visas inte för rapportens läsare. Vid bedömningen Accepterad begränsning eller Utesluten byter fältet namn till Motivering som visas i rapporten: den texten följer med slutdokumentet. Kontrollera därför textens innehåll när du ändrar bedömningen.
Om innehåll, ansvariga, ändamål eller mottagarkrets ändras behövs en ny version och ett nytt godkännande. En publicerad version skrivs aldrig över. Versionshistoriken visar tidigare dokument och deras godkännande- och publiceringskvitton. Om någon annan har ändrat rapporten under arbetet måste du läsa in aktuell version innan du fortsätter.
Pilotstatus och avgränsning
PilotEnterprise-rapportering i v1 är avsedd för design partners. Den skarpa delen är behörighetsstyrning, källbelagd evidence, auditloggade rapportjobb och återanvänd verifierad evidence i scheman.
- Pilotstöd: signalbaserade rapporter, chart-ready evidence-export, schemaläggning från verifierad signal och pilot-readiness i enterprise-capabilities.
- Skarpt i v1: aktiv prenumeration,
reports,enterprise-reports, rätt paket/audience och serverlagrad evidence krävs innan rapporten skapas. - Utanför v1: individdata, elevnamn, personnummer, vendor-specifika skolplattformskopplingar, SSO/SCIM och kundspecifika BI-/SKA-ersättare.
- Narrativ analys: rapporttexten är mallstyrd och källbelagd; v1 skapar inga AI-genererade slutsatser eller rekommendationer.
Anpassa din rapport
PortalInnan du skapar rapporten kan du anpassa den:
- Jämförelsenivå (Skolprofil) — välj om skolans resultat ska jämföras med kommunsnittet eller rikssnittet
- Tidsperiod — ange startår och slutår för att begränsa vilka år som visas i trenddiagram
- Nyckeltal — välj vilka nyckeltal som ska ingå i rapporten (max 10 st). Om du inte väljer några inkluderas alla tillgängliga.
- Rubrik (Trendrapport) — ange en egen titel som visas på rapportens framsida
Schemalägg rapporter
PortalUnder "Schemalagda rapporter" kan du skapa ett schema för att få rapporter genererade automatiskt. Tre frekvenser finns:
- Varje vecka — genereras varje måndag
- Varje månad — genereras första måndagen varje månad
- Varje kvartal — genereras i januari, april, juli och oktober
En nedladdningslänk skickas till din e-post varje gång rapporten genererats. Du kan alltid ladda ner rapporten igen via portalen. Max 10 scheman per organisation.
Enterprise-scheman sparar en serververifierad evidence-snapshot när schemat skapas. Den schemalagda körningen återanvänder snapshoten, men kontrollerar fortfarande att organisationen har aktiv rapporttjänst, enterprise-rapporttjänst och rätt paket/audience. Ett schema kan bara pausas/aktiveras eller byta frekvens; skapa om schemat när signalen, mallen eller källurvalet ska bytas.
Om ett enterprise-schema hoppas över, auditloggas orsaken, till exempel inactive_subscription, missing_reports_entitlement, missing_enterprise_reports_entitlement, audience_not_entitled, missing_source_dataset, missing_source_version, missing_freshness, freshness_policy_missing, future_evidence eller stale_evidence.
Dela en rapport
PortalKlicka "Dela" bredvid en färdig rapport. En delningslänk kopieras till ditt urklipp. Länken fungerar utan inloggning i 30 dagar (kan ställas in mellan 1 och 90 dagar). Du kan återkalla en delningslänk när som helst.
Genererade rapporter sparas i 90 dagar. Nedladdningslänken förnyas automatiskt varje gång du öppnar rapporten.
För utvecklare: API-referens
APIVisa API-dokumentation
Rapportfunktioner används via portalen och interna Pro-endpoints. /api/pro/reports kräver Firebase-inloggning med Authorization: Bearer <idToken> och organisationens Pro-medlemskap; rapporter använder inte API-nycklar. Den publika delningslänken är den enda rapport-endpointen utan inloggning.
Endpoints:
// Rapportjobb:
POST /api/pro/reports/jobs Skapa rapport (asynkront)
GET /api/pro/reports/jobs Lista rapporter (?limit=1-100, standard 20)
GET /api/pro/reports/jobs/{jobId} Hämta status + nedladdningslänk
GET /api/pro/reports/jobs/{jobId}/evidence-export Hämta enterprise-evidence som CSV
POST /api/pro/reports/jobs/{jobId}/archive Arkivera rapportjobb
// Delning:
POST /api/pro/reports/jobs/{jobId}/share Skapa delningslänk
DELETE /api/pro/reports/jobs/{jobId}/share Återkalla delningslänk
GET /api/pro/reports/share/{jobId} Publik nedladdning (org + token som query params)
// Schemaläggning:
POST /api/pro/reports/schedules Skapa schema
GET /api/pro/reports/schedules Lista scheman (max 20)
PATCH /api/pro/reports/schedules/{id} Uppdatera (enabled, frequency)
DELETE /api/pro/reports/schedules/{id} Ta bort schemaExempel: Skapa rapporter
// Skolprofil med rikssnitt och tidsfönster:
POST /api/pro/reports/jobs
{
"reportType": "skolprofil",
"schoolCode": "12345678",
"comparisonLevel": "national",
"kpis": ["meritRating9", "eligibleYR9", "certifiedTeachersPercent"],
"fromYear": 2020,
"toYear": 2025
}
→ 202 {
"jobId": "abc",
"status": "queued",
"reportType": "skolprofil",
"pollUrl": "/api/pro/reports/jobs/abc",
"expectedStates": ["queued", "processing", "done", "failed"],
"firstValue": { "milestone": "first_report_queued", "artifactReady": false }
}
// Trendrapport — jämför tre skolor:
POST /api/pro/reports/jobs
{
"reportType": "trendrapport",
"schoolCodes": ["12345678", "23456789", "34567890"],
"kpis": ["meritRating9", "eligibleYR9"],
"title": "Jämförelse grundskolor Lund",
"fromYear": 2019
}
→ 202 { "jobId": "def", "status": "queued", "reportType": "trendrapport" }
// Enterprise: nämndrapport från serverlagrad signal:
POST /api/pro/reports/jobs
{
"reportType": "municipality_board_report",
"signalId": "signal-demo"
}
→ 202 { "jobId": "ghi", "status": "queued", "reportType": "municipality_board_report" }
// Polla status:
GET /api/pro/reports/jobs/{jobId}
→ { "status": "done", "readyAt": "2026-03-18T09:15:42Z", "result": { "downloadUrl": "https://...", "fileName": "skolkoll-skolprofil-12345678-2026-03-18T09-15-42.pdf", "sizeBytes": 184320, "expiresAt": "2026-03-18T10:15:42Z", "firstValue": { "milestone": "first_report_ready", "artifactReady": true } } }Exempel: Schemaläggning
// Skapa schema — månadsvis kommunöversikt:
POST /api/pro/reports/schedules
{
"reportType": "kommunoversikt",
"municipalityCode": "0180",
"frequency": "monthly"
}
→ 201 { "id": "abc", "enabled": true, "frequency": "monthly", "spec": {...} }
// Skapa enterprise-schema — veckovis nämndrapport från verifierad signal:
POST /api/pro/reports/schedules
{
"reportType": "municipality_board_report",
"signalId": "signal-demo",
"frequency": "weekly"
}
→ 201 { "id": "ent", "enabled": true, "frequency": "weekly", "spec": { "evidenceVerificationMode": "live", "evidenceHash": "..." } }
// Lista alla scheman:
GET /api/pro/reports/schedules
// Pausa/byta frekvens:
PATCH /api/pro/reports/schedules/{id}
{ "enabled": false }
// Ta bort:
DELETE /api/pro/reports/schedules/{id}
→ { "ok": true }Exempel: Dela rapport
// Skapa delningslänk (30 dagar):
POST /api/pro/reports/jobs/{jobId}/share
{ "expiryDays": 30 }
→ { "shareUrl": "/api/pro/reports/share/{jobId}?org=X&token=abc...", "expiresAt": "2026-04-17T...", "expiryDays": 30 }
// Återkalla delningslänk:
DELETE /api/pro/reports/jobs/{jobId}/share
→ { "ok": true }
// Publik nedladdning (ingen autentisering):
GET /api/pro/reports/share/{jobId}?org=X&token=abc...
→ 302 redirect till signerad PDF-URLTillgängliga KPI-nycklar:
| Nyckel | Beskrivning | Enhet |
|---|---|---|
meritRating9 | Meritvärde åk 9 | poäng |
certifiedTeachersPercent | Behöriga lärare | % |
studentsPerTeacher | Elever per lärare | antal |
totalPupils | Antal elever | antal |
eligibleYR9 | Behörighet gymnasiet åk 9 | % |
allSubjectsPassed6 | Godkänd alla ämnen åk 6 | % |
allSubjectsPassed9 | Godkänd alla ämnen åk 9 | % |
npSVE9 | Nationellt prov svenska åk 9 | poäng |
npMA9 | Nationellt prov matematik åk 9 | poäng |
npENG9 | Nationellt prov engelska åk 9 | poäng |
examWithin3Years | Gymnasieexamen inom 3 år | % |
eligibleHigherEd | Behörighet till högskola | % |
preschoolPedagogicalHigherEducationPercent | Andel med pedagogisk högskoleutbildning (förskola) | % |
preschoolChildrenPerFTE | Barn per årsarbetare (förskola) | antal |
certifiedTeachersPercent och studentsPerTeacher har värden för enheter med grundskola eller gymnasieskola. En förskoleenhet utan grundskola eller gymnasieskola har i stället värden under de två förskolenycklarna. För en sådan förskoleenhet avser totalPupils inskrivna barn, och i en skolprofil ger en begärd lärarnyckel förskolans motsvarande personalmått.
Parametrar:
| Parameter | Gäller | Beskrivning |
|---|---|---|
reportType | Alla | Obligatorisk: skolprofil, kommunoversikt, huvudmannarapport, trendrapport eller en aktiverad enterprise-mall. |
schoolCode | Skolprofil | Skolenhetskod (8 siffror) |
municipalityCode | Kommunöversikt | Kommunkod (4 siffror) |
organizerOrgNr | Huvudmannarapport | Organisationsnummer |
schoolCodes[] | Trendrapport | Lista skolenhetskoder (max 20) |
municipalityCodes[] | Trendrapport | Lista kommunkoder (max 20) |
kpis[] | Alla | Obligatorisk för trendrapport. Valfri för övriga. Max 10 st. |
fromYear / toYear | Alla | Startår/slutår för trenddata (heltal 2000-2100) |
comparisonLevel | Skolprofil | "municipality" (standard) eller "national" |
title | Trendrapport | Valfri rubrik, max 200 tecken |
signalId | Enterprise | Rekommenderad källreferens. Signalens audience måste matcha enterprise-mallens audience. |
evidenceRefs[] | Enterprise API | Valfritt API-spår för serverlagrad evidence. Varje ref måste innehålla customerDataId eller signalId; fri klient-evidence avvisas. |
frequency | Scheman | weekly, monthly eller quarterly |
format | Evidence-export | csv eller chart-ready. |
expiryDays | Delning | 1-90 dagar, standard 30 |
Detaljer:
Jobbstatus: queued → processing → done | failed. Vid done inkluderas result med downloadUrl, fileName, sizeBytes, storagePath och expiresAt. Nedladdningslänken förnyas vid varje anrop (1 timmes giltighet).
Enterprise evidence: API:et sparar evidenceRefs, evidenceManifest, evidenceHash, evidenceVerifiedAt och evidenceVerificationMode i jobbets eller schemats spec. Schemalagda enterprise-körningar återanvänder redan verifierad evidence med reused_verified.
Enterprise-scheman: PATCH /api/pro/reports/schedules/{id} accepterar bara enabled och frequency. Specen är immutabel efter skapande; radera och skapa ett nytt schema för ny signalId, nya evidenceRefs[], annan mall eller annan audience.
Delning: Token genereras med 32 bytes crypto randomBytes. Publik nedladdning (GET /share/:jobId) kräver org och token som query-parametrar. Utgångna delningslänkar returnerar 410 Gone.
Felkoder:
| Kod | Betydelse |
|---|---|
400 | Valideringsfel — saknad identifierare, ogiltigt reportType, fromYear > toYear, kpis[] saknas (trendrapport), max 10 KPIs överskridet, max 20 enheter överskridet, max 10 scheman överskridet, enterprise-rapport utan signalId/evidenceRefs[], fri klient-evidence eller audience-mismatch |
403 | Saknar rapporter-behörighet, enterprise-rapporter-behörighet, rapporter-tjänsten, enterprise-rapporttjänsten eller rätt paket/audience. Ogiltig share-token. |
404 | Jobb/schema/signal/evidence hittades inte, organisation saknas, ingen delningslänk existerar |
410 | Delningslänk har gått ut eller rapportfilen har raderats (90-dagars retention) |
Begränsningar:
- Max 20 enheter per trendrapport
- Max 10 KPI:er per rapport
- Max 10 scheman per organisation
- 90 dagars retention — genererade PDF:er sparas i 90 dagar
- Nedladdningslänkar har 1 timmes giltighet och förnyas automatiskt
- Delningslänkar: max 90 dagars utgång, standard 30 dagar
- Benchmark-PDF:er skapas via Benchmark-export, inte via rapporternas API
- Enterprise-rapporter är mallstyrda och källbelagda; ingen AI-genererad slutsatstext ingår i v1
- Enterprise-scheman återanvänder den evidence-snapshot som verifierades när schemat skapades
Har du frågor? Mejla info@skolspegeln.se. Förfrågan tas emot och hanteras manuellt via e-post; ingen supportportal används för ny intake.