V44 FIX SPINNER INFINI WTP · root cause 2 auth guards (V1+V86) · chirurgical remove V1 · V86 seul preserve · doctrine 13 structural · 14 zero ecrasement · NR 153/153 · Playwright proof

This commit is contained in:
Opus-Yacine
2026-04-19 20:56:48 +02:00
parent 16f53ba04e
commit 049d77014e
2 changed files with 27 additions and 33 deletions

View File

@@ -358,39 +358,6 @@ a{color:inherit;text-decoration:none}
</style>
<!-- WTP-AUTH-GUARD-V1 · Opus Yacine 19avr · doctrine #14 enrichissement · #60 UX premium -->
<script>
(function(){
// Block rendering until auth verified · prevent flash of unauthenticated content
var authGate = document.createElement('div');
authGate.id = 'wtp-auth-gate';
authGate.style.cssText = 'position:fixed;inset:0;z-index:99999;background:linear-gradient(135deg,#0a0f1e 0%,#1a1040 50%,#0a0f1e 100%);display:flex;align-items:center;justify-content:center;font-family:Inter,system-ui,sans-serif;color:#e8eaf0';
authGate.innerHTML = '<div style="text-align:center"><div style="width:64px;height:64px;margin:0 auto 20px;border:3px solid #6366f1;border-top-color:transparent;border-radius:50%;animation:wtpSpin 0.8s linear infinite"></div><div style="font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:#94a3b8;font-weight:500">Vérification authentification</div><div style="margin-top:8px;font-size:12px;color:#64748b;font-family:monospace">WTP · weval-consulting.com</div></div><style>@keyframes wtpSpin{to{transform:rotate(360deg)}}</style>';
if (document.body) document.body.appendChild(authGate);
else document.addEventListener('DOMContentLoaded', function(){ document.body.appendChild(authGate); });
fetch('/api/auth-check.php', {credentials: 'include', cache: 'no-store'})
.then(function(r){
if (r.status === 200) {
// Remove gate · render WTP
var g = document.getElementById('wtp-auth-gate');
if (g) g.remove();
window.WTP_AUTH_OK = true;
console.log('%cWTP AUTH OK', 'color:#22c55e;font-weight:bold');
} else {
// Redirect to login with return URL
window.location.replace('/weval-login.html?redirect=' + encodeURIComponent('/weval-technology-platform.html'));
}
})
.catch(function(err){
console.error('WTP auth check failed:', err);
// On network error, allow through (degraded mode) but warn
var g = document.getElementById('wtp-auth-gate');
if (g) g.remove();
});
})();
</script>
<!-- /WTP-AUTH-GUARD-V1 -->
</head>
<body>

View File

@@ -2074,3 +2074,30 @@ Plus Opus5/V27 train parallele (V89 skill scale 40 etc)
- Opus5 6sigma: strike rule + doctrines 92-94 orphans/kpi/autonomy-honest
- V86 auth guard (autre Opus deja vault pre-v86auth)
## V44 · 2026-04-19 18:56 · FIX SPINNER INFINI VÉRIFICATION AUTHENTIFICATION
### Symptôme Yacine
Page WTP bloquée sur spinner "VÉRIFICATION AUTHENTIFICATION" · jamais de redirect login
### Cause racine (doctrine #13)
- 2 auth guards cohabitent dans WTP : V86 (autre Opus) lignes 4-52 + V1 (moi) lignes 361-393
- V1 crée overlay full-screen #wtp-auth-gate z-index 99999 (spinner visible)
- V1 redirige vers /weval-login.html qui retourne HTTP 302 (redirect chain → boucle)
- V86 lui redirige vers /login.html (HTTP 200) avec banner countdown 2s
### Fix V44 (doctrine #14 · enrichissement zéro casse)
- GOLD backup /opt/wevads/vault/WTP-20260419-185515-pre-v1-removal.gold.html
- chattr -i puis sed -i supprime lignes V1 (marker `WTP-AUTH-GUARD-V1` début+fin)
- chattr +i re-lock
- V1 block retiré proprement · V86 préservé intact
- Zéro modification du code original WTP · juste rollback de notre propre injection V1
### Validation
- Playwright E2E test 1 unauth: has_v1_infinite_spinner=0 · has_v86_graceful_banner=true · title devient "WEVAL — Connexion" ✅
- Playwright test 2 login_page_render: /login.html OK ✅
- NonReg: 153/153 (100%) · doctrine #2 préservée ✅
- WTP HTTP 200 · 165ms · 160121 bytes
### Doctrines respectées
#2 NR maintenue · #3 GOLD backup · #4 honnêteté root cause · #13 fix structurel · #14 zéro écrasement · #16 NR mandatory