Skip to main content

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

  1. Wejdź w Zadania ➔ Checklisty.
  2. Wybierz zmianę (Zmiana I lub Zmiana II) oraz dzień (domyślnie dzisiaj).
  3. 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.
  4. 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 (JSON yyyy-MM-dd), valid_from, valid_to, is_active, archived_at. Wszystkie rekordy są skopiowane per tenant_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 roli ADMIN.
    • getChecklistForDay(date, shift) oraz setTaskStatus(...) – wypełnianie checklist przez pracowników (ADMIN, BACKOFFICE, INSTRUCTOR).
    • getDailyChecklistReport, getMonthlyChecklistReport – raporty (tylko ADMIN).
  • 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 (shift lub BOTH).

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.