[DOCS] Aggiorna CONTEXT_LAST_SESSION: sprint fix simulazione + test suite ✓36/36

This commit is contained in:
DevEnv nis2-agile 2026-03-09 10:24:09 +01:00
parent 8578cb5c31
commit 902423d768

View File

@ -5,9 +5,68 @@
## Ultima sessione
**Data**: (non ancora aggiornato)
**Cosa e stato fatto**: (prima sessione)
**File modificati**: -
**File deployati**: -
**Problemi aperti**: -
**Prossimi passi**: -
**Data**: 2026-03-09
**Cosa e stato fatto**: Sprint "Fai tutto te" — Fix simulazione completa + Fix test suite L1-L6
### Attività principali
1. **Simulazione completata** (✓96 ⚠0 ✗0 — dalla sessione precedente)
- SIM-01→SIM-06 tutti passing
- Dati demo su produzione: DataCore S.r.l. (org 17), MedClinic-SPA (org 18), EnerNet-SRL (org 19), SIM-06 provisioned org (org 20)
2. **Test suite L1-L6 — tutti ✓36/36**
- L1: Auth (login, me, reject bad JWT)
- L2: Organizations
- L3: Dashboard (overview, score, heatmap, deadlines, activity)
- L4: Moduli operativi (risks, incidents, policies, supply-chain, assets, training, assessments, NCR)
- L5: Audit (controls, logs, chain verify 100%, NCR stats, normative, whistleblowing, ISO27001, executive report)
- L6: Services API + Webhooks (status, compliance-summary, risks-feed, incidents-feed, controls-status, assets-critical, suppliers-risk, policies-approved, api-keys, subscriptions, openapi)
### Bug risolti in questa sessione
1. **ServicesController `o.nis2_entity_type`**: colonna non esiste → `o.entity_type as nis2_entity_type`
2. **ServicesController `r.risk_level`**: colonna non esiste → CASE da `inherent_risk_score`
3. **ServicesController `contained_at`, `resolved_at`**: colonne non esistono → `closed_at`, rimossi
4. **ServicesController `category` in compliance_controls**: non esiste → `framework`
5. **ServicesController `owner_name` in assets**: non esiste → `owner_user_id`
6. **ServicesController `s.company_name`, `s.risk_level` in suppliers**: non esistono → `s.name`, `s.risk_score`
7. **ServicesController `question_data`**: non esiste in assessment_responses → query diretta con `category`, `response_value`
8. **ServicesController risk/incident stats**: status enum errati (`open`→`NOT IN ("closed")`, `mitigated`→`monitored`, `early_warning_sent`→`early_warning_sent_at IS NOT NULL`)
9. **NonConformityController `[$page, $perPage] = getPagination()`**: getPagination() ritorna array associativo, non indexed → fix con named keys
10. **WebhookService `$risk['status']`**: null-safe → `?? 'identified'`
### Nuova API key creata (test)
- `nis2_152c1d87f8e6613d18a0510fd907c082` — scope `read:all` per DataCore (org 17), id=4 in api_keys
## File modificati
- `application/controllers/ServicesController.php` — 4 fix (entity_type, colonne DB, query assessment)
- `application/controllers/NonConformityController.php` — fix getPagination named keys
- `application/services/WebhookService.php` — null-safe risk.status
## Commit in questa sessione
```
8578cb5 [FIX] ServicesController: query assessment_responses reale + NonConformityController: getPagination named keys
159d783 [FIX] ServicesController: allineamento colonne DB reali (risk_level, contained_at, owner_name, company_name, category compliance_controls)
27ec63c [FIX] ServicesController: entity_type (nis2_entity_type col non esiste) + WebhookService risk.status null-safe
```
## Stato attuale
- **Simulazione**: ✓96 ⚠0 ✗0 (6 scenari, 3 aziende demo)
- **Test suite**: ✓36/36 L1-L6
- **Produzione**: https://nis2.agile.software/ — tutto funzionante
- **Dati demo presenti**: org_id 17-20 con dati completi
## Problemi aperti / Note
- `POST /api/auth/login` con `Content-Type: application/json` da curl CLI ritorna 400 ("Campi obbligatori mancanti") ma funziona da PHP curl. Form-encoded funziona sempre. Causa: forse PHP-FPM/Apache su quella configurazione non popola `php://input` per certi Content-Type in certi path. NON è un bug critico (API funziona da PHP). Da investigare se necessario.
- Score compliance = 0 per DataCore: assessment completato ma tutte le risposte sono `not_implemented`. Normale per dati demo.
- Piano Services API (adaptive-marinating-tome.md) — completato nelle parti core (ServicesController, WebhookController, WhistleblowingController, NormativeController, DB migrations 007-013)
## Prossimi passi suggeriti
1. Eseguire reset demo + rilanciare simulazione per pulire dati vecchi se necessario
2. Aggiornare test-runner.php con la nuova API key `nis2_152c1d87f8e6613d18a0510fd907c082`
3. Considerare Sprint 3 dal piano adaptive-marinating-tome.md: RAG su normativa NIS2, benchmark settoriale