AS-IS e gap analysis
Sintesi
Il POC copre già anagrafiche dipendenti e progetti, associazioni, import Excel/presenze, allocazione mensile, consolidamento, export e un primo forecast. Non è però ancora pronto per un uso multiutente/multicliente: lo schema di dominio non collega i record all'organizzazione e le API controllano l'autenticazione senza applicare sistematicamente il tenant scope.
Inventario AS-IS
| Area | Esistente | Limite principale |
|---|---|---|
| Dipendenti | Anagrafica, sede, area, manager, titolo di studio, contratto, orario, livello, date rapporto, costo corrente | Profilo HR incompleto; la sede non è un catalogo né è storicizzata; ruoli non separati; nessuna azienda legale; nessun collegamento all'account utente; ferie assenti |
| Costi | current_hourly_cost_eur e tabella employee_cost_history | Va definita la fonte autorevole, impedita la sovrapposizione degli intervalli e usato il valore valido alla data del calcolo |
| Progetti | Anagrafica, periodo, budget, finanziatore, percentuali, costi standard, associazioni risorse | Mancano sede opzionale strutturata, compatibilità geografica progetto-risorsa, limite ore per risorsa, regole complete di costo e governance dei cambiamenti |
| Enti finanziatori | Entità funding_bodies | Tariffe standard non sono modellate chiaramente per ente + macro-livello + intervallo di validità |
| Consuntivo | Presenze giornaliere/mensili, allocazioni, run di calcolo, risultati e consolidamento immutabile | Il “mese consegnato” non è distinto in modo esplicito dal cursore consuntivo; ricalcolo retroattivo e propagazione non sono completi |
| Forecast | Target mensili, associazioni, costo forecast, ricalcolo per progetto e globale | Non considera ferie/monte ore, copertura globale, over-allocation e limite ore per progetto/risorsa come problema unico |
| Import/export | Workbook, staging, diff, apply, import presenze, export dipendenti/progetti/timesheet | Parser e mapping sono ancora vertical-specific; manca un contratto adapter/versione formato realmente estendibile |
| Audit | audit_log generico e metadati sui run | Copertura e correlazione insufficienti per spiegare ogni variazione e ricalcolo |
| Organizzazioni | Tabelle placeholder rendicontazione.organizations e organization_members | Non referenziano l'identità di piattaforma e non sono collegate alle entità operative |
| Autorizzazione | Utente autenticato richiesto dalle API | Nessun filtro tenant uniforme; rischio di lettura/scrittura cross-organization |
Gap funzionali verso il TO-BE
| Requisito | Stato | Gap da chiudere | Priorità |
|---|---|---|---|
| Condivisione dati tra utenti della stessa organizzazione | Assente | Tenant key, risoluzione organizzazione, policy API/DB, migrazione dati, test negativi | P0 |
| Isolamento tra organizzazioni | Assente | Deny-by-default e vincoli sulle relazioni cross-tenant | P0 |
| Mini gestionale HR | Parziale | Profilo completo, ruoli, macro-livelli, società, reporting line, storico rapporto | P1 |
| Accesso dipendente e piano ferie self-service | Assente | Link dipendente-account, permessi, workflow ferie, calendario e audit | P1 |
| Collaboratori P. IVA | Assente | Tipo risorsa, organizzazione “Liberi professionisti”, ore contrattuali e bypass forecast/consuntivo automatico | P1 |
| Import/export pluggabili | Parziale | Canonical model, adapter registry, versioning, validation report, idempotenza | P1 |
| Enti e tariffe storiche | Parziale | Tariffe per macro-livello e validità, regola standard/reale deterministica | P1 |
| Sedi e compatibilità progetto-risorsa | Assente/parziale | Catalogo sedi, storico sede dipendente, sede opzionale progetto e vincolo sulla città | P1 |
| Correzione retroattiva | Parziale | Dirty range, ricalcolo in cascata, versioni e protezione mesi consegnati | P1 |
| Doppio cursore temporale | Parziale | actual_through_month separato da delivered_through_month | P1 |
| Forecasting vincolato | Parziale | Disponibilità, ferie, copertura, capacità, 1720 configurabile, infeasibility report | P1/P2 |
| Hardening commerciale | Assente/parziale | SLO, backup/restore, osservabilità, security review, migrazioni e runbook | P2 |
Debito strutturale prioritario
- Identificativi utente non omogenei (
bigintin alcune tabelle contro ID testuali nell'identità di piattaforma). - Tabelle globali senza
organization_ide chiavi uniche non tenant-aware. rendicontazione-servicecontiene route, parser, import, repository, allocazione ed export nello stesso deployment e con confini ancora deboli.- Scritture e calcoli sincroni possono diventare fragili con ricalcoli globali.
- Lo stato operativo è globale anziché per organizzazione.
- Il costo corrente duplicato sul dipendente può divergere dallo storico.
Rischio se si sviluppano prima le feature
Aggiungere ferie, società, tariffe o nuovi formati prima del tenant scope moltiplicherebbe tabelle e endpoint da migrare, aumentando sia il rischio di data leak sia il costo della bonifica. Per questo la Fase 0 organizzazioni è un gate di ingresso per tutto il resto.