Specifikation: Skoladmin flytta till V2
Gäller version 3 (run
037b1402). v1/v2 hade ett bredare rollscope med downstream-vyer — deras leveranser beskrivs i1/README.mdoch2/README.md. Per körningens extra instruktioner omfattar v3 endast administrationsgränssnittet för rektor/skoladmin och organisationsadmin.
Variant
Vklass V2 (vklassv2). Vid konflikt med Modern vinner V2.
Roller
- Rektor/skoladmin (
rektor.html+ sektionssidor med?roll=rektor) — Magnus Widén, Proximaskolan. Ser skolscopade grupper (Användare, Klasser & grupper, Skolan, Bedömning, Kommunikation, Import & synk) för sin skola. Ser INTE Organisation-gruppen. - Organisationsadmin (
admin.html+ sektionssidor utan rollparameter) — Ingrid Sundström, Nordängens kommun. Ser allt ovan för alla skolor i organisationen (skolväljare) plus Organisation-gruppen (inloggning, samtycken, massutskick, övrigt).
Elev-, lärar- och vårdnadshavarvyer ingår inte i denna epik (v3). De downstream-vyer som byggdes i
v2 länkas som historik från 3/index.html.
Sidor
| Sida | Grupp | Kontexter |
|---|---|---|
index.html |
Rollval | — |
rektor.html |
Adminstart (rektor) | rektor |
admin.html |
Adminstart (orgadmin) | orgadmin |
admin-anvandare.html |
Användare | rektor + orgadmin |
admin-klasser.html |
Klasser & grupper | rektor + orgadmin |
admin-skolan.html |
Skolan | rektor + orgadmin |
admin-bedomning.html |
Bedömning | rektor + orgadmin |
admin-kommunikation.html |
Kommunikation | rektor + orgadmin (org-flikar endast orgadmin) |
admin-import.html |
Import & synk | rektor + orgadmin |
admin-organisation.html |
Organisation | endast orgadmin (rektor får behörighets-tomläge) |
Användningsfall (UC)
UC-1: Navigera nya V2-adminmenyn och legacy-bryggan
- Aktör: Rektor/skoladmin, organisationsadmin.
- Förutsättning: Användaren har administrativ behörighet (skola resp. organisation).
- Flöde:
- Användaren öppnar sin adminstartsida.
- Systemet visar de grupperade adminområdena per intent-spec §3 med länkar till sektionssidorna.
- Drawern innehåller "Gamla Vklass Admin" (LegacyAdminUrl-brygga) och "Stäng Vklass Admin".
- Resultat: Användaren når alla migrerade admindelar utan att lämna V2, och förstår att V1-bryggan finns kvar tills alla etapper är klara.
- Acceptanskriterier:
- Gruppkorten/menyn visar Användare, Klasser & grupper, Skolan, Bedömning, Kommunikation, Import & synk (+ Organisation för orgadmin) samt not om befintliga grupper (Export, Mallar, Praktik).
- "Gamla Vklass Admin" öppnar en förklaringsdialog om
LegacyAdminUrl(ingen riktig V1-yta). - Rena Vklass-interna delar markeras "Kvar i V1/internt" (flik på översikten).
UC-2: Administrera användare (skolscopat)
- Aktör: Rektor/skoladmin, organisationsadmin.
- Förutsättning: En skola är vald (orgadmin väljer via skolväljaren; rektors skola är låst).
- Flöde:
- Användaren öppnar Användare och växlar mellan flikarna Elever/Personal/Vårdnadshavare.
- Användaren söker på namn/personnummer/klass och öppnar en användare.
- Redigeringsdialogen visar synkade fält låsta med förklaring och kontaktfält redigerbara;
Spara ger kvittens (auditloggas via
ActionAuditLogi produktion). - "Lägg till användare" visar synkvarning (
excludeFromSync). - Underhållsverktygen Återställ lösenord och Godkänn porträtt nås från sidan.
- Resultat: Rektorn kan sköta användaradministration i V2 med korrekta synk-låsregler.
- Acceptanskriterier:
- Minst 10 rader per flik på Proximaskolan; vårdnadshavare visas med barnkopplingar.
- Låsta fält har lås-markering + förklaring; Spara ger kvittens i live region.
- Skolvalet scopar listorna (orgadmin); rektor ser endast sin skola.
UC-3: Administrera klasser och kursgrupper
- Aktör: Rektor/skoladmin, organisationsadmin.
- Flöde:
- Användaren öppnar Klasser & grupper och växlar mellan flikarna Klasser/Kursgrupper.
- Synkade klasser visas låsta för strukturändring; manuella grupper/deltagare markeras.
- Detaljdialogen förklarar
AllowManualCourseparticipantsochexcludeFromSync.
- Resultat: Låsregler mot synken är synliga och begripliga.
- Acceptanskriterier:
- Minst 10 klasser och 10 kursgrupper på Proximaskolan; tomläge med förklaring för skolor utan data.
- Käll-badges (Synkad/Manuell/Undantagen) på raderna.
UC-4: Administrera Skolan-gruppen
- Aktör: Rektor/skoladmin, organisationsadmin.
- Flöde:
- Användaren öppnar Skolan och ser skoluppgifter, nyheter, matsedel, ansökningskategorier och lediga dagar.
- Användaren söker i länktabellen (mainMenu) och öppnar en länk.
- Detaljdialogen visar målgruppsflaggor, OpenInNewWindow, sortering och cache-not mot MainWeb.
- Resultat: Skolans innehåll och länkar administreras samlat i V2.
- Acceptanskriterier:
- Minst 10 länkar med målgruppstaggar; sök filtrerar tabellen med live region-räkning.
- Matsedeln visar leverantörsnot (Skolmaten/Mashie/Matilda per skolkonfiguration).
UC-5: Skicka utskick och hantera kommunikation
- Aktör: Rektor/skoladmin (utskick, blockerade adresser), organisationsadmin (även org-nyheter, delade dokument).
- Flöde:
- Användaren väljer mottagarurval (Alla utom vårdnadshavare / Endast lärare / Endast elever / Endast vårdnadshavare / Endast rektorer) och en eller flera skolor.
- Mottagarräknaren uppdateras; användaren väljer kanal (e-post och/eller SMS med kostnadsinfo) och skriver rubrik + meddelande.
- Ogiltig submit visar valideringssammanfattning; giltig submit visar bekräftelsedialog med summering; bekräftelse ger kvittens och en rad i utskickshistoriken.
- Resultat: Utskicksflödet från V1 (MailUsers) fungerar i V2 med kvittens.
- Acceptanskriterier:
- Mottagarurvalen matchar V1:s värden (K2 i
3/research-notes.md). - Validering pekar på fält via länkar; kvittens visas i live region + historiktabellen uppdateras.
- Blockerade e-postadresser listas (10+ rader); org-flikar visas endast för orgadmin.
- Mottagarurvalen matchar V1:s värden (K2 i
UC-6: Konfigurera bedömning
- Aktör: Rektor/skoladmin, organisationsadmin.
- Flöde:
- Användaren öppnar Bedömning och växlar mellan Standardgrupper/Standardfraser/Förhandsomdömen/Inställningar.
- Standardfraser listas per grupp med sortering; förhandsomdömen visas per kursgrupp och period.
- Inställningsfliken visar flytten av befintliga bedömningsinställningar (org-nivå).
- Resultat: Omdömeskonfigurationen från V1 IUP-sidan är samlad i V2.
- Acceptanskriterier:
- Minst 10 standardfraser och 10 förhandsomdömesrader; detaljdialog per rad.
UC-7: Manuell import med synkvakt
- Aktör: Rektor/skoladmin, organisationsadmin.
- Flöde:
- Användaren väljer skola; för skola med aktiv extern synk spärras importen med förklaring.
- För tillåten skola: mall-nedladdning, uppladdning, förhandsgranskning (Ny/Ändrad/Borttagen) med filter.
- Bekräfta import visar förklaringsdialog (
sp_Import_*-familjen). - Exkluderade från synk listas.
- Resultat: Endast manuell import migreras; externa synkjobb pekas ut som kvar i V1.
- Acceptanskriterier:
- Vakt demonstreras med Evidenskolan (spärrad) vs Proximaskolan (tillåten).
- Minst 10 förhandsgranskningsrader + 10 exkluderade.
UC-8: Administrera organisationen (endast orgadmin)
- Aktör: Organisationsadmin.
- Flöde:
- Orgadmin öppnar Organisation och ser inloggningsval (användarnamn per användartyp, mobilt BankID, V2-redirect, alternativ inloggningstext) och org-inställningar.
- Samtyckesfliken listar samtycken med scope, giltighetstid, AllMustAnswer och aggregerad svarsstatus.
- Massutskicksfliken visar antal utan inloggningsuppgifter per användartyp och kanaler, som villkorad målbild (org-inställning).
- Rektor som öppnar sidan får behörighets-tomläge ("saknar behörighet").
- Resultat: Huvudmannens delar är samlade och rollskyddade.
- Acceptanskriterier:
- Minst 10 samtyckesrader med svarsstatus; interna fält markerade "endast Vklass-personal".
?roll=rektorpå sidan visar behörighetsvakt i stället för innehåll.
UC-9: Demonstrera a11y- och V2-komponentkontrakt
- Aktör: Båda rollerna.
- Flöde:
- Användaren navigerar med skip-links och tangentbord.
- Tabs, filterchips, sök och dialoger uppdaterar ARIA-state i samma kodväg som visuell state.
- Dialoger öppnas via shared
window.vklassDialogManager.openDialog(id, opener)och återställer fokus.
- Resultat: Mockupen visar tillgängliga V2-mönster för hela adminskalet.
- Acceptanskriterier:
- Skip-links
#main-menu+#main-content; dialoger medrole="dialog",aria-modal,aria-labelledby, focus-lifecycle-annotering. - Feature-CSS använder inte
@media (prefers-color-scheme: dark).
- Skip-links
Datamodell (v3-tillägg — bakåtkompatibla nycklar i delad feature-JSON)
- Utskick:
id,subject,audience,schools,channels,sentAt,recipients,status. - BlockeradAdress:
id,email,reason,blockedAt,source. - OrgNyhet:
id,title,published,units,status. - DelatDokument:
id,name,type,updated,audience. - Standardgrupp:
id,name,sort,phraseCount. Standardfras:id,group,text,sort. - Förhandsomdöme:
id,courseGroup,period,status,count,teacher. - Samtycke:
id,title,scope,expires,allMustAnswer,answered,total,status(speglarConsents/UserConsents). - Orginställning:
id,label,value,editable,internalOnly. - Masslogin:
userType,withoutCredentials,channels. - Person-, skol-, klass- och kursdata från delad
consolidated-demo-data.json.
Navigation
- Rollväljare:
index.html→rektor.html(rektor) /admin.html(orgadmin). - Drawer på alla adminsidor: Översikt, Användare, Klasser & grupper, Skolan, Bedömning, Kommunikation, Import & synk, Organisation (endast orgadmin) + Gamla Vklass Admin + Stäng Vklass Admin.
- Rektorskontext bärs som
?roll=rektorpå sektionssidor; drawer-/undermenylänkar skrivs om av JS så kontexten följer med.
Tillgänglighetskontrakt
- Dialoger:
detail-dialog(read-only, Stäng),edit-user-dialog(Avbryt/Spara),send-confirm-dialog(Avbryt/Skicka) — alla via sharedwindow.vklassDialogManager.openDialog(id, opener), inert på.vk-layout, Escape/scrim stänger, fokus återställs till öppnaren. - Tabs:
role="tablist"/tab/tabpanel,aria-selected, roving tabindex, piltangenter. - Filter/sök: filterchips
aria-pressed; sökfälttype="search"med label; resultaträkning i polite live region. - Formulär (utskick + användarredigering): synliga labels,
fieldset/legendför kanal- och skolgrupper,aria-describedbytill hjälp-/felttext,aria-invalidendast i felläge, valideringssammanfattning med fältlänkar, submit-kvittens irole="status". - Drawer/flyouts:
aria-expandedsynkas i samma kodväg som klasstoggling. - Skip-links:
<a class="skip-link" href="#main-menu">+<a class="skip-link" href="#main-content"><main id="main-content" tabindex="-1">.
- Dark mode: endast
body.dark-mode; ingaprefers-color-scheme-regler i feature-CSS. - Keyboard test scope: UC-1 till UC-9 täcks i
3/qa/full-coverage.spec.ts.
Bilder/sketcher
Inga epic-files eller screenshots finns. screenshotMatchingStrategy: reference-only — V2 Athena
Design System + Kira-grundningen i 3/research-notes.md styr utformningen.
Öppna frågor
Produkt-/arkitekturfrågorna i intent-spec §8.1 (menynamn, synkstatusläsvy, masslogin-våg, samtyckesroll, betyg/statistik-spår) visas som reviewpunkter på översikten och är inte implementerade som färdiga funktioner.
Funktionalitet i scope
Se intake.md § Kravklassificering v3 (R3-01–R3-13).