Vai al contenuto

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 Alto / Medio / Basso
Type PO / PM
Team Seniority Alto / Medio / Basso
Livello Supporto PO Alto / Medio / Basso
Interazione PO Alto / Medio / Basso
Operatività SM 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