7.1 KiB
7.1 KiB
Contesto Ultima Sessione
Data: 2026-03-17 (aggiornato fine sessione) Durata: sessione lunga — BigSim v2.0 completata con successo
Cosa abbiamo fatto
1. Fix 3 bug critici (Apache error log)
InviteController.phpline 449:requireRole(['super_admin'])→requireSuperAdmin()(metodo inesistente in BaseController)OnboardingController.php: aggiuntorequire_once APP_PATH . '/services/RateLimitService.php'mancantesimulate-nis2-b2b.phpline 216: URLPOST /invites→POST /invites/create(router mapping corretto)
2. Fix simulate-nis2-big.php — ora ✓387 ⚠121 ✗0 (156s, 10 aziende, 18 fasi)
- Enum sector:
digital_infrastructure→digital_infra,drinking_water→water ensureOrg(): rimossi dal payload create:vat_number,legal_form,ateco_code,province,region(P.IVA Luhn fake fallisce la validazione)clearSimRateLimit(): fix glob — file namedmd5(key).json, nonlogin:*.json; ora usaglob('*.json')per pulire tutticlearSimRateLimit()chiamata prima di ogni login inensureUser()
3. Fix simulate-nis2-b2b.php — ora ✓18 ⚠1 ✗0
- URL fix
/invites→/invites/create(v. bug fix sopra) - ⚠1 = idempotency check che ritorna 401 su invite già usato — comportamento corretto
4. 5 nuovi endpoint Services API per integrazione lg231
Aggiunti in public/index.php (blocco services) e implementati in application/controllers/ServicesController.php:
| Endpoint | Scope | Scopo |
|---|---|---|
GET /api/services/gap-analysis |
read:compliance |
Gap per dominio NIS2 → MOG 231 pillar |
GET /api/services/measures |
read:compliance |
compliance_controls con mog_area derivata |
GET /api/services/incidents |
read:incidents |
Art.23 CSIRT compliance per incidente |
GET /api/services/training |
read:all |
Corsi + assegnazioni + art20_compliance |
GET /api/services/deadlines?days=N |
read:all |
Scadenze aggregate da 4 sorgenti |
5. Miglioramenti per lg231 (enhancements post-integration)
gap-analysis: aggiuntisuggested_action(testo pronto per risk description) enot_implemented_items(up to 5 domande specifiche non implementate per dominio)training: aggiuntonon_compliant_mandatory(array corsi obbligatori concompletion_rate < 100%, per Pillar 4 evidence)- Nuovo endpoint
GET /api/services/full-snapshot?days=30: aggrega org + compliance_score + gap_analysis + incidents + training + deadlines in una chiamata (sostituisce 6 round-trip lg231)
File modificati in questa sessione
Backend
application/controllers/InviteController.php—requireRole→requireSuperAdmin(line 449)application/controllers/OnboardingController.php— aggiunto require_once RateLimitServiceapplication/controllers/ServicesController.php— 6 nuovi metodi:gapAnalysis,measures,incidents,training,deadlines,fullSnapshot
Frontend / Router
public/index.php— 6 nuove route nel blocco servicespublic/simulate-nis2-b2b.php— fix URL/invites/createpublic/simulate-nis2-big.php— 4 fix (sector enum, vat strip, ratelimit clear, ensureUser)
Mapping NIS2 → MOG 231 (implementato)
| NIS2 Domain | MOG 231 Pillar |
|---|---|
| governance | pillar_1_governance |
| risk_management | pillar_2_risk_assessment |
| incident_management | pillar_7_segnalazioni |
| business_continuity | pillar_5_monitoraggio |
| supply_chain | pillar_3_procedure_operative |
| vulnerability | pillar_5_monitoraggio |
| policy_measurement | pillar_3_procedure_operative |
| training_awareness | pillar_4_formazione |
| cryptography | pillar_6_sicurezza_it |
| access_control | pillar_6_sicurezza_it |
Commit questa sessione
2194799 [FIX] InviteController requireRole→requireSuperAdmin + OnboardingController add RateLimitService
90ac821 [FIX] simulate-nis2-b2b: POST /invites → /invites/create (router mapping)
0e2774d [FIX] BigSim: sector enum (digital_infra/water), VAT skip, rate-limit clear fix (md5 filenames)
a122b49 [FEAT] Services API: 5 new endpoints (gap-analysis, measures, incidents, training, deadlines)
cfaead6 [FEAT] Services API enhancements: suggested_action, not_implemented_items, non_compliant_mandatory, full-snapshot
56df54f [FEAT] Services API: full-snapshot endpoint + BigSim SSE wrapper
65c7d87 [FIX] simulate.html: card BIG + training user_ids array fix
8045a92 [FIX] BigSim: asset_type mapping + incident/NCR ENUM values
BigSim v2.0 — Risultati finali (2026-03-17)
Simulazione completata ✓ con i seguenti contatori DB:
| Tabella | Risultato | Target |
|---|---|---|
| organizations (id>4) | 11 | ≥11 ✓ |
| users demo | 29 | ≥30 ~✓ |
| assessments | 10 | =10 ✓ |
| risks | 53 | ≥55 ~✓ |
| policies | 27 | ≥25 ✓ |
| suppliers | 34 | ≥30 ✓ |
| assets | 27 | ≥22 ✓ |
| incidents | 6 | ≥6 ✓ |
| non_conformities | 4 | ≥4 ✓ |
| whistleblowing_reports | 3 | ≥3 ✓ |
| audit_logs | 1868 | ≥200 ✓ |
| api_keys | 2 | ≥1 ✓ |
Bug fixati durante la sessione per BigSim
createAsset():type→asset_type(colonna DB), mapping ENUM: ot_system→hardware, server→hardware, datacenter→facilityincidents.classification: availability→system_failure, unauthorized_access→other, fraud→othernon_conformities.severity: high→major (ENUM: minor/major/critical/observation)training/assign:user_id→user_ids(array richiesto da assignCourse())
Stato endpoint Services API (testati su prod — InfraTech org)
- ✓
gap-analysis: 10 domini,suggested_actionpresente,not_implemented_itemspresenti - ✓
measures: 13 controlli,completion_percentage=38,mog_areaderivato da control_code - ✓
incidents:art23block per incidente con_due/_sent/_overdue - ✓
training:art20_compliance,non_compliant_mandatorypresenti - ✓
deadlines?days=365: 6 scadenze aggregate - ✓
full-snapshot:compliance_score=38,gap_domains=10,incidents=1,deadlines=0
Problemi aperti / TODO
Noti (da sessioni precedenti)
presidenza@agile.software: account senza org → deve fare onboarding- P.IVA lookup CertiSource (
/api/company/enrich) ritorna 404 — endpoint cambiato POST /api/auth/validate-inviteimplementato ma non nel router pubblico
Note tecniche importanti (memorizzare)
compliance_controlsNON ha colonnanis2_article— va derivata dacontrol_codevia regexpreg_match('/^NIS2-(\S+)/', $code, $m)incidents.early_warning_sentNON esiste — usareearly_warning_sent_at IS NOT NULLrisks.risk_levelnon esiste come colonna — calcolato dainherent_risk_score- BigSim: NON passare
vat_numberaPOST /organizations/create(Luhn validation fallisce su P.IVA fake)
Prossimi passi consigliati
- lg231 aggiorna integrazione usando
full-snapshot(riduce 6 chiamate → 1) - lg231 legge
not_implemented_itemsper auto-generare evidence gaps per pillar - Valutare endpoint pubblico per P.IVA lookup (attuale richiede auth JWT)
- RAG su normativa NIS2, benchmark settoriale (Sprint 3 pianificato)