Intent: Docházka (denní checklist)
Status: Implemented · Updated: 2026-05-13
Problém
Učitel v každém slotu potřebuje zaznamenat přítomnost žáků. Default je „všichni přítomní" (95 % případů), výjimky jsou jednotlivci. V navazujícím slotu se docházka z 95 % nemění — vynucené opisování stavu mezi sloty by bylo proti smyslu. Po uzavření docházky učitel chce mít jistotu, že omylem nezmění absenta zpátky na přítomného. Absent žák by neměl dostávat „kredit" za témata, na kterých nebyl.
Kdo to chce + jak ho poznáme
- Primární role:
teacher(U-01, U-02) - Stakeholder: Tomáš (PO)
- Kontext použití: mobil v ruce na začátku slotu, případně doplnění během dne; desktop večer pro doladění
Definice úspěchu
- 4 stavy:
present,absent,late,excused(jediný tap cyklujepresent↔absent; jemnější změna přes detailní UI/sheet). - Tlačítko „Přebrat docházku z X. hodiny" zkopíruje stavy z posledního slotu s vyplněnou docházkou; viditelné pouze v prázdném slotu (žádný overwrite omylem).
- Upsert na
(classbook_entry_id, student_id)— idempotentní, retry-safe. - Po
setAttendanceDone(true)se docházka uzamkne (read-only matrix); jen absenti viditelní, present jsou collapsed. - Při uzavření docházky se automaticky odeberou topic přiřazení absentům — fair credit (žák nebyl, téma nezapočítáno).
Out-of-scope
arrived_at/left_at(čas pozdního příchodu, předčasného odchodu) — DB sloupce existují, UI není (layer 2 feature).- Omluvenky od rodičů přes app (Fáze 3+, dnes přes Sofie chat — neimplementováno).
- Hromadné akce („označ celý ročník absent").
- Filtr studentů podle
status='active'— dnes se zobrazí i inactive (známé omezení, fix až bude víc inactive žáků). - Docházka na day override dnu (výlet) — UI neřeší, viz day-overrides.
- Audit trail kdo a kdy editoval docházku zpětně (jen
updated_atv DB).