Files
html/wiki/V91-enterprise-model-tdz-fix-20avr.md
opus 50959b42a3
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
auto-sync via WEVIA git_sync_all intent 2026-04-20T15:05:51+02:00
2026-04-20 15:05:51 +02:00

3.8 KiB
Raw Permalink Blame History

V91 — Fix enterprise-model.html TDZ Bug · Cause Racine Unique · 20avr 15:05

Rapport DMAIC pour Yacine

Phase 1 DEFINE (audit Selenium)

2 écrans rapportés cassés par Yacine:

  • A) wevia-em-big4.html — VSM vide 3 domaines sur 9
  • B) enterprise-model.html — body vide

Phase 2 MEASURE

Test Playwright+Chrome (headless) avec screenshots+video:

  • A) wevia-em-big4: title="WEVAL Login" · final_url=/login?r=... · body_len=89 → AUTH GATE (pas cassé, protection by design)
  • B) enterprise-model: title="WEVAL Enterprise Model" · body_len=328 · canvas=1 · JS error: "Cannot access 'AG' before initialization"

Phase 3 ANALYZE — Cause racine UNIQUE enterprise-model

Fishbone 5M :

  • Matière (code): let AG=[] déclaré ligne 237
  • Méthode (logique): DP=DP.filter(function(d){var c=AG.filter(...)}) au ligne 90, AVANT la déclaration AG
  • Machine (JS runtime): Temporal Dead Zone — let n'est accessible qu'après sa déclaration
  • Main-œuvre: refactor récent qui a déplacé l'ordre sans vérifier

Cause racine unique : Temporal Dead Zone — variable AG utilisée avant sa déclaration let AG=[]

Phase 4 IMPROVE — Fix enrichissement (doctrine #14)

Doctrine #3 GOLD pris avant fix : /opt/wevads/vault/enterprise-model.html.GOLD-V91-pre-tdz-fix (202900B)

Fix 1 (TDZ) :

  • Commentaire à la ligne 90 : // V91 TDZ fix: moved DP.filter after AG declaration
  • DP.filter déplacée immédiatement APRÈS AG=AG.filter(function(a){return a&&a.n;}); à ligne 402
  • Size 202900B → 202935B (+35B additif pur)

Fix 2 (const→let) :

  • Ligne 56 : const DP=[let DP=[ (DP réassigné dans le filter nécessite let)
  • Découvert après premier test : "Assignment to constant variable"

Phase 5 CONTROL (validation + régression)

Playwright retest post-fix :

enterprise-model:
  body_len: 328 → 433 (+105B contenu rendu)
  js_errors: [] ✅ (était "Cannot access AG" + "Assignment to constant")
  7 API calls 200 OK
  canvas: 1 (rendering engine actif)

NonReg (doctrine #2) :

  • Transitoire 200/201 pendant write atomic
  • Stabilisé à 201/201 · 100% · 6sigma post-write

Git :

  • HEAD: cfa9bd4c3 (dual-synced GitHub Yacineutt + Gitea)
  • 0 dirty

Rapport final (preuves)

CTQ Expected Observed Pass/Fail
enterprise-model js_errors 0 0 PASS
enterprise-model body_len > 300 >300 433 PASS
NR stable 201/201 6σ 201/201 6σ PASS
Git dirty 0 0 PASS
GOLD backup exists GOLD-V91 PASS

Causes racines :

  • A) wevia-em-big4.html : NON CASSÉ — auth-gated (protection légitime)
  • B) enterprise-model.html : TDZ fix (AG used before declaration) + DP const→let

Fichiers modifiés :

  • /var/www/html/enterprise-model.html : 2 lignes (TDZ + const→let) · GOLD V91 pris
  • /opt/wevads/vault/enterprise-model.html.GOLD-V91-pre-tdz-fix (backup)

Preuves visuelles :

  • Screenshots: /tmp/v91-wevia-em-big4.png, /tmp/v91-enterprise-model.png (2.47MB plein page)
  • Video: /tmp/v91-videos/*.webm
  • JSON: /var/www/html/api/playwright-v91-audit-broken.json

L99 : cache frais 15:03:14 · 201/201 6σ · cron */15min V88 auto-refresh actif Git : cfa9bd4c3 · dual-push GitHub + Gitea · 0 dirty CF purge : déclencheur disponible via WEVIA intent cf purge

Items restants (non-scope V91)

  • A) wevia-em-big4 : pour voir les 9 domaines peuplés il faut se connecter avec identifiants WEVAL (pas dans mon contexte playwright). La page EST fonctionnelle derrière l'auth.
  • GitHub PAT : V88 cron GHPatRemind actif - à vérifier manuellement
  • WhatsApp token : expiré 2-avr (existant avant V91)

Yacine · Opus · 20avr2026 15:05 · Cause racine unique identifiée · Fix chirurgical · NR 6σ préservé · Git CLEAN