[DOCS] Contesto: chiusura open-items C5 (email gated #7, EMAIL_MS_URL interno #8, DB pre-equip #9, 92 prevale Simon)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
69873e21be
commit
2552062c48
@@ -23,11 +23,16 @@ Chiuso l'ultimo punto di Simon. Memoria: [[project-epic-c-simon]]. Tutto deploya
|
|||||||
### Follow-up open-items (commit `3051983`, v1.21.2)
|
### Follow-up open-items (commit `3051983`, v1.21.2)
|
||||||
- ✅ **Upload allegati RISOLTO.** Causa: il prod **non** è servito dal container nis2-app ma da **Apache host → php-fpm HOST** (`/run/php/php8.4-fpm.sock`, DocumentRoot `public/`); `public/uploads` host era `git:git` con ACL che concedeva write solo a `git`, NON a `www-data` (utente fpm host) → `move_uploaded_file` falliva. **Fix host (NON in repo, da ri-applicare se il dir viene ricreato):** `setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx /var/www/nis2-agile/public/uploads`. Collaudato: upload interno+portale .pdf 201, .html→422. **Risolve anche evidence_files/visure** (rotti per lo stesso motivo). ⚠️ Nota architetturale: il prod gira su **php-fpm host** (opcache.validate_timestamps=On → prende i .php in automatico); per reload immediato `systemctl reload php8.4-fpm` sull'host (il `docker exec nis2-app kill -USR2 1` reload SOLO la dev-API del container).
|
- ✅ **Upload allegati RISOLTO.** Causa: il prod **non** è servito dal container nis2-app ma da **Apache host → php-fpm HOST** (`/run/php/php8.4-fpm.sock`, DocumentRoot `public/`); `public/uploads` host era `git:git` con ACL che concedeva write solo a `git`, NON a `www-data` (utente fpm host) → `move_uploaded_file` falliva. **Fix host (NON in repo, da ri-applicare se il dir viene ricreato):** `setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx /var/www/nis2-agile/public/uploads`. Collaudato: upload interno+portale .pdf 201, .html→422. **Risolve anche evidence_files/visure** (rotti per lo stesso motivo). ⚠️ Nota architetturale: il prod gira su **php-fpm host** (opcache.validate_timestamps=On → prende i .php in automatico); per reload immediato `systemctl reload php8.4-fpm` sull'host (il `docker exec nis2-app kill -USR2 1` reload SOLO la dev-API del container).
|
||||||
- ✅ **Fonti ACN aggiornate** (`nis2_sources.php`, verifica nis2-expert): 333017/2025 = 22 settembre 2025, marcata STORICA/superata; aggiunta 379887/2025 VIGENTE (efficace 31/12/2025); 164179/2025 (14 apr 2025) confermata vigente (base misure/requisiti). Date-giorno marcate `[da confermare sul testo ufficiale]`.
|
- ✅ **Fonti ACN aggiornate** (`nis2_sources.php`, verifica nis2-expert): 333017/2025 = 22 settembre 2025, marcata STORICA/superata; aggiunta 379887/2025 VIGENTE (efficace 31/12/2025); 164179/2025 (14 apr 2025) confermata vigente (base misure/requisiti). Date-giorno marcate `[da confermare sul testo ufficiale]`.
|
||||||
- 🔴 **ESCALATION a Simon — 92 vs 87 requisiti importanti**: la **pagina ufficiale ACN** ("nis-avviata-la-seconda-fase") indica **37 misure / 87 requisiti** per gli importanti; il prodotto usa **92** (file Simon) in `nis2_sources.php:79` + `help.js`. NON modificato (decisione bloccata "prevale il file Simon"). Riconciliare con Simon sul testo ufficiale. Resto del codebase (Gap Analysis, MEMORY) usa già 87 → c'è incoerenza interna da sanare con la decisione.
|
- 🟢 **#2 — 92 vs 87 requisiti: DECISO da utente "prevale Simon" (resta 92)**. Aggiunta NOTA DI PROVENIENZA in `nis2_sources.php` (prodotto usa 92 = file referente; ACN ufficiale 87; divergenza nota/accettata). Numero NON cambiato. (Resta incoerenza con altri punti del codebase che usano 87 — accettata.)
|
||||||
- ⏭️ #6 nginx Content-Disposition su /uploads/: **skip motivato** (l'allowlist chiude già la XSS; forzare il download regredirebbe la preview inline dei PDF). nginx.conf è bind-mount (→ restart applica) se in futuro si volesse.
|
|
||||||
- ⏸️ **Held (coordinati/outward-facing)**: #7 aggancio email a go-live (kill-switch off); #8 `EMAIL_MS_URL`→path interno (coordinare VIGILE, pre edge-strip); #9 TLS DB `nis2_user` (coordinare VIGILE). #4 collaudo E2E browser C1–C5 = task tester.
|
|
||||||
|
|
||||||
**Prossima migrazione = 055.**
|
### Chiusura open-items (commit `69873e2`, v1.21.3) — "fai il massimo"
|
||||||
|
- 🟢 **#7 — invio email AGGANCIATO e pronto al go-live (GATED)**: `send()` invia il magic-link via `EmailService` SOLO se `EMAIL_SENDING_ENABLED=true`. Oggi è **false** (default, non in `.env`) → **zero invii** (smoke prod: `email_sent=0`). Al go-live basta settare il flag. Link assoluto via `APP_URL`. I link restano sempre esposti per condivisione manuale.
|
||||||
|
- 🟢 **#8 — `EMAIL_MS_URL` spostato sul path interno** `http://172.21.0.1:8081/api/emails` (host `.env`, fuori repo). Verificato **400 con `X-Internal-Key`** = funzionante (pre edge-strip). Rollback: rimettere l'URL pubblico. (Inattivo finché email off.)
|
||||||
|
- 🟢 **#9 — pre-equip PHP-CA DB COMPLETO (parte del prodotto)**: l'app si connette in **TLS 1.3** (CA `application/config/db-ca.pem` + `PDO::MYSQL_ATTR_SSL_CA`). Verificato `cipher=TLS_AES_256_GCM_SHA384`. ⚠️ `nis2_user@%` NON ha ancora `REQUIRE SSL` server-side → **enforce = azione DB coordinata con VIGILE** (utente `@%`, rischio consumer non-TLS ignoti). Non eseguito unilateralmente; ora de-rischiato (l'app già usa TLS).
|
||||||
|
- ⏭️ **#6 nginx Content-Disposition /uploads/**: skip motivato (allowlist chiude la XSS; forzerebbe download dei PDF). Applicabile via `restart` (nginx.conf bind-mount) se richiesto.
|
||||||
|
- 🧪 **#4 collaudo E2E browser C1–C5**: resta task umano dei tester. Best-effort fatto: render-smoke pagine C5 (200 + marker DOM OK). QA visivo umano comunque raccomandato.
|
||||||
|
|
||||||
|
**Prossima migrazione = 055.** ⚠️ Promemoria infra (non-repo, ri-applicare se ricreati): `setfacl` su `public/uploads`; `EMAIL_MS_URL` interno in `.env`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user