Specifikation: Jönköping Kommun - Inlämningsuppgifter (Epic 26 — batchnedladdning och utskrift av inlämningar)
Variant
Vklass V2 (vklassv2).
Roller
- Lärare (
teacher.html→teacher-detail.html) — ser Prov och uppgifter-listan, öppnar en uppgifts inlämnings-/resultatflik, markerar inlämningar, laddar ned samlad ZIP och skapar sammanslagen PDF. - Elev, vårdnadshavare, rektor och admin får inga nya vyer i denna version. Epic 26 ändrar inte elevens inlämningsvy, bedömningsflödet eller andra rollers funktioner (intent-spec §3, AC-20).
index.htmlförklarar detta.
Användningsfall (UC)
UC-1: Se exportstatus per inlämning
- Aktör: Lärare
- Förutsättning: Läraren har bedömningsåtkomst (
CanAssess) till en uppgift med digital inlämning och står på fliken Inlämningar. - Flöde:
- Läraren öppnar Bedömning > Prov och uppgifter och klickar "Inlämningar" på uppgiften Novellanalys – Dystopier.
- Listan visar en rad per inlämning (gruppinlämning = EN rad) med namn, inlämningsdatum, filstatus, bedömning och publicering.
- Radens filstatus visar varför den kan eller inte kan exporteras.
- Resultat: Läraren ser direkt vilka inlämningar som är exporterbara.
- Acceptanskriterier:
- Rad med minst en exporterbar fil/sparad kopia har en aktiv kryssruta (AC-1).
- Rad utan inlämning har ingen valbar kryssruta och behåller "Lämna in åt elev" (AC-3).
- Text-only-inlämning visar "Saknar filer" och kan inte väljas (AC-3).
- Rad med endast filer över 10 MB visar "Fil större än 10 MB" och kan inte väljas (AC-4).
- Rad med blandade storlekar är valbar och visar att större filer utelämnas (AC-4).
- Google Drive/OneDrive/Google Classroom med sparad kopia är valbar med källinfo (AC-5).
- Extern inlämning utan sparad kopia visar "Saknar sparad kopia — hanteras manuellt" och kan inte väljas (AC-6).
- Gruppinlämning visas som en rad med gruppmedlemmar synliga (§4.2).
UC-2: Markera inlämningar och välj alla
- Aktör: Lärare
- Förutsättning: UC-1; minst en exporterbar inlämning finns.
- Flöde:
- Läraren kryssar i enskilda rader, eller använder "Välj alla" i tabellhuvudet.
- Antal valda ("N valda") uppdateras direkt och annonseras via polite live region.
- Åtgärdsknapparna aktiveras när minst en rad är vald.
- Resultat: Ett urval av exporterbara inlämningar är markerat.
- Acceptanskriterier:
- "Välj alla" väljer alla valbara rader i aktuell lista — aldrig ej valbara rader (AC-2).
- Antal valda visas och uppdateras tillgängligt (AC-18).
- Kryssrutor går att nå och växla med tangentbord (Tab + Space) (AC-18).
- Massvalet blandas inte ihop med befintlig "Expandera alla"-funktion (§4.1).
UC-3: Ladda ned valda som ZIP
- Aktör: Lärare
- Förutsättning: UC-2; minst en rad vald.
- Flöde:
- Läraren klickar "Ladda ned valda" (
type="button"— submit:ar inte bedömningsformuläret). - En preflight-dialog visar vad som ingår: deterministisk mappstruktur
<Uppgiftstitel>/<Elevnamn>_<Datum>_<ID>/<Filnamn>samt sektionen "Utelämnas" med orsak per fil (för stor, saknas i lagring, saknar sparad kopia). - Läraren bekräftar "Ladda ned ZIP"; mockupen simulerar nedladdningen och bekräftar via notifikation. Är exporten delvis komplett sägs det uttryckligen, med hänvisning till README.txt i ZIP:en.
- Läraren klickar "Ladda ned valda" (
- Resultat: En samlad ZIP med valda inlämningars filer (simulerad i mockupen).
- Acceptanskriterier:
- ZIP-preflighten listar filer per vald inlämning med elevnamn/gruppnamn i mappnamnet (AC-7, AC-8).
- Utelämnade filer redovisas med orsak innan nedladdning startar (AC-9).
- Fil som saknas i lagring stoppar inte exporten; den redovisas neutralt (§4.4).
- Delvis komplett export markeras tydligt i dialog och notifikation (AC-9, risk §9).
- Knappen submit:ar inte bedömningsformuläret (AC-19).
UC-4: Skriv ut valda som sammanslagen PDF
- Aktör: Lärare
- Förutsättning: UC-2; minst en rad vald.
- Flöde:
- Läraren klickar "Skriv ut valda" (
type="button"). - En dialog visar PDF-sammanställningen: försättssida (uppgiftstitel, kursgrupp, datum, antal valda) och per inlämning status Ingår / Utelämnas (dokumenttyp stöds inte, fil saknas, fil över 10 MB, saknar sparad kopia).
- Läraren bekräftar "Skapa PDF"; mockupen simulerar skapandet och bekräftar via notifikation.
- Läraren klickar "Skriv ut valda" (
- Resultat: En sammanslagen PDF för stödda filtyper (simulerad), med tydlig statussektion.
- Acceptanskriterier:
- PDF-sammanställningen innehåller försättsinformation och per-inlämningsstatus (AC-10, AC-11).
- Dokumenttyper som inte stöds listas som manuellt hanterade — de blockerar inte flödet (§4.5).
- Om inget filinnehåll kan ingå visas ett kontrollerat lokaliserat felmeddelande i dialogen (AC-15).
- Knappen submit:ar inte bedömningsformuläret (AC-19).
UC-5: Felhantering vid inga val
- Aktör: Lärare
- Förutsättning: UC-1; inga rader valda.
- Flöde:
- Åtgärdsknapparna är visuellt inaktiva (
aria-disabled="true", fortfarande fokuserbara). - Klick/Enter på inaktiv knapp visar meddelandet "Inga inlämningar valda. Markera minst en inlämning i listan." via
role="alert".
- Åtgärdsknapparna är visuellt inaktiva (
- Resultat: Läraren får tydlig, lokaliserad återkoppling utan att någon export startar.
- Acceptanskriterier:
- Tydligt lokaliserat meddelande vid 0 valda (AC-14).
- Meddelandet annonseras för skärmläsare och knappen förblir tangentbordsnåbar (AC-18).
Datamodell
Mock-data i mock-data/inlamningsuppgifter-data.json; personreferenser via userID i consolidated-demo-data.json.
- Uppgift (
exams):assignmentId,title("Novellanalys – Dystopier"),type("Läxa (digital inlämning)"),courseID(8004, Svenska 7A),date,maxFileSizeMB(10) - Inlämning (
assignment):submissionId,studentID(ellergroupMembers: [studentID]+submittedByvid gruppinlämning),submittedAt,source(vklass|googledrive|onedrive|classroom),hasSavedCopy(bool, för externa källor),textOnly(bool),assessed,published - Fil (
assignmentFiles):fileName,sizeMB,fileType,supportedForPdf(bool),missingInStorage(bool) - Härledda fält (beräknas i script.js, speglar
AssignmentResultStudentsModelBuilder):selectable,exportableFileCount,skippedFileCount,statusReason(ingen-inlamning|saknar-filer|for-stor|saknar-kopia|ok|delvis) - Prov och uppgifter-listan (
teacher.html): rader medtitle,type,date,courseGroup,digitalSubmission(JA/NEJ),action(inlamningar|bedom)
Navigation
- Lärare: vänstermeny BEDÖMNING > Prov och uppgifter (markerad aktiv) →
teacher.html(lista) → knappen "Inlämningar" på uppgiften →teacher-detail.html(flikar INLÄMNINGAR | KRITERIER). teacher-detail.htmlhar "Tillbaka"-länk tillteacher.html.- Användarmenyns "Byt vy" →
index.html(rollväljare) på alla sidor.
Tillgänglighetskontrakt (a11y baseline)
- Dialogmodaler i flödet:
#download-dialog(ZIP-preflight),#print-dialog(PDF-sammanställning),#not-implemented-dialog. Alla öppnas via sharedwindow.vklassDialogManager.openDialog(id, opener)— ingen lokal DialogManager. Krav:role="dialog"+aria-modal="true"+aria-labelledby, fokus till titel, fokusfälla, Escape stänger, fokus åter till öppnaren,inertpå.vk-layoutmedan öppen. Se.cursor/skills/mockup-accessible-dialog/SKILL.md. - Tabs i flödet:
#submissions-tablist(INLÄMNINGAR | KRITERIER) påteacher-detail.html—role="tablist"/tab/tabpanel, roving tabindex, piltangenter,aria-selected-synk. Semockup-accessible-dynamic-ui/SKILL.md. - Filter/sök i flödet: ÄMNESGRUPP-panelen på
teacher.html(replikerad V2-trigger) — disclosure-mönster medaria-expanded/aria-controls; gruppval filtrerar listan och resultatet annonseras i polite live region. - Massval: kryssrutor är riktiga
<input type="checkbox">medaria-labelper elev; "Välj alla" i<thead>; antal valda i#selection-count+ polite live region#selection-status. - Toolbar flyouts: starter-standard —
aria-expandedsynkas med--open-klass i samma kodväg (_syncFlyoutAria). - Form validation: inga nya formulärfält. Nya åtgärdsknappar har
type="button"inuti bedömningsformuläret (AC-19). "Inga val"-fel viarole="alert". - Skip-link:
<a class="skip-link" href="#main-menu">+<a class="skip-link" href="#main-content">+<main id="main-content" tabindex="-1">. - Keyboard test scope: UC-2 (markera/välj alla), UC-3 (öppna/stänga download-dialog), UC-4 (öppna/stänga print-dialog), UC-5 (inaktiv knapp + alert) måste ingå i Playwright-specen.
Bilder/sketcher
- V2 references to follow: se
1/epic-files/CLASSIFICATION.mdoch1/design-reference-log.md. Primär:nulage-larare-inlamningsuppgifter-inlamningar-resultat.png(inlämningsvyn),nulage-larare-inlamningsuppgifter-lista.png(listan). - Inga V1-referenser, inga design-sketcher.
Funktionalitet i scope
Speglar REQUIRED-tabellen i intake.md § Kravklassificering (R-01–R-20): radvalbarhet med statusar, välj alla + antal valda, ZIP-nedladdning med preflight/manifest, sammanslagen PDF med statussida, felhantering (inga val, inget printbart innehåll, delvis komplett), formulärskydd och full tangentbords-/skärmläsarstöd.
Öppna frågor
Inga öppna frågor — specifikationen är fullständig (intent-specens §9 innehåller redan besvarade produktbeslut).