Vai al contenuto

Riunioni e assenze

Riunioni

Una riunione appartiene a un team e ha un ordine del giorno fatto di punti. Si programma, si svolge e si chiude; da chiusa è in sola lettura finché non la si riapre.

Modelli

Modello Tabella Note
Meeting meetings title, meeting_date, meeting_time (obbligatoria), notes, status, summary_notes, started_at, completed_at, completed_by.
MeetingItem meeting_items Punto: section (testo libero), text, notes, status, task_id e presenter_id facoltativi, position.
— meeting_participants Partecipanti.
— meeting_tasks Task decise in riunione: la task vive nella sua bacheca, la riunione ne tiene il riferimento.

Stati della riunione: scheduled → in_progress → completed (riapribile). Stati di un punto: todo, presented, postponed.

Riunioni e punti si eliminano davvero: non passano dal cestino.

MeetingWorkflow

Il servizio, usato da frontend e API, applica le regole:

  • modificare una riunione richiede task.update sul team; una riunione completata non si modifica;
  • alla creazione tutti i membri del team diventano partecipanti e, a richiesta, i punti non presentati della riunione precedente si riportano con sezione, task e relatore;
  • start(), complete(riepilogo) e reopen() gestiscono il ciclo di vita;
  • importTasks() porta nell'ordine del giorno le task concluse da una certa data (sezione "Realizzati", saltando quelle già in riunioni precedenti) e le task aperte degli stati scelti (sezione uguale al nome dello stato);
  • createTask() crea una task decisa in riunione: richiede task.create, la bacheca deve essere del team, gli assegnatari devono essere partecipanti; la task viene collegata alla riunione;
  • un punto si collega a una task per uuid o per chiave (GEST-12).

Notifiche

MeetingNotifier avvisa i partecipanti alla creazione, un'ora prima dell'inizio (php yii meeting/send-reminders, ogni 5 minuti, una volta sola per data e ora) e alla chiusura con il riepilogo.

Assenze

Un'assenza è un registro di date, non un flusso di approvazione: chi la crea la vede subito nel calendario di tutti. Non c'è un monte ore da scalare.

Modello Leave

  • Tipi: ferie, permesso, malattia.
  • Le ore (hours, da 0,5 a 12) si indicano solo per un permesso di un giorno. Da 8 ore in su (FULL_DAY_HOURS) il permesso conta come giornata intera.
  • Una persona non può avere assenze sovrapposte, salvo più permessi a ore nello stesso giorno.
  • user_id non si assegna da modulo: nessuno può intestare un'assenza a un altro.

Regole

  • LeaveService crea, modifica ed elimina (definitivamente).
  • Gestisce un'assenza il proprietario o il super amministratore.
  • L'elenco mostra le assenze di tutti gli utenti.
  • Le assenze compaiono nel calendario personale e in quello del team, e alimentano l'allarme di copertura nel cruscotto di team (vedi Team e ruoli).