Förstudie: Förbättrad integration Google Classroom

Nuläge

Vklass har sedan länge en Google Classroom-integration som i praktiken är en koppling och en publiceringsväg: en Vklass-kurs/grupp kan kopplas till ett Classroom (kopplingen sparas som JSON i courses.courseDelegatedResources), Vklass kan skapa eller länka Classroom-kurser, och Vklass-uppgifter kan publiceras till Classroom CourseWork (metadata i exams.examDigitalJSON). Deltagarhantering efter initial koppling kräver manuell hantering i Classroom, och det saknas förstaklassigt synktillstånd, beständiga mappningar för coursework/submissions samt en samlad status- och felsökningsyta. (Kira-verifierat i dokument 168: CourseController.ConnectCourseToGoogleClassroom, GoogleAppsConfig, GoogleAppsAccount, courseParticipants.)

Problem

Lärare får dubbelarbete när medlemskap, uppgifter och datum börjar skilja sig mellan Vklass och Classroom. Det är oklart vad som är aktiverat var (organisation/skola/kurs), när synk slår igenom och varför enskilda användare eller objekt faller ut ("tillhör inte organisationen", saknad kontomappning, policy/tjänst avstängd). Fel är tysta eller tekniska, självservice saknas och felsökning driver supportärenden. Administratörer saknar en samlad översikt med felklassning, rekommenderade åtgärder och körloggar.

Önskat läge (varför mockupen)

Mockupen demonstrerar epicens första leverans — synkgrunden: en rollstyrd, transparent och förvaltningsbar Classroom-integration där (1) läraren på kursens Classroom-yta ser koppling, synkprofil, pre-flight, deltagardiff, senaste/nästa körning och kan starta asynkrona jobb med jobbid och progress; (2) administratören hanterar synkprofil, paus/feature flag, statusöversikt med filter, riktade reparationsjobb, legacy-backfill i kontrolläge och auditlogg; (3) skolledaren ser aggregerad hälsa för sin skola; (4) elev och vårdnadshavare ser konsekventa uppgifter, deadlines och separerad inlämnings-/bedömningsstatus i Vklass — vårdnadshavaren helt utan Google-konto. Alla fel visas med felklass, kundvänlig text och rekommenderad åtgärd; status kommuniceras med text och etikett, inte enbart färg.

Avgränsning

I scope (första leveransen, intent-spec § 3.2 + § 12): beständig course mapping bredvid legacy-kopplingen, synkprofil och aktiveringskontroll, pre-flight (OK/Varning/Blockerare), deltagardiff och asynkron deltagarsynk med felisolering, beständig CourseWork-mappning som bevaras vid redigering, status-/jobblogg för pedagog och administratör, feature flag/paus, legacy-backfill i kontrolläge, samt visning av separerad inlämnings- och bedömningsstatus (§ 8, doc 168 AC 6).

Out of scope: Topics-adoption med matchningsinkorg, StudentSubmission-import som funktion, bedömningspanel/add-on i Google, Meet-länkar, notifieringsmodell, Teams-motsvarighet, massimport av historik, full konfliktlösning och proxyåtkomst till Google-innehåll (§ 3.3–3.4).

Personas

  • Lärare: Kerstin Berg (T5004-002), Proximaskolan — kursens Classroom-yta för Svenska 7A
  • Elev: Anna Andersson (S5004-701), åk 7, klass 7A, Proximaskolan
  • Vårdnadshavare: Eva Andersson (C5004-701A), vårdnadshavare för Anna
  • Skolledare: Magnus Widén (T5004-007), biträdande rektor, Proximaskolan
  • Org-/IT-admin: Anders Bergman (T5000-001), kommunadministratör, Nordängens kommun

Kira-grundning

  • Fråga: Kira MCP är inte tillgängligt i denna cloud-runtime; grundningen tas från spec-dokumentens egna verifierade Kira-preflights (dokument 168 § MCP-preflight + § 4–5).
  • Sammanfattning:
    • Dagens Classroom-koppling: courses.courseDelegatedResources (JSON), DelegatedCourseResourceType.GoogleClassroom = 1.
    • Roster-källa: courseParticipants (courseTeacher, endDate, excludeFromSync).
    • Tenantkonfiguration: GoogleAppsConfig (GoogleAppsUseClassroom, GoogleAppsAllowSync, GoogleAppsAutomaticSync, GoogleAppsDomain); konton: GoogleAppsAccount (e-post/alias, saknar stabilt Google userId).
    • Uppgiftskoppling: AssignmentGoogleClassroom (GoogleCourseId, GoogleCourseWorkId, GoogleCourseWorkLink) i exams.examDigitalJSON.
    • Rekommenderade nya tabeller (intent-namn, doc 168 § 5.2): GoogleClassroomSyncProfile, GoogleClassroomCourseMapping, GoogleClassroomUserMapping, GoogleClassroomRosterState, GoogleClassroomCourseWorkMapping, GoogleClassroomSyncJob/JobItem, GoogleClassroomPreflightResult, GoogleClassroomSyncAudit.
  • Att verifiera: inga Classroom-specifika arkitekturbeslut fanns i Kira (jobb-/köplattform, auth-modell, canonical state är öppna beslut § 13) — mockupen tar inte ställning till dessa.