Analisi Funzionale - Versione 1.0
Sintesi esecutiva
Questa versione definisce i requisiti iniziali per una libreria Angular riusabile: componenti UI wrapper con doppio supporto PrimeNG/Bootstrap, servizi di utilità (storage, log, form), componente AutoForm, auth opzionale con Azure Entra External ID e componenti avanzati tra cui tabella “server-driven” e menu laterale responsive.
Domande di chiarimento (max 10)
- Quale nome vuoi dare alla libreria (nome npm + namespace, es.
@org/ui-kit)? - Quali versioni di Angular devono essere supportate (minimo target)?
- PrimeNG e Bootstrap: vuoi supportare solo styled (CSS) o anche unstyled/design tokens? Come gestire temi?
- AutoForm: lo schema JSON è custom o vuoi compatibilità con JSON Schema (draft-07/2020-12)?
- Tabella: export deve supportare CSV/XLSX/PDF o solo CSV?
- Auth: preferisci basarti su MSAL Angular o un’integrazione astratta (con servizi pronti e feature flag)?
- Storage: serve TTL e/o cifratura? Serve migrazione/versioning per IndexedDB?
- i18n: vuoi supporto multi-lingua per label/errori (strumento preferito)?
- Accessibility: target WCAG 2.1 AA è requisito bloccante per v1?
- Vuoi un “grid system” astratto o delega al provider (Bootstrap grid)?
Indice
Contesto & Stakeholder
Vedi docs/overview.md.
Ambito
- Selezione UI provider (PrimeNG/Bootstrap) a livello progetto.
- Set di componenti base e avanzati come wrapper.
- Servizi di utilità: storage, logging, supporto form.
- AutoForm (generazione form da JSON).
- Auth Azure Entra External ID (opzionale/feature flag).
- Componenti avanzati: tabella server-driven e menu laterale responsive.
- Documentazione dettagliata in Markdown.
Fuori ambito (v1.0)
- Design system completo (token/branding) per più brand senza input di UX.
- Implementazione di API backend o contratti specifici di dominio.
- Migrazioni/adapter per UI provider diversi da PrimeNG/Bootstrap.
Requisiti non funzionali (NFR)
| Codice | Categoria | Criterio misurabile | Soglia/Target | Note |
|---|---|---|---|---|
| NFR-01 | Compatibilità | Versione minima Angular supportata | Aperto | Da confermare (Q2) |
| NFR-02 | Packaging | Build ESM + tree-shaking | Verificabile in app consumer | Nessuna dipendenza runtime superflua |
| NFR-03 | Qualità | Copertura unit test (core servizi + componenti critici) | ≥ 70% linee sul core | Soglia iniziale |
| NFR-04 | Accessibilità | Conformità controlli principali | Target WCAG 2.1 AA | Da confermare (Q9) |
| NFR-05 | Performance | Table server-side su dataset grande | Nessun blocco UI percepibile | Dipende da provider |
| NFR-06 | Sicurezza | Nessun segreto hardcoded; auth attivabile | Obbligatorio | Logging non espone PII by default |
| NFR-07 | Documentazione | Esempi completi per componenti principali | ≥ 1 esempio per componente | v1.0: subset critico |
Regole di business (cross-cutting)
- Un progetto deve poter scegliere un solo UI provider attivo alla volta (PrimeNG oppure Bootstrap).
- I componenti wrapper devono offrire API stabile e coerente tra provider.
- Le feature opzionali (es. Auth) devono essere disattivate di default e attivabili tramite configurazione.
Modello dati & integrazioni (alto livello)
- AutoForm: input JSON (schema) + modello dati iniziale (opzionale).
- Table server-side: interfaccia astratta per fetch dati paginati/ordinati/filtrati.
- Auth: integrazione verso Azure Entra External ID tramite provider configurabile.
Flussi di processo (alto livello)
- Consumer configura la libreria (provider UI, logging, feature flags).
- Consumer usa componenti wrapper minimizzando dipendenze dirette dal provider nel codice applicativo.
- Servizi (storage/log/form/auth) sono disponibili via DI e sostituibili/estendibili.