Förstudie

Förstudie: Återkommande kalenderhändelser

Nuläge

Vklass V2 har en fungerande kalenderfunktion för vanliga kalenderhändelser (CalendarEvent, subtype CalendarEvent). Personal skapar händelser i ett gemensamt formulär (rubrik, text, startdatum/tid, slutdatum/tid, heldag samt "Visas för"-chips) och händelserna visas i personlig kalender, skol-, klass-, kurs- och samarbetsgruppskalendrar samt i gruppsidornas kalender-widget. Detta bekräftas av de tolv V2-nulägesskärmdumparna i epic-files/ (se epic-files/CLASSIFICATION.md) och av intent-specifikationens Kira-research: CalendarController.Create sparar en händelse i calendarEvent + CalendarEventLinking, och läsflöden som v2_Calendar_GetEventsForUser_v8 hämtar via datumintervall + entitetskoppling. Formuläret saknar helt upprepningsfält.

Problem

Personal som vill lägga in en återkommande informations- eller planeringshändelse — till exempel läxläsning varje tisdag — måste i dag skapa varje tillfälle manuellt, en händelse i taget. Det är tidsödande, felbenäget och leder till att användare i stället missbrukar uppgiftsflödet eller hoppar över registreringen. Det finns heller inget sätt att ta bort en hel serie tillfällen i ett svep.

Önskat läge (varför mockupen)

Mockupen visar hur det befintliga skapa-formuläret utökas med en upprepningssektion (Upprepas inte / Varje vecka / Varannan vecka + antal förekomster, max 25) och hur varje förekomst materialiseras som en vanlig kalenderhändelse som automatiskt syns i alla befintliga kalendervyer — personlig kalender, gruppkalendrar, kalender-widget, elev- och vårdnadshavarvyer — utan uppgifts- eller bedömningskoppling. Den visar också redigering av enskild förekomst samt radering med valet "Radera denna händelse" / "Radera hela serien".

Avgränsning

  • I scope: upprepningsfält i skapa-formuläret (varje vecka/varannan vecka, antal förekomster 1–25), materialiserade förekomster i personlig kalender (veckovy), gruppkalendrarnas månadsvy (skola/klass/undervisningsgrupp/samarbetsgrupp), kalender-widget/kommande händelser, detaljvy med serieinformation, redigering av enskild förekomst, radering av förekomst eller hel serie, läsvyer för elev och vårdnadshavare.
  • Out of scope: uppgifter/prov/inlämningar/bedömning, återkommande lektioner (eget befintligt flöde), externa kalenderimporter/synk, APL-kalendern, avancerade upprepningsregler (månadsvis, undantagsdatum, RRULE), ny notifieringslogik, ändrade behörighetsregler samt "ändra hela serien" (rekommenderas utanför första leverans i intent-specen; UI-texten förklarar att redigering endast avser vald förekomst).

Personas

  • Lärare: Kerstin Berg (T5004-002), Proximaskolan, mentor klass 7A, undervisningsgrupp Svenska 7A
  • Rektor: Magnus Widén (T5004-007), biträdande rektor, Proximaskolan
  • Administratör: Anders Bergman (T5000-001), kommunadministratör, Nordängens kommun (administrerar Proximaskolans skolkalender)
  • Elev: Anna Andersson (S5004-701), åk 7, klass 7A, Proximaskolan
  • Vårdnadshavare: Eva Andersson (C5004-701A), vårdnadshavare till Anna Andersson

Kira-grundning

Kira MCP-verktyg är inte tillgängliga i denna körmiljö. Grundningen kommer i stället från intent-specifikationens redan genomförda och dokumenterade MCP-preflight (1/intent-spec-cursor.md § 2):

  • vklass_code_search: CalendarEventRecurrence.cs (chunk 24325512-a1b2-5ce9-8c70-5d6fc720d1c0), CalendarController.cs (chunk 0c2b4b93-ca95-53e0-b3b6-d8f86564ccd3), GroupsCalendarController.cs (chunk f3048fa9-5c68-585f-8a7f-d739aca950a7), CalendarRepository.cs (chunk 950e6e1e-1c0b-55fd-a741-314144e270a4), CalendarEventQuery.cs (chunk a255fda6-8076-566f-9e64-c04ec9f5916f).

  • search_database_tables/get_multi_table_context: calendarEvent + CalendarEventLinking är den aktuella strukturen; classEvents/schoolEvents/courseEvents/teamEvents är legacy under utfasning.

  • chat-produktkontext: vanliga kalenderhändelser är planering/information; synlighet styrs av skol-/klass-/gruppkopplingar; bedömningsbara läxor/prov skapas i uppgiftsflödet.

  • Att verifiera i implementation (ej mockup): exakt lagringsmodell för serieidentifierare (calendarEventSeries-tabell) och prenumerationsflödens queries.

  • Mockup-konsekvenser: formuläret återanvänder V2:s befintliga fält och lägger upprepningen efter datum/tid; frekvensval begränsas till Upprepas inte / Varje vecka / Varannan vecka; slutvillkor är antal förekomster med tak 25 (matchar RecurringWeeksCount [Range(1,25)]); varje förekomst renderas som vanlig händelse i befintliga vyer; detaljvyn visar serietillhörighet så att "Radera hela serien" blir begriplig.