Checklisty zmianowe
Checklisty pozwalają kontrolować realizację obowiązków pracowników na poszczególnych zmianach. Każda zmiana (I i II) ma własną listę zadań, a pracownik oznacza ich wykonanie. Administrator definiuje zadania i analizuje raporty.
Funkcjonalność jest dostępna jako zakładka Checklisty w widoku Zadania
(Panel ➔ Zadania ➔ Checklisty).
👤 Instrukcja dla pracownika
- Wejdź w
Zadania ➔ Checklisty. - Wybierz zmianę (Zmiana I lub Zmiana II) oraz dzień (domyślnie dzisiaj).
- Przy każdym zadaniu wybierz jeden status:
- Zrobione – zapisuje się natychmiast wraz z Twoim imieniem i godziną wykonania.
- Nie dotyczy – możesz dodać komentarz wyjaśniający.
- Nie zrobione – wymagane jest podanie powodu w polu komentarza.
- Po oznaczeniu zadania jako Zrobione na liście widoczne jest wyłącznie imię pracownika, co jednoznacznie potwierdza wykonanie.
Statusy można zmieniać w ciągu dnia – zapisywany jest ostatni wybór wraz z osobą i godziną.
🛠️ Instrukcja dla administratora
Zarządzanie zadaniami (Checklisty ➔ Zadania)
Każde zadanie posiada:
- Nazwę,
- Przypisaną zmianę – I, II lub Obie zmiany (zadanie pojawia się wtedy na obu checklistach, a status każdej zmiany jest niezależny),
- Częstotliwość:
- Codziennie – zadanie stałe,
- Wybrane dni – wskazane dni tygodnia (zadanie cykliczne),
- Jednorazowo – konkretne daty,
- Okres obowiązywania (opcjonalnie „od” / „do”),
- Status aktywności – nieaktywne zadania nie pojawiają się na checklistach.
Usunięcie zadania archiwizuje je (nie pojawia się na nowych checklistach), ale zapisane wcześniej statusy pozostają widoczne w raportach.
Raporty (Checklisty ➔ Raport)
- Raport dzienny – realizacja checklist za wybrany dzień.
- Raport miesięczny – siatka zadań w poszczególnych dniach miesiąca; każda komórka pokazuje status (✓ zrobione, – nie dotyczy, ✗ nie zrobione), a po najechaniu kursorem – pracownika i powód.
Oba raporty można filtrować po zmianie, statusie oraz pracowniku.
🧩 Dokumentacja techniczna
Model danych
Migracja migrations/0145_create_checklist_tables.sql:
checklist_task– definicje zadań:name,shift(I/II/BOTH),frequency_type(daily/weekly/once),weekdays(JSON dni ISO 1–7),specific_dates(JSONyyyy-MM-dd),valid_from,valid_to,is_active,archived_at. Wszystkie rekordy są skopiowane pertenant_id.checklist_completion– status wykonania dla pary (zadanie, zmiana, dzień):status(done/not_applicable/not_done),comment,completed_by_user_id,completed_by_name,completed_at. Unikalność na(tenant_id, task_id, shift, date)– status zapisywany jest jako upsert.
Logika
lib/actions/checklist.ts– akcje serwerowe:- CRUD zadań (
getChecklistTasks,createChecklistTask,updateChecklistTask,archiveChecklistTask) – dostęp tylko dla roliADMIN. getChecklistForDay(date, shift)orazsetTaskStatus(...)– wypełnianie checklist przez pracowników (ADMIN,BACKOFFICE,INSTRUCTOR).getDailyChecklistReport,getMonthlyChecklistReport– raporty (tylkoADMIN).
- CRUD zadań (
- Wyznaczanie zadań na dany dzień: zadanie jest stosowalne, gdy mieści się w
okresie obowiązywania i pasuje do częstotliwości (codziennie / dzień tygodnia /
konkretna data) oraz do zmiany (
shiftlubBOTH).
Interfejs
Komponenty kliencki w app/(dashboard)/dashboard/tasks/checklist/:
checklist-view.tsx– przełącznik trybów (wypełnianie / zarządzanie / raport),checklist-fill.tsx+task-status-control.tsx– widok wypełniania,checklist-manage.tsx+task-form-dialog.tsx– zarządzanie zadaniami,checklist-report.tsx– raporty dzienne i miesięczne.
Checklisty są osadzone jako zakładka w components/tables/tasks-table/tasks-content.tsx.
Uprawnienia
- Administrator – zarządzanie zadaniami i raportami oraz wypełnianie checklist.
- Pracownik (
BACKOFFICE,INSTRUCTOR) – wypełnianie checklist przypisanych do wybranej zmiany. Tryby Zadania i Raport są ukryte dla nie-administratorów.