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(chunk24325512-a1b2-5ce9-8c70-5d6fc720d1c0),CalendarController.cs(chunk0c2b4b93-ca95-53e0-b3b6-d8f86564ccd3),GroupsCalendarController.cs(chunkf3048fa9-5c68-585f-8a7f-d739aca950a7),CalendarRepository.cs(chunk950e6e1e-1c0b-55fd-a741-314144e270a4),CalendarEventQuery.cs(chunka255fda6-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.