roosterwijs/ROADMAP.md

9.8 KiB
Raw Blame History

Roosterwijs — Roadmap / backlog

Geplande verbeteringen, gegroepeerd. [ ] = nog te doen, [x] = klaar. Afgeronde fases (05) staan in README.md. Dit bestand bevat het werk dat nog volgt.

Fase 6 — Rooster bewerken (snel & overzichtelijk)

  • Blokken kopiëren naar andere tijden en dagen (via het bewerkpaneel naar meerdere tijdsloten tegelijk).
  • Blok aanpassen bij klik: klik op een blok in de Roostermaker opent een bewerkpaneel.
  • Snelle inline-aanpassing per blok: vak/activiteit, locatie, doelgroep (groep/subgroep/leerling), begeleiders en opmerking wijzigen in het paneel.
    • Vanuit de Roostermaker (tab Indeling) direct subgroepen aanmaken onder een hoofdgroep, met verantwoordelijke(n) — kolomsgewijs overzicht van subgroepen, vakken en wie verantwoordelijk is.
  • Sneltoetsen in de Roostermaker: N (nieuw blok), ←/→ (week terug/vooruit), T (deze week), Esc (paneel/sluiten); met hint.
  • Rol van een begeleider zichtbaar in de Roostermaker: afkorting (LK/PO/KO) bij de begeleider in een blok en de volledige rol bij het toewijzen.
  • Vak-wizard (module blokwizard, default uit; verschijnt als tab in de Roostermaker): stap-voor-stap vak → voor wie → wanneer/waar (+periode) → begeleiders → controle → inplannen.
  • Personen-wizard + import (module personenwizard, default uit; tab onder Personen): leerling/medewerker enkel toevoegen óf in bulk via plakken/CSV (komma, puntkomma of tab; koprij optioneel) met preview; endpoint /api/personen-import/.

Fase 6 — Perioderooster

  • Perioderooster (/perioderooster, menu onder Rooster, boven Roostermaker): matrix met alle klassen als kolommen en de algemene tijdvakken als rijen. Vakken per klas plaatsen in een sjabloon-opzet (los van de kalender). Live conflictsignalering over alle klassen heen.
  • Voltooien → periode inladen: bij voltooien kies of maak je een Periode (naam = schooljaar + nummer) met datumbereik; een preview toont welke vakken geplaatst en welke overlappende bestaande blokken verwijderd worden, daarna bevestigen. De sjabloon-opzet blijft bewaard voor een volgende periode. Sjabloonblokken tellen niet mee in het echte rooster/conflicten/uren/auto-rooster (Roosterblok.sjabloon).

Fase 6 — Weergave & beheer

  • Printopties-dialog (🖨 in Rooster/Roostermaker): kies wát (huidige selectie / alle klassen) en hóé je afdrukt — indeling (kolommen / dagen onder elkaar), vakken in kleur, begeleiding/lokaal tonen, optionele koptekst — plus papierformaat (A4/A3/A5/Letter) en oriëntatie (liggend/staand). Toegepast via body-classes + dynamische @page.

  • Vakkleur als vlak (toggle 🎨, onthouden per browser): vak volledig in de activiteitskleur i.p.v. een streepje, met automatisch leesbare tekstkleur (zwart/wit op basis van helderheid). Werkt in Rooster/Roostermaker en Perioderooster.

  • Hele periode wissen in het Perioderooster: in de voltooien-dialog een bestaande periode kiezen → "Deze periode wissen" verwijdert (na preview + bevestiging) alle periode-gebonden blokken binnen die periode; vaste (altijd geldige) blokken blijven staan.

Fase 6 — Overzicht & navigatie

  • [~] Alle klassen verwerkbaar in het rooster, overzichtelijk gemaakt — een scope-filter (per klas/leerplein/leerling/personeel) is toegevoegd in Rooster en Roostermaker; een vast per-leerplein-overzicht kan nog volgen.
  • Snelmenu per klas én per bovenliggende groep (chips in Rooster én Roostermaker) om direct dat rooster te tonen.
  • Schooljaar uit het hoofdmenu halen en onder Rooster plaatsen (tab "Schooljaar") met snelle invoer + kalenderbeheer.
  • Instellingenmenu (subtiel onderaan de zijbalk) waaronder Gebruikers en Modulebeheer verdwijnen.
  • De hint "Menu's verschijnen alleen voor ingeschakelde modules." uit de zijbalk verwijderd.
  • Roostermaker-tabbalk logischer: de losse tab "Conflicten" is vervallen (conflicten staan nu in het weekrooster zelf) en Vak-wizard + Auto-rooster zitten onder één "Genereren ▾"-knop. Overgebleven: Week · Jaar · Genereren · Instellingen.
  • Conflicten direct in het rooster: een melding boven het weekrooster (uitklapbaar met details) én een rode omlijning rond de betrokken blokken. Client-side berekend uit de geladen blokken (begeleider/lokaal/leerling dubbel op hetzelfde tijdslot), met respect voor geldigheidsperiodes.

Vakken

  • Per vak automatisch een passend icoon (afgeleid van de naam) — getoond in het rooster en bij Activiteiten/vakken.
    • Optioneel: een icoon handmatig kunnen kiezen/overschrijven (icoon-veld op Activiteit + migratie core 0007; leeg = automatisch op naam).

Stage-module — uitbreidingen

  • Aparte (stage)locaties kunnen toevoegen, los van de gewone lokalen.
  • Een begeleider aan meerdere stages koppelen, maar niet tegelijk aan een theorievak (conflict wordt voorkomen bij opslaan + gesignaleerd via /api/stage-conflicten/).
  • Een leerling verdwijnt op een stagedag(deel) uit de klas in het rooster (in het weekrooster gemarkeerd "Op stage" bij de betreffende blokken).
  • Stage instelbaar per blok, per dagdeel of per dag.

Lokalen & dubbele boekingen

  • Lokalen als apart roomsysteem (naast de vrije Locaties), met capaciteit; gedeeld door lessen en interne stages.
  • Dubbele-boekingcheck per tijdslot: gemeld in het conflicten-overzicht; per school instelbaar om opslaan hard te blokkeren (Lokalen-scherm).
  • Interne stages gebruiken nu een lokaal (de aparte stagelocatie-lijst is vervallen) en tellen mee in de dubbele-boekingcheck.

Groepsindeling

  • Eén sleep-overzicht: bovenliggende groep → groep → subgroep genest, met een zijbalk "nog niet ingedeeld". Personen naar elk niveau slepen; × haalt ze weer weg. Leerlingen licht gekleurd, personeel donker; duidelijke gekleurde structuur per niveau. Inline aanmaken/hernoemen.
  • Toon-filter (Allen / Leerlingen / Personeel) en multi-select: meerdere personen aanvinken en in één keer in een gekozen groep plaatsen (of de selectie samen slepen).

Koppelingen & inzetregels

  • Personeel koppelen aan leerplein en subgroep (personeelsformulier: stamgroep, subgroep-begeleiding én leerpleinen).
  • Theorievakken automatisch beschikbaar voor leerkrachten (een leerkracht mag altijd op een theorievak ingezet worden; daarnaast worden theorievakken bij het aanmaken automatisch gekoppeld).
  • Inzetregel begeleider ↔ vak: leerkracht/praktijkondersteuner alleen op gekoppelde vakken (leerkracht bovendien altijd op theorievakken); klassenondersteuner overal.
  • Hiërarchie vastgelegd: subgroep → groep (Subgroep.groep) en groep → leerplein (Leerplein.groepen).

Toegang & gebruikers

  • Login + gebruikersbeheer gebundeld in de accounts-module; inloggen ook met e-mailadres.
  • Wachtwoordreset: beheerder genereert/zet wachtwoord én self-service via e-maillink (SMTP via .env; standaard console-log).
  • Bulk-import van gebruikers met automatisch gegenereerde wachtwoorden, persoon koppelen/aanmaken en een voorstel op naamgelijkenis.

Module: Urenoverzicht

  • Module die berekent hoeveel uur een groep per vak krijgt. (module uren, default uit; endpoint /api/urenoverzicht/)
  • Optie om dit per leerling te tonen, inclusief stage-uren.
  • Filters op de uren-tabellen (per groep, per vak, zoek op leerling).
  • Geschiedenis per leerling: momentopnames opslaan (model UrenMomentopname) en een tabel leerling × datum met totaal-uren.
  • Vrije dagen tellen niet mee in deze urenberekening.

Roostermaker — vrije dagen & blok vervallen

  • Vak met geldigheidsperiode: een blok kan gelden van/tot een datum (leeg = altijd). geldig_van == geldig_tot = eenmalig op die dag.

  • Dag leegmaken + eenmalig alternatief: per dag knop 🧹 (alle blokken díe dag laten vervallen, blijft lesdag) en (eenmalig blok op die dag), zonder gevolgen voor andere dagen.

  • Vrije/vakantie-/studiedagen niet bruikbaar in de Roostermaker: een blok slepen naar een vrije dag wordt geweigerd; vrije dagkolommen zijn gearceerd; dag-acties (leegmaken/eenmalig) verschijnen niet op vrije dagen.

  • De actie heet nu "dit vak laten vervallen" (per blok, juiste tekst).

  • Een hele dag laten vervallen kan direct in het weekrooster (knop in de dagkop; maakt een vrije dag aan, met "weer lesdag" om te herstellen).

Pictogrammen & leerlingweergave (ZML)

  • Pictogram per vak uploaden (afbeelding) en tonen in het rooster.
  • Grote leerlingweergave (één dag, groot pictogram + vakkleur) en ouderweergave (weekoverzicht), per leerling of groep.
  • Vakkleur duidelijk gebruikt in de weergaven.
  • Dagdeel-indeling (Ochtend/Middag) met koppen + scheidingslijn in de leerling- en ouderweergave (grens 12:00).
  • Later: pictogrammen ook per losse activiteit/stap binnen een dagdeel.

Later

  • Auto-rooster slimmer: voorkeuren — vak liever ochtend/middag (zachte voorkeur met fallback), bepaalde dagen vrijhouden, en max. blokken per dag per groep.

  • Auto-rooster voor meerdere klassen tegelijk: kies meerdere klassen; een vak (bv. gym/atelier) kan voor meerdere klassen gelden, met gedeelde bewaking van begeleider en lokaal over alle klassen heen.

  • Algemene visuele opfris (UX/uiterlijk).

  • Module: automatisch rooster genereren. De gebruiker ge