Specifikation

Start / Betygsregistrering / Specifikation

detaljerad kravspecifikation

område > bedömning >

Betygsregistrering

Funktionens namn på engelska: Grade Registration

Kommentar: Funktionen hanterar betygsregistrering för grundskola, gymnasium och vuxenutbildning, inklusive anpassad grundskola samt övergången till ämnesbetyg i GY25.

bakgrund och syfte

Syftet är att stödja digital betygshantering i enlighet med skollag, skolförordning och föreskrifter från Skolverket. Förstudien kartlägger krav, processer och regelverk för betygssättning och registrering i svensk grundskola, gymnasium och vuxenutbildning.

Betygsregistreringen ska säkerställa att rätt betygsskala används, att registrering sker enligt korrekt ämnes-/kurskod, att betygsdokumentation skyddas mot obehörig åtkomst och att rätt roller har ansvar för registrering, signering och rättelse.

Länk till förstudien Betygsregistrering [12478]

ytterligare detaljer kring funktionens syfte

Funktionen ska förenkla arbetet i skolmiljöer med varierande behov. Den ska kunna hantera:

  • Elever i olika skolformer inom samma undervisningsgrupp.
  • Anpassade betygsskalor för anpassad grundskola/gymnasieskola
  • Samtidig hantering av kursbetyg (GY11) och ämnesbetyg (GY25).
  • Hantera betygssättning inom vuxenutbildning och yrkeshögskola

skillnader mot v1

  • Stöd för ämnesbetyg i GY25 införs och hanteras parallellt med kursbetyg i GY11

  • Slutbetyg begränsas till åk 9 i grundskolan och åk 3 i gymnasiet.

  • Tydligare betygsskalor

  • Bättre stöd för alla skolformer och läroplaner

specifikation funktionalitet

roller

  • Betygssättande lärare – registrerar betyg, kan markera betyg som definitiva.

  • Rektor – ansvarar för korrekt betygskatalog, kan administrera samtliga betyg.

  • Administratör/OrgAdmin – hanterar upplåsning, rättelser och teknisk administration.

  • Elev och vårdnadshavare – tar del av publicerade betyg via lärplattformen.

vad gör att funktionen finns tillgänglig i Vklass (utöver roll)?

  • Skolform (grundskola, gymnasium, vuxenutbildning, anpassad grundskola, anpassad gymnasieskola).

  • Konfiguration på skolnivå

    • Aktivering av funktion i skolkonfigurationen
  • Konfiguration på kursnivå

    • Val av betygsskala, skoltyp och betygssättande/signerande lärare
  • Betyg i grundskolan sätts vanligtvis i åk 6, men det finns en del skolor som sätter betyg redan från åk 4.

vilka entiteter?

Elev / Student

Förnamn / First name

Efternamn / Last name

Personnummer / Personal identity number

Skolform / School type

Klass / Class

Undervisningsgrupp / Course group

Betyg / Grade

Ämneskod / Subject code (Gy25)

Kurskod / Course code

Betyg / Grade

Betygsskala / Grade scale

Betygsperiod / Grading period

Årskurs / Education year

Klass / Class

Registreringsdatum / Registration date

Publiceringsdatum / Publish date

Definitiv / Definitive

Låst / Locked

Slutbetyg / End Grade

Betygsättande lärare / Grading teacher

Signatur / Signature

Historik / History (ändringar, rättelser, prövningar)

Notering / Grade note

Prövning / Examination

Ändring / Change

entitetens domänlogik
  • Slutbetyg kan endast sättas i åk 9 i grundskolan och åk 3 i gymnasiet.

    • När ett ämnesbetyg får slutbetygsmarkering enligt GY25, är det elevens slutgiltiga betyget inom ämnet
  • Ett prövningsbetyg trumpfar alltid det tidigare registrerade betyget i ämnet.

  • Ett betyg kan endast bli låst efter definitivmarkering och kan endast ändras av OrgAdmin under en tidsperiod (inom 20 dagar från betygets publiceringsdatum)

  • Elever kan inte ha både kursbetyg (GY11) och ämnesbetyg (GY25) i samma ämne.

Via detaljsidan för en undervisningsgrupp. Ska länka till en egen sida i gränssnittet som ska se ut enligt wireframe.

funktioner (use cases/user stories)

[01] registrera terminsbetyg/slutbetyg i grundskolan/specialskolan

Lärare ska kunna registrera termins- och slutbetyg i åk 6–9. Registreringen ska ske enligt rätt ämneskoder och med vald betygsskala. Endast behörig lärare kan genomföra registreringen.

Acceptanskriterier

  • Det ska endast gå att registera betyg på undervisningsgrupper som tillhör skolor som har modulen aktiverad (db.SchoolConfig.GradesUseGrades)
  • Endast legitimerad och behörig lärare i ämnet kan registrera betyget.
    • Vi får utgå från att lärare kopplat till undervisningsgruppen är behörig, det finns inget systemstöd för att validera behörighet.
  • Systemet måste kontrollera att ämneskoden är giltig enligt Skolverkets register.
    • Mappas mot db.SkolverketCourse.VklassCourseCode eller db.SkolverketCourse.AlternateCode
    • Om ämneskoden är felaktig, ska felmeddelande visas:
      • “Ämneskoden du har angivit är inte giltig enligt Skolverkets register. Kontrollera koden och försök igen. Betyget kan inte registreras förrän en korrekt ämneskod används.”
      • “The subject code you entered is not valid according to the Skolverkets register. Please verify the code and try again. The grade cannot be registered until a valid subject code is used.”
  • Systemet ska endast tillåta registrering av terminsbetyg för:
    • Åk 6–9 (Grundskola, LGR22).
      • I årskurs 9 ska lärare kunna ange att det är slutbetyg i ämnet
    • Åk 7–10 (Specialskola, LSPEC22).
      • I årskurs 10 ska lärare kunna ange att det är slutbetyg i ämnet
    • Årskurs på elever verifieras från db.Curriculum.
  • Ha stöd för skolor som sätter betyg från åk 4 (åk 5 för specialskolan), men då måste betygsskala vara explicit satt på kursen (db.courses.CourseMaskRate, )
  • Betygsskalan hämtas enligt följande prioritet:
    • CourseParticipants.GradeMask (om eleven har integrerad skolform, ex. LGRA22 i LGR22-grupp).
    • db.courses.CourseMaskRate (om kursnivå är konfigurerad).
    • Defaultvärde: Schoolconfig.Schooltype → Grundskola → CourseMask = GR-LGR22 → GradeScaleE.AF
  • Betyget måste knytas till en betygsperiod/termin baserat på registreringsdatum.
    • Hösttermin = 20XX-08-01 till 20XX-12-30.
      • Perioden utformas 202X1, exempel 20251 för höst läsår 25/26
    • Vårtermin = 20XX-01-01 till 20XX-06-30
      • Perioden utformas 202X2, exempel 20252 för vår läsår 25/26
  • Det ska gå att markera betyget som definitivt, vilket låser det från ändringar.
    • Det är endast lärare med koppling till kurs och rektor som har möjlighet att definitivmarkera ett betyg.
    • Innan ändringarna sparas, ska det visa ett bekräftelseprompt
      • “Det finns XX betyg som är definitivmarkerade. Är du säker på att du vill låsa dessa betyg?”
      • “There are XX grades that are marked as final. Are you sure you want to lock these grades?”
  • Låsta och definitivmarkerade betyg ska endast kunna hanteras via V1 - Skoladmin - Betygshantering
  • En integrerad elev ska automatiskt få rätt betygsskala, om dessa inställningar finns på eleverna i undervisningsgruppen (Redigera betygsinfo på kursen i V1 Skoladmin).
    • Inställningar hämtas in i db.CourseParticipants
      • Code - Kurskod
      • GradeMask - Betygsskala
      • NationalSchoolFormID - Skolform
  • Publiceringsdatum för betyget ska framgå tydligt.
    • Baseras på publiceringsdatum som ställs in i db.schoolconfig.GradePublishDate
  • Följande fält ska vara interaktiva:
    • Betyg (val från dropdown utifrån betygsskala)
    • Definitiv (Checkbox)
    • Slutbetyg (åk 9 för LGR22 och åk 10 för LSPEC22)
    • Årskurs (?)
    • Klass (?)
  • Obligatorisk notering när slutbetyg sätts till F eller –. Noteringar kopplas till rätt ämne och lagras i db.GradeNotes
    • Fritextfält, förinställd början av kursens ämneskod
    • Exempel: “SV: Elev når inte de kunskapskrav som krävs för att klara kursen pga hög frånvaro”

Kopplingar

  • CourseMask: GR-LGR22, GR-LSPEC22, GR-LSAM22. (Se lösningsförslag)
  • GradeScale: GradeScaleE.AF (Se lösningsförslag)

[02] registrera kurs- och nivåbetyg i gymnasiet

Lärare ska kunna registrera kursbetyg enligt GY11 eller nivåbetyg enligt GY25. Systemet ska känna av om det gäller kurs- eller ämnesstruktur.

Acceptanskriterier:

  • Endast behörig lärare kan registrera betyget.
  • Systemet ska särskilja kursbetyg (GY11) och nivåbetyg (GY25).
  • Ämnesbetyget är det betyg som sätts på den högsta nivån (kursen) inom ämnet
    • Om en elev får B på nivå 1 och därefter C på nivå 2, blir ämnesbetyget C.
    • Om eleven får F på nivå 2, kvarstår det tidigare betyget från nivå 1 (t.ex. B), tills eleven har fått ett nytt godkänt betyg på en högre nivå.
    • Behöver stöd för betyg för nivåer i fliken “Betyg” i Studieöversikten.
  • Betyget måste knytas till en betygsperiod/termin baserat på registreringsdatum.
    • Hösttermin = 20XX-08-01 till 20XX-12-30.
      • Perioden utformas 202X1, exempel 20251 för höst läsår 25/26
    • Vårtermin = 20XX-01-01 till 20XX-06-30
      • Perioden utformas 202X2, exempel 20252 för vår läsår 25/26
  • Kurskoder och poängomfattning ska valideras mot Skolverkets register.
    • Mappas mot db.SkolverketCourse.
    • Om ämneskoden är felaktig, ska felmeddelande visas:
    • “Ämneskoden du har angivit är inte giltig enligt Skolverkets register. Kontrollera koden och försök igen. Betyget kan inte registreras förrän en korrekt ämneskod används.”
    • “The subject code you entered is not valid according to the Skolverkets register. Please verify the code and try again. The grade cannot be registered until a valid subject code is used.”
  • Definitivmarkering krävs för att betyget ska bli giltigt och kunna låsas.
  • Är det ett ämnesbetyg, behöver vi stämpla in ämneskoden och vilken nivå
    • Uppdatering i db.SkolverketCourse, lägga till nivå kolumn för GY25?
    • Uppdatering i db.Grades, lägga in kolumn för ämneskod och nivå?
  • När ett betyg ska sättas i ett Gymnasiearbete, ska det finnas ett fält där läraren kan fylla i en beskrivning av gymnasiearbetets innehåll
    • Kurskoder som börjar med “GYAR” i SkolverketCourse
    • Lagras i db.Grades.AdaptiveNote
    • Kommer sedan skrivas ut som en Notering i Examensbeviset

Kopplingar:

  • CourseMask
    • GY-LGY11 → GradeScaleE.AF (Se lösningsförslag)
    • GY-LGY25 → GradeScaleE.AF (Se lösningsförslag)
  • GradeScale: GradeScaleE.AF.

Edge cases:

  • Elev ska inte kunna få betyg i både GY11 och GY25 i samma ämne.
  • Om kurskod saknas i Skolverkets register ska registreringen blockeras.

[03] registrera betyg i vuxenutbildningen

Lärare ska kunna registrera betyg kontinuerligt i vuxenutbildningen, oberoende av termin. Systemet ska hantera grundläggande och gymnasial nivå.

Acceptanskriterier:

  • Betyg ska kunna registreras när som helst under året.
  • Systemet ska stödja registrering för både grundläggande och gymnasiala kurser.
    • Ska kunna styras genom betygsskalan på kursen
  • Alla betyg måste knytas till rätt kurskod och betygsskala.
  • Kurskoder och poängomfattning ska valideras mot Skolverkets register.
    • Mappas mot db.SkolverketCourse.
    • Om ämneskoden är felaktig, ska felmeddelande visas:
    • “Ämneskoden du har angivit är inte giltig enligt Skolverkets register. Kontrollera koden och försök igen. Betyget kan inte registreras förrän en korrekt ämneskod används.”
    • “The subject code you entered is not valid according to the Skolverkets register. Please verify the code and try again. The grade cannot be registered until a valid subject code is used.”.
  • Styrning för publicering av betyg bör ske på kursnivå, eftersom att kurser kan vara kortare än terminsvis.
    • Implementering av ny kolumn i courses, GradePublishDate?

Kopplingar:

  • CourseMask:
    • VX-LVUX12 → GradeScaleE.AF.
  • GradeScale: AF

[04] registrera betyg i anpassad grundskola

Lärare ska kunna registrera termins- och slutbetyg i anpassad grundskola (LGRA22). Betyg sätts i årskurs 6–9. Skalan är alltid A–E, - men systemet ska även stödja markering för deltagit där betyg inte kan ges.

Acceptanskriterier

  • Ska fungera på exakt samma sätt som [01]
  • Betygsskala hämtas enligt:
    • CourseParticipants.GradeMask → om eleven har integrerad skolform.
    • db.courses.CourseMaskRate → om konfigurerad.
    • Defaultvärde: Schoolconfig.Schooltype → Grundskola → CourseMask = GR-LGR22 → GradeScaleE.AF.
  • Det ska även gå att registrera ”deltagit” → GradeText = "1" och ChangedGradeNote = "Deltagit". Detta kommer generera en tom ruta i betygskatalog med Note som info.

Kopplingar

  • CourseMask: GR-LGRA22 (se lösningsförslag)
  • GradeScale: GradeScaleE.AE (se lösningsförslag)

Edge cases

  • Om elev deltar i undervisningen men inte kan betygsättas → registrera ”deltagit”.

[05] Registrera betyg i anpassad gymnasieskola

Lärare ska kunna registrera kursbetyg (LGYAN2013) och ämnesbetyg (LGYAN2025) i anpassad gymnasieskola. Betygsskalan är alltid A–E, - och ska kunna markeras som slutbetyg endast på högsta nivå i ett ämne.

Acceptanskriterier

  • Ska fungera på exakt samma sätt som [02]
  • Systemet ska särskilja kursbetyg (LGYAN2013) från ämnesbetyg (LGYAN2025).
  • Slutbetyg kan endast sättas på högsta nivå i ett ämne (LGYAN2025).
  • ”Deltagit” ska kunna registreras enligt samma logik som i anpassad grundskola.

Kopplingar

  • CourseMask:
    • GY-LGYAN11
    • GY-LGYAN25.
  • GradeScale: GradeScaleE.AE.

Edge cases

Elev får inte ha både kursbetyg (LGYAN2013) och ämnesbetyg (LGYAN2025) i samma ämne.

[06] Registrera betyg i Komvux anpassad utbildning och SFI

Lärare ska kunna registrera betyg i Komvux anpassad utbildning (LVUX12, särskild utbildning) samt SFI. Dessa skolformer har en förenklad betygsskala: IG–G.

Acceptanskriterier

  • Ska fungera på exakt samma sätt som [03].
  • Om CourseMask VX-SFI anges, ska NationalSchoolFormID sättas till 12

Systemet kontrollerar att kurskod är giltig mot db.SkolverketCourse.

  • Betygsskalan hämtas enligt:
    • CourseParticipants.GradeMask → om angett..
    • db.courses.CourseMaskRate → om konfigurerad.
    • Defaultvärde: Schoolconfig.Schooltype → Vuxenutbildning → CourseMask = LVUX12 → GradeScaleE.AF.

Kopplingar

  • CourseMask:
    • VX-LVUX12A (Komvux anpassad utbildning).
    • VX-SFI (SFI).
  • GradeScale: GradeScaleE.IG_G.

[07] Registrera betyg i Yrkeshögskola (YH)

Lärare ska kunna registrera betyg i Yrkeshögskolan (YH). Även om YH inte är en skolform enligt Skolverket, hanteras den i systemet som en egen betygsskala för att stödja befintliga användare. Betygsskalan är IG–VG.

Acceptanskriterier

  • Ska fungera på exakt samma sätt som [03].
  • Systemet ska kontrollera att kurskod är giltig i YH:s egna register, dessa finns inlagda i db.SkolverketCourse.
  • Styrning för publicering av betyg bör ske på kursnivå, eftersom att kurser kan vara kortare än terminsvis.
    • Implementering av ny kolumn i courses, GradePublishDate?

Kopplingar

  • CourseMask: YH.
  • GradeScale: GradeScaleE.IG_VG.

lösningsförslag

Det som är avgörande för att betygen ska lagras på korrekt sätt och skrivas ut i betygskatalog/examensbevis etc, är Skolform (NationalSchoolFormID) och betygsskala (gradescale).

För att få en bra logik och hantering av betyg bör vi endast ha stöd för de skolformer och läroplaner som finns enligt Skolverket, med tillhörande betygsskalor.

Vi behöver i dagsläget ha stöd för 4 betygsskalor, med möjlighet att utöka till flera vid eventuella förändringar hos Skolverket, exempelvis 10-gradig betygsskala.

Skolform NationalSchoolFormID Läroplan Betygsskala
Grundskola 3 LGR22 A-F, -
Anpassad grundskola 4 LGRA22 A-E, -
Specialskola 5 LSPEC22 A-F, -
Sameskola 6 LSAM22 A-F, -
Gymnasium, kursbetyg 8 LGY11 A-F, -
Gymnasium, ämnesbetyg 8 LGY2025 A-F, -
Anpassad gymnasium, kursbetyg 9 LGYAN2013 A-E, -
Anpassad gymnasium, ämnesbetyg 9 LGYAN2025 A-E, -
Komvux, gymnasial och grundläggande 10 LVUX12 A-F, - IG-G
Komvux, anpassad utbildning 11 LVUX12 IG-G
Komvux, SFI 12 LVUX12 IG-G
Yrkeshögskola* YH IG-VG

* YH är inte en officiell skolform eller läroplan enligt Skolverket, eftersom att det är en eftergymnasial utbildning som liknar högskola/universitet, men mer praktiskt inriktad. Idag har vi stöd för yrkeshögskolan och deras betygsskala i V1 gällande betygssättning, och behöver därför fortsätta att ha stöd för det i V2.

enum GradeScaleE

AF \= 1,    // A–F, \-

AE \= 2,    // A–E, \-

IG\_G \= 3,   // IG–G

IG\_VG \= 4   // IG–VG

public static class GradeScaleDefinitions

{

public static readonly Dictionary\<GradeScaleE, List\<string\>\> AllowedGrades \=

    new Dictionary\<GradeScaleE, List\<string\>\>

    {

        { GradeScaleE.AF, new List\<string\> { "A", "B", "C", "D", "E", "F", "-" } },

        { GradeScaleE.AE, new List\<string\> { "A", "B", "C", "D", "E", "-", “1” } },

        { GradeScaleE.IG\_G, new List\<string\> { "IG", "G" } },

        { GradeScaleE.IG\_VG, new List\<string\> { "IG", "G", "VG" } }

    };

enum CourseMask

YH = 14,

GR-LGR22 = 15,

GR-LGRA22 = 16,

GR-LSPEC22 =

GR-LSAM22 =

GY-LGY11 = 2,

GY-LGYAN11 = 3,

GY-LGY25 = 17,

GY-LGYAN25 = 18,

VX-LVUX12 = 20,

VX-LVUX12A = 21,

VX-SFI =

CourseMask kommer vara det enum värdet som stämplas in i Grade.GradeScale, men kommer nu motsvara och benämnas som läroplan istället för betygskala, eftersom att det är en mer korrekt. För att inte påverka befintlig data, ska enum värdena hedra legacy.
Uppdateringen av courseMask kommer kräva utveckling i V1 också, eftersom att inställningarna för detta sker där idag.

SFI kommer få en egen “mask” eftersom att de använder en förenklad betygsskala som inte går att koppla till VX-LVUX12, men som idag har ett eget värde i NationalSchoolForms.

Exempelkod på hur mappning mellan betygsskala och coursemask kan se ut

public static class GradeScaleMapping

{

public static readonly Dictionary\<string, GradeScaleE\> CourseMaskToGradeScale \=

    new Dictionary\<string, GradeScaleE\>

    {

        { "GR-LGR22", GradeScaleE.AF },

        { "GR-LGRA22", GradeScaleE.AE },

        { "GR-LSPEC22", GradeScaleE.AF },

        { "GR-LSAM22", GradeScaleE.AF },

        { "GY-LGY11", GradeScaleE.AF },

        { "GY-LGYAN11", GradeScaleE.AE },

        { "GY-LGYAN11A", GradeScaleE.AE },

        { "GY-LGY25", GradeScaleE.AF },

        { "GY-LGYAN25", GradeScaleE.AE },

        { "GY-LGYAN25A", GradeScaleE.AE },

        { "VX-LVUX12", GradeScaleE.AF },

        { "VX-LVUX12A", GradeScaleE.AE },

        { "VX-SFI", GradeScaleE.IG\_G },

        { "YH", GradeScaleE.IG\_VG },

};

}

Lagring av betyg i tabellen [Grades]

När ett betyg registreras eller uppdateras ska alla relevanta fält i [Grades]-tabellen stämplas in på ett enhetligt och korrekt sätt. Nedan följer krav på vilka fält som måste anges och hur de ska hanteras.

1. identitet och koppling

Dessa fält säkerställer att betyget går att knyta till rätt elev, kurs och skola. Obligatoriska.

  • UserID – unik identifierare för eleven. Hämtas från db.CourseParticipants
  • CourseID – kursgrupp/undervisningsgruppens-ID. Hämtas från db.Courses
  • CourseCode – kurskod. Ska alltid sättas där kurskod finns. Hämtas från db.Courses om inget annat har angivits i db.Courseparticipants.CourseCode
  • SchoolID – skolans ID. Hämtas från db.Courses
  • NationalSchoolFormID – skolformens ID (ex. 3 = Grundskola, 4 = Anpassad grundskola). Utgår från db.SchoolConfig.Schooltype om inget annat har angivits i db.Courses.CourseMaskRate (kursnivå) eller db.Courseparticipants.CourseMask (individnivå)

2. betygsvärde och skala

Anger själva betyget samt vilken skala som gäller. Obligatoriska.

  • GradeText – själva betygsbeteckningen.
    • Tillåtna värden beroende på skolform:
      • A–F eller A–E.
      • IG–G eller IG–VG.
      • - (streck, vid saknat underlag).
      • 1 (”deltagit” endast i anpassade skolformer).
  • GradingScale – enumvärde för läroplan, se förslag ovan. Måste hedra legacyhantering för korrekt utskrift av betygskatalog, och termin/slutsbetyg och examensbevis.
  • EndGrade – markeras true om betyget är ett slutbetyg för kursen. VIsas endast i åk 9 för LGR22 och LGRA22, åk 10 för LSPEC22 och i åk 3 för gymnasiet.

3. betygsperiod och tidsstämplar

Används för att hålla reda på när och var betyget gäller. Obligatoriska.

  • GradePeriod – periodbeteckning, format <År><1/2> (ex. 20251).
  • GradeDate – datum då betyget sattes. Ska stämplas med aktuell systemtid
  • LastUpdated – datum för senaste uppdatering. Ska stämplas med aktuell systemtid för ändringen.

4. publicering och synlighet

Styr när och hur betyget blir synligt för elev och vårdnadshavare. Obligatoriska.

  • Definitiv – true om betyget är slutgiltigt, annars false. Om det är true, ska betyget inte gå att ändra.
  • PreGrade – Sätts alltid till 0 eftersom att det är “Hittills uppnådda mål”
  • PublishDate – datum då betyget blir synligt för elev. Hämtas från SchoolConfig.GradePublishDate
  • ShowToStudent – om betyget ska visas för elev.

5. Klass- och utbildningsinformation

Säkerställer koppling till elevens utbildning. Obligatoriska.

  • EducationYear – Årskurs. Ska alltid fyllas i. Hämtas från db.Curriculum
    ClassName – klass eller undervisningsgrupp. Hämtas från db.Curriculum

6. signering och behörighet

Visar vem som har satt betyget och om det har signerats. Obligatoriska.

  • GradeSign – lärarens signatur.
  • GradeSignAuthorized – signatur för behörig lärare (vid krav på dubbel signering). Fylls endast i om information finns i db.CourseParticipants.GradeSignAuthorized
  • GradeSetByUserID – ID för den som satt betyget.
  • CreatedByUserID – ID för den som skapat raden.
  • GradeSetByName – namn på den som satt betyget.
  • UserIDAuthorizedTeacher – lärarens ID. Fylls endast i om information finns i db.CourseParticipants.GradeSignAuthorized

7. låsning

Används för att skydda betyg mot ändringar. Villkorliga.

  • Locked – true om betyget är låst.
  • LockedDate – datum när betyget låstes. Ska stämplas med aktuell systemtid när betyg markeras som låst.
  • GradeLockedByName – namn på den som låste betyget.

8. anpassning och särskilda fall

Används för särskilda studieformer. Villkorliga.

  • Adaptive – flagga om betyget gäller anpassad studiegång.
  • AdaptiveNote – kommentar kring anpassningen.

9. ändringar och kompletteringar

Används om betyget har ändrats i efterhand. Villkorliga.

  • ChangedGradeType – typ av betygsändring (ex. prövning).
  • ChangedGradeNote – kommentar till ändringen.
  • Examination – markerar om betyget satts efter särskild examination.

10. övrigt

Övriga fält för spårbarhet och integration. Valfria.

  • Judgement – Kopplat till “Hittills uppnådda mål”. Används ej.
  • GradeByStudent – om eleven själv satt ett betyg. Används ej.
  • ExternalID – extern identifierare för integration, exempelvis betygsimport från elevregister.
  • FromPreviousSchool – true om betyget lagts in manuellt från från annan skola.
  • GradeNotFollow – används för att markera betyg som inte ska följas upp till nästa termin.

kontroll av befintliga betyg

Innan ett nytt betyg skrivs till tabellen ska systemet alltid kontrollera om eleven redan har ett betyg för samma:

  • CourseID
  • UserID (elev)
  • GradePeriod (Betygsperiod, ex 20251)
  • Datum för terminsstart–terminsslut (kontrollera när betyget registrerades)

Kontrollen ska ske genom en metod som gör följande:.

  • Om ett betyg redan finns ska det uppdateras
  • Om inget betyg finns ska en ny rad skapas.
  • Dubbla betyg i samma kurs och betygsperiod är inte tillåtet.

edge cases

  • Deltagit men ej nått E (endast för anpassad grundskola/gymnasium):
    • GradeText registreras med “1”, som genererar en tom ruta vid utskrift. .
    • ChangedGradeNote = "Deltagit".
  • Frånvaro / saknat underlag:
    • GradeText = "-".
  • Avslutat ämne (Hanteras i Skoladmin):
    • GradeText kompletteras med *.
  • Anpassad studiegång (Hanteras i Skoladmin):
    • GradeText kompletteras med **.

viktiga regler för kvalitetssäkring

  • Varje elev kan endast ha ett aktivt betyg per kurs och period.
  • Felaktiga eller dubbla rader i databasen får inte förekomma, eftersom detta leder till fel i betygskatalog och examensbevis.
  • Systemet ska därför alltid utföra validering innan ny insättning.

utvecklingsförslag

Vidareutveckla vyn för att underlätta för läraren att sätta betyg, exempelvis att kunna klicka på en info-knapp om elev i registreringsvyn för att få en sammanställning av resultat och närvaro.

Tillägg från input från Jonathan: Ha möjlighet att kunna se tidigare satta betyget i ämnet.

medskick till steg 4 inför “teknisk spec” (utvecklarna)

Under arbetets gång med detta dokument kommer flera personer vara inblandade, troligen även en eller flera utvecklare. För att inte tappa bort saker längs vägen kan denna del fyllas på med punkter som någon utvecklare snappar upp och som de kommer behöva diskutera med övriga utvecklare/systemarkitekt etc innan den faktiska implementationen påbörjas.

Se https://drive.google.com/file/d/1sNhtAcjl_DUJRHOJ8jsv-ApQkoX4Fq4y/view?usp=sharing, steg 3B

  • [Skriv din text här med detta textformat.]

dso:s återkoppling till pso

  • [Skriv din text här med detta textformat.]