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 concanManageTeams(); 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() |
— |
Banner membri non assegnati
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 |