| 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 : 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 |