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
Rapporten genereras inom 30 sekunder. Ladda ner som PDF eller dela med kollegor 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.
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 | % |
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 support@skolkoll.se eller följ ditt ärende i supportportalen.