Vai al contenuto

Teams

La sezione Teams (/dashboard/teams) permette di consultare i team aziendali, filtrarli e — per chi ha i permessi — crearne di nuovi e accedere al dettaglio.

Esperienza utente

Tab disponibili

Tab Route Descrizione
Il mio team /dashboard/teams/my-team Card dei team di cui l'utente fa parte
Tutti i team /dashboard/teams/all-teams Elenco completo con banner per membri non assegnati

Cosa si può fare

  • Cercare per nome team o per nome persona (match sui membri): la ricerca è server-side
  • Filtrare per stato, dipartimento, Scrum Master (sidebar filtri): filtri inoltrati all'API
  • Switch automatico di tab: se la tab corrente non ha risultati e l'altra sì, la UI naviga sull'altra tab mantenendo i query params
  • Visualizzare card team con membri (avatar da profileImage) e stato
  • Creare un team (teams.create / canManageTeams()): dialog di creazione
  • Aprire il dettaglio (/dashboard/teams/:id) — solo con canManageTeams(); gli altri non vedono il link "Vai al dettaglio"

Chi può accedere

  • Lettura elenco e "Il mio team": tutti in dashboard
  • Creazione / gestione: PoliciesService.canManageTeams()
  • Dettaglio team: teamDetailGuard — vedi Dettaglio team

Vedi Accesso e ruoli.

Dettaglio tecnico

Struttura route

/teams
├── (teams-management)          → shell con filtri e tab
│   ├── my-team                 → TeamsAssignedComponent
│   └── all-teams               → TeamsListComponent
└── :id                         → teamDetailGuard → TeamDetailComponent

Filtri e ricerca server-side

TeamsService mantiene filtersState (search, mainFilter, businessUnits, scrumMasters) e li inoltra a GET /v1/teams. Il catalogo usato per popolare le opzioni della sidebar non si restringe mentre si cerca (snapshot senza filtri di lista quando possibile).

flowchart LR
  Input[Search / sidebar] --> URL[Query params]
  URL --> TM[TeamsManagementComponent]
  TM --> RS[refreshTeams + searchAndMaybeSwitchTab]
  RS --> API["GET /v1/teams"]
  RS -->|nessun match su tab corrente| Switch[Navigate other tab]

API

Operazione Servizio Endpoint
I miei team TeamsService.getMyTeams() /v1/teams (scope my)
Tutti i team TeamsService.getTeams() /v1/teams
Membri non assegnati incrocio con PeopleService.getPersons()

In Tutti i team, per utenti con permesso di gestione, viene mostrato un avviso se esistono persone senza team assegnato (confronto anagrafica ↔ assegnazioni).

File principali

File Ruolo
src/pages/teams/teams.component.ts Outlet principale
src/pages/teams-management/teams-management.component.ts Shell, filtri, search, switch tab
src/pages/teams-assigned/teams-assigned.component.ts Il mio team
src/pages/teams-list/teams-list.component.ts Tutti i team
src/services/teams.service.ts API team + filtersState
src/guards/teams.guard.ts Guard dettaglio