Progetti
La sezione Progetti (/dashboard/projects) offre una vista a card dei progetti aziendali, con due tab per distinguere ciò che è assegnato all'utente dal catalogo completo.
Esperienza utente
Tab disponibili
| Tab | Route | Descrizione |
|---|---|---|
| I miei progetti | /dashboard/projects/projects-assigned |
Progetti assegnati all'utente corrente |
| Tutti i progetti | /dashboard/projects/projects-list |
Catalogo completo |
Cosa si può fare
- Cercare progetti per nome (barra di ricerca nella shell
projects-management) - Filtrare per stato, Product Owner, Scrum Master, tipo collaborazione, tipo cliente, skills — opzioni caricate da
GET /v1/projects/filters - Empty state quando non ci sono risultati ("Nessun progetto trovato")
- Aprire il dettaglio cliccando su una card →
/dashboard/projects/:id - Creare un progetto (
canManageProjects()): dialog a due step dalla shell di gestione
Creazione progetto — step 1 (info)
Nel dialog ProjectCreateDialogComponent (oltre a nome, cliente, stato, budget, descrizione, skills) è possibile impostare in fase di creazione:
| Campo | Opzionale | Note |
|---|---|---|
| Business | sì | Alto / Medio / Basso |
| Type | sì | PO / PM |
| Team Seniority | sì | Alto / Medio / Basso |
| Livello Supporto PO | sì | Alto / Medio / Basso |
| Interazione PO | sì | Alto / Medio / Basso |
| Operatività SM | sì | Sì / No |
Il campo People non compare in creazione: è calcolato dal backend dopo il salvataggio (vedi Dettaglio progetto).
Lo step 2 resta la selezione membri (PO obbligatorio, tipi contratto, …).
Chi può accedere
- Lettura elenco e dettaglio: tutti gli utenti autorizzati
- Creazione / modifica:
PoliciesService.canManageProjects()— vedi Dettaglio progetto
Vedi Accesso e ruoli.
Dettaglio tecnico
Struttura route
/projects
├── (projects-management) → shell con filtri e creazione
│ ├── projects-assigned → ProjectsAssignedComponent
│ └── projects-list → ProjectsListComponent
└── :id → ProjectDetailComponent (no route guard)
Catalogo filtri
ProjectService.loadProjectFilters() chiama /v1/projects/filters (cache + shareReplay). Le list call (getProjects / assigned) prefetchano il catalogo in parallelo senza bloccare se il catalogo fallisce.
Risposta tipica (ProjectFiltersResponse): statuses, productOwners, scrumMasters, collaborationTypes, clientTypes, skills.
API
| Operazione | Servizio | Lambda |
|---|---|---|
| Progetti assegnati | ProjectService.getAssignedProjects() |
collaboration |
| Tutti i progetti | ProjectService.getProjects() |
collaboration |
| Catalogo filtri | ProjectService → /filters |
collaboration |
Endpoint base: /v1/projects su Lambda collaboration.
File principali
| File | Ruolo |
|---|---|
src/pages/projects/projects.component.ts |
Outlet |
src/components/projects-management/ |
Shell, filtri, creazione |
src/components/projects-management/project-create-dialog/ |
Dialog create (campi stato progetto inclusi) |
src/components/projects-assigned/ |
I miei progetti |
src/components/projects-list/ |
Catalogo |
src/services/project.service.ts |
API + filters |
src/models/project.ts |
Filtri, status, ProjectLevel / ProjectType, payload |