> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Demo checklist

# DEMO\_CHECKLIST — Smoke test parcours démo (J1)

Cible : dérouler le script démo de 15–20 min sans friction visible.
Scope : tout ce qui se voit à l'écran pendant la démo.

***

## Parcours testé

1. Landing / Login SSO
2. Dashboard (score global, KPIs, graphs)
3. Audits (list + detail + findings + remediation)
4. Reports (PDF + Excel + HTML download)
5. GRC documents (PSSI, Access Policy, Incident, Remediation Plan)
6. Portal (vue client)
7. Alerts / notifications

***

## Frictions relevées

Légende priorité :

* **P0** — bloquant, visible pendant la démo, fix avant RDV
* **P1** — visible mais contournable, fix si temps
* **P2** — cosmétique, différer post-RDV

| #  | Zone                                                                                                                                   | Friction observée                                                                                                                                                                                                                                                                                        | Priorité                | Notes                                                                                                                                                                                                                           |
| -- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | Logs serveur                                                                                                                           | Turbopack spam `node:fs not supported in Edge Runtime` à chaque requête (instrumentation.ts:123)                                                                                                                                                                                                         | P1                      | ✅ Fixed — variable specifier pour hide static analysis                                                                                                                                                                          |
| 2  | Reverse proxy                                                                                                                          | Traefik ne peut pas contacter le Docker daemon → aucun router pour `app.localhost` → TLS `unrecognized_name` → HTTPS cassé sur tous les domaines démo                                                                                                                                                    | **P0**                  | ✅ Fixed — routers statiques dans `dynamic.yml` (indépendant du Docker provider)                                                                                                                                                 |
| 3  | TLS                                                                                                                                    | Certificat mkcert absent du dossier `docker/traefik/certs/` → Traefik démarre sans cert → tout HTTPS rejeté                                                                                                                                                                                              | **P0**                  | ✅ Fixed — self-signed OpenSSL généré pour `*.localhost` + `*.snakysec.com` (suffit pour demo via Cloudflare tunnel)                                                                                                             |
| 4  | Login page                                                                                                                             | `No client configured for this domain.` affiché sur `app.localhost` (bouton SSO absent)                                                                                                                                                                                                                  | P1                      | ✅ Non bloquant pour la démo: sur `snakysec.com`, le client est résolu en DB → bouton SSO affiché. Fallback à investiguer si besoin hors-demo.                                                                                   |
| 8  | Login page                                                                                                                             | `favicon.ico` 404                                                                                                                                                                                                                                                                                        | P2                      | Cosmétique                                                                                                                                                                                                                      |
| 9  | Dashboard                                                                                                                              | Console error: `Unsafe attempt to load URL https://app.localhost/login?callbackUrl=%2Fdashboard from frame with URL https://snakysec.com/dashboard. Domains, protocols and ports must match.` + request visible dans Network                                                                             | **P0**                  | Une requête (iframe/redirect auth?) pointe encore vers `app.localhost`. À tracer.                                                                                                                                               |
| 10 | Dashboard + Findings                                                                                                                   | Audit "SnakySec 11/04/2026" affiche **50 Failed controls** mais `/clients/snakysec/findings` = `All(0) OPEN(0) IN_PROGRESS(0) REMEDIATED(0) ACCEPTED_RISK(0)` → les ControlResult.status=finding **ne sont pas convertis en GapFinding trackés**. Démo-killer.                                           | **P0**                  | Pipeline import créé les ControlResult mais ne génère pas les GapFinding associés. À fixer.                                                                                                                                     |
| 11 | Dashboard                                                                                                                              | Langue mélangée FR/EN : "Dashboard", "Active Tenants", "Avg. Compliance", "Open Alerts" en EN ; sidebar "Documents > Gouvernance / Conformité & RGPD / Accès & Identités" en FR. Pas de switch langue visible.                                                                                           | P1                      | Prospects PME FR — incohérence flagrante.                                                                                                                                                                                       |
| 12 | Dashboard                                                                                                                              | Sidebar "Documents" trop fournie (8 sous-entrées : Vue d'ensemble, Gouvernance, Conformité & RGPD, Accès & Identités, Incidents & Réponse, Technique, Monitoring & Reporting, Onboarding Client) — à revoir/grouper                                                                                      | P1                      | Structure navigation à simplifier pour démo.                                                                                                                                                                                    |
| 13 | Dashboard                                                                                                                              | Plusieurs sections encore statiques (restes du début de dev) — attendu : dynamique (création/modification/suppression)                                                                                                                                                                                   | P2                      | Structurel, pas fixable en J1. Identifier les statiques et les cacher si non démo.                                                                                                                                              |
| 14 | UI globale                                                                                                                             | Besoin de polish UI (embelissement)                                                                                                                                                                                                                                                                      | P2                      | Post-P0/P1. Design-review skill pertinent.                                                                                                                                                                                      |
| 15 | Vue client                                                                                                                             | Dashboard MSSP admin ≠ vue client — il faut tester séparément l'espace client (portal) avec un compte client                                                                                                                                                                                             | P0                      | Étape dédiée du smoke test (déjà planifiée).                                                                                                                                                                                    |
| 16 | Reports Excel                                                                                                                          | Download → erreur                                                                                                                                                                                                                                                                                        | **P0**                  | ✅ Fixed — Turbopack dev server n'avait jamais compilé les routes `excel/route.ts` et `html/route.ts` (créés après le premier start). Restart app force la découverte. Post-démo: ajouter un script de warm-up au démarrage dev. |
| 17 | Reports HTML                                                                                                                           | Download → erreur                                                                                                                                                                                                                                                                                        | **P0**                  | ✅ Fixed — même root cause que #16.                                                                                                                                                                                              |
| 28 | Reports License filter                                                                                                                 | Dropdown `All License` ne propose que E3 + E5 — manque Business Basic/Standard/Premium (cœur cible PME), A1/A3/A5 (édu), F1/F3 (frontline), add-ons (E5 Security/Compliance, EMS E3/E5, Defender P1/P2, Entra P1/P2, Intune P1/P2)                                                                       | P1                      | Étendre la liste des `licenseTier` dans `deriveLicenseTier()` + seeds. Priorité Business Premium pour cible PME.                                                                                                                |
| 18 | Reports PDF                                                                                                                            | Download OK, nom fichier cohérent, FR + EN disponibles ✓                                                                                                                                                                                                                                                 | —                       | Qualité à rehausser → voir #19                                                                                                                                                                                                  |
| 19 | Reports qualité                                                                                                                        | Attente prospect: "qualité juridique + technique, rapport consultant senior" — plan actuel (narrative deterministe + labels FR) est sous-dimensionné                                                                                                                                                     | P1                      | Scope au-delà du plan Phase 1. Nécessite: sections juridiques (RGPD/NIS2), annexes techniques détaillées par contrôle, formulations consultant senior, disclaimer légal, méthodologie.                                          |
| 20 | Documents / GRC structure                                                                                                              | Section "Gouvernance" : 1 doc dispo (PSSI) + 3 "Bientôt/Planifié" (Charte Info/BYOD, Pol. Gestion Risques, PCA/PRA). Libellé "2 en préparation" ≠ 3 items non dispo (incohérent).                                                                                                                        | P2                      | Libellé à aligner ou cacher les items non-dispo pour la démo.                                                                                                                                                                   |
| 21 | PSSI génération                                                                                                                        | Download OK (\~3s), PDF uniquement (Word absent)                                                                                                                                                                                                                                                         | P1                      | Ajouter export Word (CISO veut souvent modifier).                                                                                                                                                                               |
| 22 | PSSI contenu                                                                                                                           | Contenu "petite base" — attente: méthodologies officielles ANSSI/Gouvernement (guides PSSI type ANSSI, référentiels SecNumCloud, etc.) comme socle. Qualité rédactionnelle faible, **gap important** vs attente CISO (insatisfaction anticipée). Manque de détails.                                      | **P0**                  | Refonte templates GRC sur base méthodos officielles. Nicolas fournira les ref ANSSI quand on passera à l'implémentation.                                                                                                        |
| 23 | PSSI langue                                                                                                                            | FR uniquement — attente: **FR + EN**.                                                                                                                                                                                                                                                                    | P1                      | Même pattern que Reports (LABELS\_FR / LABELS\_EN + `reportLanguage` client).                                                                                                                                                   |
| 24 | PSSI branding                                                                                                                          | Branding faible                                                                                                                                                                                                                                                                                          | P1                      | Logo client + couleurs primaires + header/footer identifiables.                                                                                                                                                                 |
| 25 | GRC section complète (Conformité & RGPD, Accès & Identités, Incidents & Réponse, Technique, Monitoring & Reporting, Onboarding Client) | Section "assez légère" globalement — **à revoir en profondeur** (contenu, structure, qualité) sans forcément supprimer. Gros chantier.                                                                                                                                                                   | **P0** (scope chantier) | Refonte globale post-démo. Démo: sélectionner 1-2 docs vitrine qualité senior et cacher le reste ou marquer "Roadmap" honnêtement.                                                                                              |
| 26 | Portal client                                                                                                                          | `/portal` redirige MSSP\_ADMIN vers `/dashboard` → impossible de voir la vue client. Bug logique dans [portal/page.tsx:63-65](platform/src/app/portal/page.tsx#L63-L65) : `clientIds \|\| []` transforme `null`(=all) en `[]` → redirect. MSSP admin n'a aucun moyen de prévisualiser le portail client. | **P0**                  | Fix: gérer le cas admin (null = all clients) + ajouter un "Impersonate" query param `?clientId=xxx` pour la démo = argument commercial ("je vois ce que voit mon client").                                                      |
| 27 | Alerts                                                                                                                                 | Page présente, 1 alerte "Audit échoué SnakySec" (pipeline GitLab) datant 2j. Mark-as-read OK. **Fonctionnalités très limitées**: pas de filtres (sévérité/client/type), pas de canaux (email/Teams/SMS), pas de snooze/archive, pas de règles configurables. Peu d'intérêt démo en l'état.               | P1                      | Roadmap alertes. Pour la démo: au moins peupler 2-3 alertes types variées (score dégradé, nouveau finding critique, licence expirée) pour montrer du volume.                                                                    |
| 7  | NextAuth                                                                                                                               | `snakysec.com` redirigeait vers `app.localhost/login` (AUTH\_URL hardcodé dans app.dev.yml override `trustHost:true`) → démo impossible sur le vrai domaine                                                                                                                                              | **P0**                  | ✅ Fixed — `AUTH_URL=https://snakysec.com` via var `${AUTH_URL:-...}`. `trustHost:true` ne récupère pas le Host à travers Cloudflare→Traefik→Next (OAuth redirect\_uri partait sur localhost:3000).                              |
| 5  | Login page                                                                                                                             | Messages en anglais (`No client configured...`)                                                                                                                                                                                                                                                          | P1                      | Prospects PME FR                                                                                                                                                                                                                |
| 6  | Login page                                                                                                                             | Branding sparse (shield icon + titre, pas de visuel SnakySec riche)                                                                                                                                                                                                                                      | P2                      | Polish post-P0                                                                                                                                                                                                                  |

***

## Actions suivantes

* [ ] Fixer tous les P0
* [ ] Re-smoke test complet
* [ ] Répétition chronométrée

***

## Synthèse priorisée

### P0 — à fixer avant la démo (blockers visibles sur le parcours)

| #  | Zone                      | Action                                                                                                                                                                                                                 |
| -- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 10 | Findings                  | Ajouter la création de `GapFinding` dans le pipeline d'import (`lib/import/index.ts`) + backfill sur l'audit existant. Fixe aussi les sections downstream (Reports PDF, GRC Remediation Plan, dashboard KPIs, portal). |
| 16 | Reports Excel             | Reproduire l'erreur côté serveur/client, diagnostiquer, fixer.                                                                                                                                                         |
| 17 | Reports HTML              | Idem.                                                                                                                                                                                                                  |
| 26 | Portal admin view         | [portal/page.tsx:63-65](platform/src/app/portal/page.tsx#L63-L65) : gérer `clientIds === null` (admin) + ajouter `?clientId=xxx` impersonation pour la démo.                                                           |
| 22 | PSSI qualité              | Gros chantier contenu — refondre sur méthodos ANSSI/Gouvernement. Pour la démo: soigner la PSSI (unique doc vitrine "Disponible") + marquer les autres honnêtement "Roadmap".                                          |
| 25 | Documents autres sections | Démo: cacher les sous-sections non présentables ou flagger "Roadmap" clairement.                                                                                                                                       |

### P1 — visible mais contournable (fix si temps, sinon à mentionner dans le pitch)

| #  | Zone                         | Action                                                                                                     |
| -- | ---------------------------- | ---------------------------------------------------------------------------------------------------------- |
| 11 | Dashboard langue             | Labels FR/EN mixtes + pas de switch. Aligner sur la règle `reportLanguage` du plan.                        |
| 12 | Sidebar Documents            | 8 sous-entrées → grouper/simplifier.                                                                       |
| 19 | Reports qualité "senior"     | Scope au-delà du plan Phase 1. Phase 2 post-démo.                                                          |
| 21 | PSSI export                  | Ajouter export Word (attente CISO pour modifier).                                                          |
| 23 | PSSI langue FR+EN            | Même pattern que Reports.                                                                                  |
| 24 | PSSI branding                | Logo client + couleurs primaires + header/footer.                                                          |
| 27 | Alerts                       | Peupler 2-3 alertes types variées pour la démo (score dégradé, nouveau finding critique, licence expirée). |
| 4  | Login fallback app.localhost | Non-bloquant démo (sur snakysec.com le client matche). Investiguer si besoin hors-demo.                    |
| 5  | Login EN messages            | Traduire les messages d'erreur.                                                                            |

### P2 — cosmétique / post-démo

| #  | Zone                     | Action                                                                |
| -- | ------------------------ | --------------------------------------------------------------------- |
| 6  | Login branding           | Polish visuel.                                                        |
| 8  | Favicon 404              | Ajouter un favicon.                                                   |
| 13 | Dashboard statique       | Sections "restes début dev" — cacher les non-dynamiques pour la démo. |
| 14 | UI polish global         | Design review post-P0.                                                |
| 20 | Label "2 en préparation" | Aligner avec le nb réel de docs "Bientôt/Planifié".                   |

***

## Bilan smoke test

* **P0 résolus pendant le smoke test** : #1 logs Turbopack, #2 Traefik routers, #3 TLS cert, #7 AUTH\_URL redirect.
* **P0 restants à fixer** : 6 items (findings pipeline, Reports Excel/HTML, Portal admin, PSSI qualité, GRC scope, cohérence docs).
* **Démo-killers identifiés** : #10 (findings = 0 alors que 50 échecs visibles), #16/#17 (Excel/HTML cassés), #26 (portal invisible pour l'admin).
* **Attentes qualité explicites (Nicolas)** :
  * Rapports = qualité **consultant senior** juridique + technique (pas dump technique).
  * Documents GRC = base méthodos officielles **ANSSI/Gouvernement** (PSSI, SecNumCloud, EBIOS, NIS2, LPM). Nicolas fournira les refs à l'implémentation.
* **Scope chantier > plan Phase 1** : la refonte GRC + la qualité "senior" des rapports excèdent le plan `jazzy-sauteeing-babbage.md` actuel. À replanifier.
* **Stack dev** : Docker Desktop Windows workarounds OK temporairement ; pré-prod future = MacBook Pro, prod = VPS. Ne pas sur-optimiser l'env actuel.
