DevEnv nis2-agile and Claude Sonnet 4.6
a8ef41dc35
[FIX] Migration SQL: INT NOT NULL per FK verso organizations/users (signed)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-07 13:22:08 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
86e9bdded2
[FEAT] Services API, Webhook, Whistleblowing, Normative + integrazioni
...
Sprint completo — prodotto presentation-ready:
Services API (read-only, API Key + scope):
- GET /api/services/status|compliance-summary|risks-feed|incidents-feed
- GET /api/services/controls-status|assets-critical|suppliers-risk|policies-approved
- GET /api/services/openapi (spec OpenAPI 3.0.3 JSON)
Webhook Outbound (Stripe-like HMAC-SHA256):
- CRUD api_keys + webhook_subscriptions (Settings → 2 nuovi tab)
- WebhookService: retry 3x backoff (0s/5min/30min), delivery log
- Trigger auto in IncidentController, RiskController, PolicyController
- Delivery log, test ping, processRetry
Nuovi moduli:
- WhistleblowingController (Art.32 NIS2): anonimato garantito, timeline, token tracking
- NormativeController: feed NIS2/ACN/DORA con ACK tracciato per audit
Frontend:
- whistleblowing.html: form submit anonimo/firmato + gestione CISO
- normative.html: feed con presa visione documentata + progress bar ACK
- public/docs/api.html: documentazione API dark theme (Swagger-like)
- settings.html: tab API Keys + tab Webhook
- integrations/: guide per lg231, SustainAI, AllRisk, SIEM (widget + codice)
- Sidebar: Segnalazioni + Normative aggiunte a common.js
DB: migration 007 (api_keys, webhook_subscriptions, webhook_deliveries),
008 (whistleblowing_reports + timeline),
009 (normative_updates + normative_ack + seed NIS2/ACN/DORA/ISO)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-07 13:20:24 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
c2aaebd6c1
[COMMERCIAL] Landing page NIS2 Agile + aggiornamento AgentAI Hub
...
- Aggiunta docs/commercial/landing-nis2-agile.html (landing page 7 sezioni)
Hero con mockup dashboard, trust bar compliance, problema/soluzione,
5-step come funziona, 4 metriche, CTA finale. Palette cyan dark, responsive.
- AgentAI Hub (agentai.certisource.it): products.json NIS2 corretto
(Vanilla JS, releaseDate Q1 2026, 8 features, links completi)
- Presentazione aggiornata: Tailwind→CSS3, slide Pricing aggiunta (ora 9 slide)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 14:32:04 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
1bfca3fbe3
[DOCS+I18N] Guida aggiornata, i18n idle timeout, 3 documenti commerciali
...
- help.js: aggiornate sezioni per idle timeout, banner AI dismissible, matrice rischi real-time
- i18n.js: aggiunte 5 chiavi session.* per idle timeout (IT/EN)
- common.js: _showIdleWarning() usa I18n.t() per testi IT/EN
- docs/commercial/scheda-commerciale.html: scheda A4 stampabile (problema/soluzione, moduli, AI, target)
- docs/commercial/scheda-tecnica.html: specifiche stack, architettura, API, DB, sicurezza, deploy
- docs/commercial/presentazione.html: presentazione 10 slide completa (contesto, moduli, AI, compliance, ROI, roadmap)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:43:17 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
59fad22c0e
[UX+SEC] Eccellenza pre-audit: idle timeout, loading states, i18n, UX polish
...
- common.js: idle session timeout 30min con avviso countdown 5min prima del logout
- common.js: checkAuth() attiva automaticamente il monitor di inattività
- api.js: messaggi errore connessione usano i18n (IT/EN) tramite I18n.t()
- risks.html: saveRisk() e aiSuggest() con setButtonLoading durante salvataggio
- risks.html: deleteRisk() ricarica la matrice se si è in matrix view
- incidents.html: createIncident() con setButtonLoading durante registrazione
- policies.html: savePolicy() e saveAIGeneratedPolicy() con setButtonLoading
- policies.html: banner AI-draft con pulsante X per dismissione
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:25:52 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
a56401f5a9
[DOCS] CLAUDE.md: aggiunta migration 006 + data 2026-02-20
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:13:11 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
f5884b32d3
[FIX] Migration 006: usa stored procedure per indici condizionali
...
Compatibilita' MySQL 8.0: rimosso CREATE INDEX IF NOT EXISTS,
rimosso DELIMITER per trigger (incompatibile con pipe stdin).
Migration semplificata con solo CREATE INDEX e ALTER TABLE IF NOT EXISTS.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:08:44 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
a5eb84108a
[FIX] Migration 006: usa stored procedure per indici condizionali
...
Compatibilita' MySQL 8.0: CREATE INDEX IF NOT EXISTS non supportato,
uso procedura helper con check su information_schema.statistics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:05:04 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
18dec35380
[FIX] Migration 006: fix sintassi CREATE INDEX per MySQL 8.0
...
Sostituito ALTER TABLE ADD INDEX IF NOT EXISTS con CREATE INDEX IF NOT EXISTS
per compatibilita' MySQL 8.0.x
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:04:16 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
782389849f
[SEC+UX] Hardening sicurezza + miglioramenti UX pre-audit
...
SICUREZZA:
- index.php: rimosso CORS wildcard in debug mode (solo origini autorizzate)
- AuthController: getClientIP() con X-Forwarded-For sicuro (proxy-aware)
- AuthController: refresh token con SELECT FOR UPDATE in transazione atomica
- AIService: anonimizzazione dati org nei prompt Anthropic API (no nome/fatturato)
UX AUDIT-READY:
- dashboard.html: gauge rinominato 'Avanzamento implementazione misure Art.21'
- incidents.html: decision tree Art.23 con 5 criteri per 'Is Significant?'
- policies.html: banner warning obbligatorio su bozze generate da AI
- risks.html: tooltip dettagliati scala Likelihood/Impact (ISO 27005)
- assessment.html: progress bar % completamento risposta domande
DB:
- migration 006: indici performance + audit_log immutabile (trigger) + soft delete
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 12:01:33 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
0e78ec24c1
[FIX] i18n funzionante + bug audit.html + help system
...
- common.js: aggiunto i18nKey a navItems, data-i18n su sezioni e voci
sidebar → toggle IT/EN ora traduce la navigazione in tempo reale
- Tutte e 10 le pagine HTML: aggiunto data-i18n="*.title" agli h2
(dashboard, assessment, risks, incidents, policies, supply-chain,
training, assets, reports, settings)
- FIX BUG: sidebar puntava ad audit.html (inesistente) → corretto
in reports.html
- HelpSystem: funziona correttamente in tutte le 10 pagine
(content-header-actions presente, init() chiamato)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 11:17:04 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
a53b4beb37
[CORE] Housekeeping: CLAUDE.md allineato, docker hardening, gitignore
...
- CLAUDE.md: aggiunto NonConformityController, companies.html, architecture.html,
i18n.js, help.js, SQL 003-005, 22 tabelle, endpoint NCR/CAPA, API base path
aggiornato a /api/... (post-subdomain), cronologia commit aggiornata
- docker-compose.yml: mem_limit (app 256m, web 128m, db 512m) + DB port
binding su 127.0.0.1 per sicurezza
- .gitignore: aggiunti docker/*.bak* e .claude/memory/
- Eliminati file backup temporanei docker-compose.yml.bak.*
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 11:09:04 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
7080695d06
[FEAT] Ruolo Consulente + Wizard Registrazione v2
...
- register.html: step 0 scelta profilo (Azienda / Consulente)
- onboarding.html: wizard 4-step con P.IVA obbligatoria (auto-fetch CertiSource)
- companies.html: nuova dashboard consulente con cards aziende e compliance score
- common.js: org-switcher sidebar + role labels corretti per consulente
- login.html: routing post-login (consulente → companies.html)
- api.js: isConsultant(), setUserRole(), register con user_type
- AuthController: user_type=consultant → role=consultant in users table
- OnboardingController: multi-org per consulente, duplicate VAT check
- 005_consultant_support.sql: aggiunge 'consultant' a user_organizations.role ENUM
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 08:53:30 +01:00
DevEnv nis2-agile and Claude Sonnet 4.6
ba21534e6a
[DEPLOY] Migrazione a subdomain nis2.certisource.it
...
Rimozione prefisso /nis2/ da tutti i path frontend e router:
- index.php: basePath '' (da '/nis2')
- api.js: baseUrl '/api' (da '/nis2/api')
- Tutti i file HTML: path assoluti senza prefisso /nis2/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-19 14:05:18 +01:00