[BACKUP] Sessione 2026-06-14: supervisore autonomo + contesto + mig.039 + UI V2 plan
- Supervisore autonomo ticket: prompt operativo + dry-run (scripts/), DRAFT rimosso; gate normativo gia' committato - docs/CONTEXT_LAST_SESSION.md: sessione 2026-06-14 (supervisore LIVE, run#1/#2, rotazione Anthropic rinviata) - docs/sql/039_integrity_keys.sql: migrazione integrita' DB (PK/UNIQUE/FK) gia' applicata in prod 12/6 - docs/MIGRATION_UI_V2.md: piano migrazione UI V2 - docs/nis2/incidente_r00/: 2 mockup incidente (gateway+dashboard) - .gitignore: versiona public/vendor/ (asset Bootstrap Italia self-hosted) - Fix accumulati: EmailService (kill-switch email), Incident/Onboarding/Organization/Services controllers, questionnaire, ReportService, CLAUDE.md standard 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
489a032658
commit
b80bf2361c
@@ -1,3 +1,30 @@
|
||||
<!-- VIGILE:tls-db-2026-06-10 -->
|
||||
## VIGILE 2026-06-10 — TLS DB + provenance (leggere a inizio sessione)
|
||||
|
||||
**Suite-wide (AgileHub/VIGILE)**: migrazione TLS-in-transito dei DB **per-utente** (`ALTER USER ... REQUIRE SSL`, MAI global `require_secure_transport`). **Finding PHP**: PDO/mysqlnd **NON cifra senza CA file** → servono `PDO::MYSQL_ATTR_SSL_CA => '<ca.pem>'` + `PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false` (il CA = `/var/lib/mysql/ca.pem` del proprio MySQL, distribuito al container). Node invece basta `ssl:{rejectUnauthorized:false}`. Doc autoritativo: `agile-services/docs/ANALISI_TLS_DB_STRUTTURALE_E_CENSIMENTO_2026_06_10.md`.
|
||||
|
||||
**QUESTO PRODOTTO — stato/azione**: DA FARE (pre-equip PHP-CA): nis2_user. Coordinare con VIGILE per enforce; il CA file e obbligatorio (non basta un flag).
|
||||
|
||||
**Inoltre (tutti i prodotti)**: ogni segnalazione/feedback deve portare la **release del prodotto** (`source_product_version`, standard version-provenance).
|
||||
<!-- /VIGILE:tls-db-2026-06-10 -->
|
||||
|
||||
<!-- VIGILE 2026-06-09 feedback-version-provenance -->
|
||||
## 🔴 PRIORITÀ — ogni segnalazione deve catturare versione+superficie (std `feedback-version-provenance` v1.0)
|
||||
|
||||
**Regola (hub_standards id=30):** ogni segnalazione/feedback DEVE portare e salvare **`surface`** (`web-v1`|`web-v2`|`android`|`ios`) + **`product_version`** (la **release REALE del prodotto**, NON la versione del widget) + **`build`**. Motivo: gap reale (ALLTAX #80, Romeo ha dovuto scrivere "2.9.2" a mano). **È additivo e non rompe nulla** (chi non lo manda funziona come prima), ma va adottato presto così ogni ticket dice subito "che release avevi".
|
||||
|
||||
**Lato AgileHub è GIÀ pronto:** il widget servito legge `data-app-version`/`data-app-build`/`data-surface`; il gateway external/v1 e ticket-ms salvano `source_product_version`/`source_surface`/`source_widget_*`.
|
||||
|
||||
**Da fare lato prodotto:**
|
||||
1. **Widget tag**: aggiungere `data-app-version="<release vera>"` + `data-surface="web-v1|web-v2"` (+ `data-app-build`). Es: `<script src=".../widgets/bug-reporter.js" data-product="X" data-app-version="2.9.8" data-surface="web-v2" ...>`.
|
||||
2. **App mobile**: già manda `app_version` → assicurarsi che il backend la **salvi** (molti la scartano).
|
||||
3. **Tabella feedback propria** (se esiste, es. `feedback_reports`): aggiungere `client_surface`/`client_version`/`client_build` + il backend li salva.
|
||||
4. **Web V1**: mandare la release vera del prodotto (es. version.json / BUILD), non quella del widget.
|
||||
|
||||
**Verifica**: una segnalazione di test da ogni superficie → il ticket/feedback ha `product_version` valorizzato (non null, non = widget version). Owner: VIGILE. Doc: `external-api-tenancy-model`-adiacente, standard slug `feedback-version-provenance`.
|
||||
|
||||
---
|
||||
|
||||
<!-- STANDARD:timezone-conventions:v1.0:start -->
|
||||
## ⏰ ORARI E TIMEZONE — REGOLE OPERATIVE
|
||||
|
||||
@@ -1055,3 +1082,27 @@ Status adoption: acknowledged 2026-05-17.
|
||||
### REGOLA: Fonti certe (AI + help)
|
||||
Ogni affermazione normativa di AI e help **deve citare** una fonte di `application/config/nis2_sources.php`.
|
||||
`AIService::authoritativeSourcesBlock()` è iniettato nei system prompt e **vieta riferimenti inventati**.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 AZIONE RICHIESTA (da VIGILE AgileHub, 2026-06-09) — spostare EMAIL_MS_URL su path interno
|
||||
|
||||
**Motivo (security #4 cross-suite)**: AgileHub sta applicando l'**edge-strip** di `X-Internal-Key` sul 443 pubblico (`agilehub.agile.software`) — la chiave interna NON sarà più accettata da Internet. NIS2 oggi invia email via URL **pubblico** con `X-Internal-Key` → **dopo lo strip le email di NIS2 si rompono** (401) finché non passate al path interno.
|
||||
|
||||
**Path interno già pronto (AgileHub-side fatto)**: vhost mirror controllato su `:8081`, raggiungibile dalla subnet NIS2 (`ufw allow 172.21.0.0/16 → 8081`), `X-Internal-Key` onorata lì.
|
||||
|
||||
**Modifica da fare (NIS2-side, in finestra)**:
|
||||
1. In `/var/www/nis2-agile/.env` riga 24, cambiare:
|
||||
```
|
||||
# PRIMA:
|
||||
EMAIL_MS_URL=https://agilehub.agile.software/api/emails
|
||||
# DOPO:
|
||||
EMAIL_MS_URL=http://172.21.0.1:8081/api/emails
|
||||
```
|
||||
(`172.21.0.1` = gateway della rete `docker_nis2-network`; il path `/api/emails/*` è identico al pubblico, cambia solo host. `X-Internal-Key` resta invariata.)
|
||||
2. Recreate `nis2-app` (micro-downtime, vostra finestra).
|
||||
3. Verifica: inviare una email di prova → deve risultare `SENT` (no 401/000). Reachability rapida: `curl -o /dev/null -w "%{http_code}" -X POST http://172.21.0.1:8081/api/emails/send-raw -H "X-Internal-Key: $INTERNAL_EMAIL_KEY" -H "Content-Type: application/json" -d '{}'` → atteso **400** (auth ok, body vuoto), NON 000/401.
|
||||
|
||||
**Rollback** (~10s, possibile finché serve): rimettere `EMAIL_MS_URL` al valore pubblico + recreate. NB: dopo l'edge-strip il pubblico darà 401 → il path corretto è l'interno.
|
||||
|
||||
**Pattern cross-suite**: stesso identico per gli altri prodotti email-sending (TRPG già migrato su `172.20.0.1:8081`). Owner standard: `external-api-tenancy-model` (VIGILE).
|
||||
|
||||
Reference in New Issue
Block a user