Vai al contenuto

Richieste e permessi

La pagina Richieste e permessi (/dashboard/permissions) è un calendario delle assenze sincronizzato da Libemax. È pensata per manager e figure HR operative.

Esperienza utente

Cosa si può fare

  • Visualizzare le richieste di permesso/assenza in più viste:
  • Giorno
  • Settimana
  • Mese
  • Per dipartimento
  • Heatmap
  • Filtrare per tipo assenza, stato, dipartimento e testo di ricerca
  • Consultare i pannelli laterali:
  • Assenti oggi
  • Assenze del team
  • Richieste in attesa
  • Verificare data/ora ultimo sync Libemax

Tipi di assenza

Tipo (LeaveRequestType) Etichetta UI Slug CSS
Ferie Ferie vacation
Malattia Malattia sick-leave
ROL ROL rol
ROL104 ROL 104 rol-104
ROLStudio ROL Studio rol-study
ROLExFestivita ROL Ex festività rol-ex-festivita

ROLExFestivita è incluso nel filtro tipo, nelle viste timeline (giorno/settimana/mese), nel pannello assenti oggi e nella legenda colori (tono arancione).

Cosa non si può fare (oggi)

L'interfaccia è sola lettura: non espone approvazione o rifiuto richieste. Il metodo PermissionsService.updateLeaveRequest() esiste nel service ma non è collegato alla UI.

Chi può accedere

Chi ha la policy leaveRequests.show (tipicamente EX / EXS / SM / PO). Route protetta da requirePolicy("leaveRequests.show"); voce sidebar con requiresPolicy: "leaveRequests.show".

Vedi Accesso e ruoli.

Dettaglio tecnico

Sync Libemax

I dati arrivano dalla Lambda people, endpoint /v1/leave-requests. Lo stato sync è su /v1/leave-requests/libemax-sync.

PermissionsService.getLeaveRequests() scarica tutte le pagine automaticamente (pattern expand + reduce con limit: 200 per pagina).

Reattività filtri

Un effect combina i filtri del form con switchMap verso l'API: ogni cambio vista/data/filtro ricarica i dati. I filtri sono sincronizzati con i query params per deep-link e refresh.

flowchart LR
  QP[Query params] <--> PC[PermissionsComponent]
  PC --> E[effect + switchMap]
  E --> PS[PermissionsService.getLeaveRequests]
  PS --> LT[LeaveTimelineComponent]
  PS --> AT[LeaveAbsentTodayComponent]
  PS --> TA[LeaveTeamAbsencesComponent]

Tipi e stati

Modelli in src/models/leave-request.ts; label e slug in src/utils/leave-request.ts (LEAVE_TYPE_LABELS, LEAVE_TYPE_SLUGS).

Le richieste a mezza giornata (isFullDay: false) sono rese come blocchi orari nelle viste griglia giorno/settimana; in mese appaiono come chip sul giorno.

Avatar

LeaveRequestPerson espone profileImage (URL firmato da Slack sync). Timeline e pannelli lo usano tramite AvatarGroup / pipe avatar.

Componenti timeline

LeaveTimelineComponent gestisce il rendering delle cinque viste (LeaveView). I pannelli assenze sono componenti dedicati in src/components/leave-*.

File principali

File Ruolo
src/pages/permissions/permissions.component.ts Stato, filtri, caricamento
src/services/permissions.service.ts API leave + sync
src/models/leave-request.ts Tipi, stati, DTO
src/utils/leave-request.ts Label, slug, tooltip
src/components/leave-timeline/ Viste calendario
src/components/leave-absent-today/ Pannello assenti oggi
src/components/leave-team-absences/ Pannello team
src/guards/policy.guard.ts requirePolicy("leaveRequests.show")