Přeskočit obsah

Dev Log — Sofie Kosmo

Kontextový soubor pro cross-session continuitu. Každá nová session si načte stav.

Prostředí

  • Produkční data: ŽÁDNÁ. Databáze obsahuje jen testovací/seed data. Není potřeba opatrnost s migracemi.
  • Supabase: Cloud (free plan), jediná instance, žádný staging.
  • Deploy: Zatím lokální vývoj + Supabase Cloud.

Aktuální stav features

Kompletní přepis DB schématu — DONE (2026-04-08)

Staré migrace (5 souborů) nahrazeny 4 čistými migracemi pokrývajícími celý evidenční scope:

  • 20260408000001_core.sql — 14 enumů, profiles, classes (s class_type), school_years, students, guardians, student_guardians, students_classes, class_staff, activities
  • 20260408000002_attendance.sql — schedule_slots, attendance_records, class_daily_records, excuses, departure_permissions
  • 20260408000003_events_tasks.sql — events (s target_class_ids array), event_responses, tasks
  • 20260408000004_posts_competencies.sql — posts (interní, nikdy pro rodiče), post_activities (M:N tagging), competency_catalog, student_competencies, notifications, storage bucket

Seed.sql s reálnou strukturou školy: Orion, Perseus, Kentaur I, Kentaur II, Družina, kroužky (Šachy, Keramika, Angličtina extra), 48 žáků, 8 učitelů, 30 rodičů, rozvrh, ukázkové události/omluvenky/odchody.

Učitelský dashboard — DONE (2026-04-08)

Tři záložky: Třída / Třídnice / Přehled.

  • Třída: Grid karet žáků, klik → Sheet s PostForm a historií poznámek
  • Třídnice: Docházka (toggle přítomnost), textarea "co jsme dělali", přehled odchodů/omluvenek dne
  • Přehled: Moje úkoly (checkbox), nadcházející události, aktivní omluvenky, statistiky

Události — DONE (2026-04-08)

  • Seznam nadcházejících událostí s badges typu
  • Detail události s tasky a odpověďmi rodičů
  • Formulář pro vytvoření události s initial tasky
  • Target class_ids pro cílování na konkrétní třídy

Tasky — DONE (2026-04-08)

  • Seznam úkolů (aktivní/splněné), checkbox toggle
  • Vytvoření tasku (title, note, assignee, due_date, optional event vazba)
  • Ředitel vidí všechny tasky, učitel své

Omluvenky — DONE (2026-04-08)

  • Seznam omluvenek (aktivní/všechny filtr)
  • Formulář pro vytvoření (žák, od-do, důvod)
  • Bez approval flow — rodič zadá, učitel vidí

Departure permissions — DONE (2026-04-08)

  • Dva typy: samostatný odchod (s reminder) a vyzvednutí (jméno + telefon)
  • Trvalé a jednorázové
  • Přehled dnes/trvalé

Rodičovský pohled — DONE (2026-04-08)

  • Homepage s kartami dětí (rozvrh dne, nadcházející události, 4 akční tlačítka)
  • Formulář omluvenky
  • Formulář odchodu/vyzvednutí (podmíněný podle typu)
  • Trvalá nastavení (správa permanentních oprávnění)
  • Historie omluvenek

Přepínání kontextu učitel/rodič — DONE (2026-04-08)

  • Učitel, který je zároveň rodič, může přepínat kontext v UI
  • Detekce přes guardians.user_id vazbu
  • Cookie kosmo-context řídí aktivní kontext
  • Navigace se mění podle kontextu

Posts (poznámky k žákům) — UPDATED (2026-04-08)

  • PostForm a PostCard zachovány a integrovány do učitelského dashboardu
  • Přidán M:N tagging přes post_activities (tagy = activities/předměty)
  • RLS přepracován: poznámky vidí autor + třídní učitel + ředitel. Ostatní učitelé vidí jen své.
  • n8n workflow Sofie — Posts AI Processing (ID: 4WCjQRrBiv6e0H6I) — beze změn

Kompetence — DB READY (2026-04-08)

  • Tabulky competency_catalog + student_competencies vytvořeny
  • Status flow: not_presented → presented → practicing → mastered
  • UI zatím neimplementováno, čeká na import z Transparent Classroom

Notifikace — DB READY (2026-04-08)

  • Tabulka notifications vytvořena
  • UI (zvonek v headeru) zatím neimplementováno

Klíčová rozhodnutí

  • Kompletní přepis schématu: Žádná produkční data, přepsali jsme vše od nuly do 4 čistých migrací
  • Flat třídy s class_type: school/kindergarten/nursery/afterschool/club — žádná hierarchie
  • Activities = předměty + kroužky: Jedna tabulka, type discriminátor, slouží i jako tagy na posty
  • Departure permissions: Unified tabulka s type (independent/pickup), is_permanent, reminder
  • Poznámky interní: Posts NIKDY viditelné rodičům. RLS: autor + třídní + ředitel.
  • Rodina odvozená z guardiana: Žádná separátní tabulka families, guardian implicitně definuje rodinu
  • Přepínání rolí: Učitel-rodič detekován přes guardians.user_id, kontext v cookie
  • Události = automatická publikace: Vytvoření události = rodiče ji vidí. Žádné drafty.
  • Tasky KISS: title, note, assignee, due_date, is_completed. Žádný kanban, žádné priority.
  • Školní rok jen na vazbách: students_classes a class_staff mají school_year_id, zbytek má timestamp

Struktura frontendu

web/src/app/
├── layout.tsx              ← Hlavní layout s role-aware navigací
├── page.tsx                ← Seznam žáků (admin/evidence view)
├── login/                  ← Magic link přihlášení
├── auth/callback/          ← OAuth callback
├── pending/                ← Čekající na schválení
├── dashboard/              ← Učitelský dashboard (3 záložky)
│   ├── page.tsx
│   ├── layout.tsx
│   └── components/         ← ClassTab, Classbook, Overview, StudentCard, ...
├── students/               ← CRUD žáků (detail, edit, guardians)
├── families/               ← Přehled rodin/guardianů
├── events/                 ← Události (seznam, detail, nová)
├── tasks/                  ← Úkoly
├── excuses/                ← Omluvenky (staff view)
├── departures/             ← Odchody/vyzvedávání (staff view)
├── parent/                 ← Rodičovský pohled
│   ├── page.tsx            ← Homepage (děti, rozvrh, akce)
│   ├── layout.tsx
│   ├── excuse/new/         ← Formulář omluvenky
│   ├── departure/new/      ← Formulář odchodu/vyzvednutí
│   ├── settings/           ← Trvalá nastavení
│   └── excuses/            ← Historie omluvenek
└── actions/                ← Server actions
    ├── auth.ts, students.ts, guardians.ts, families.ts
    ├── posts.ts, dashboard.ts
    ├── events.ts, tasks.ts, excuses.ts, departures.ts
    └── parent.ts

TODO (další kroky)

  • Build test a oprava případných chyb
  • Deploy migrace na Supabase Cloud
  • Otestovat s reálnými daty (ředitel)
  • Import kompetencí z Transparent Classroom
  • Notifikace UI (zvonek v headeru)
  • Push notifikace (Service Worker)
  • Activity tagy chips v PostForm
  • Export třídnice do PDF