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, activities20260408000002_attendance.sql— schedule_slots, attendance_records, class_daily_records, excuses, departure_permissions20260408000003_events_tasks.sql— events (s target_class_ids array), event_responses, tasks20260408000004_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