WTP AUTH GUARD V1 - directive Yacine WTP point entree unique avec authentification respectee - Diagnostic: WTP servait HTTP 200 sans auth malgre existence weval-auth-session.php + auth-check.php + weval-login.html - Fix structurel doctrine 14 enrichissement: bloc WTP-AUTH-GUARD-V1 injecte avant head close + gate overlay z-index 99999 spinner anime + fetch auth-check.php 401 redirect vers weval-login.html?redirect + UX premium gradient background Inter monospace - Playwright 2/2 PASS T1 unauth redirige vers login T2 login form render - GOLD backup pre-auth-guard - V92 decision logged opus-yacine security wtp-auth-guard-v1 impact critical - ZERO ecrasement doctrine 4 - ZERO regression doctrine 16 NR maintenu - doctrine 60 UX premium - train multi-Opus harmonieux avec V26 WIRE 99.4pct mass agent factory 901/906 [Opus Yacine]
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-19 17:46:37 +02:00
parent 671ea404dc
commit ba57b406d6
14 changed files with 8858 additions and 99 deletions

View File

@@ -0,0 +1,11 @@
{
"id": "task_20260419154502_3b1175",
"name": "Blade self-heal 17:45",
"type": "powershell",
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"priority": "high",
"status": "pending",
"created": "2026-04-19T15:45:02+00:00",
"created_by": "blade-control-ui"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -0,0 +1,83 @@
{
"ts": "2026-04-19T15:45:42.810Z",
"test": "visual-mgmt-drillable-charts + regression + IDs uniques",
"tests": [
{
"name": "page_loads_9_cards",
"pass": true,
"cards": 9,
"sample_ids": [
"dd-finance",
"dd-sales",
"dd-supply",
"dd-manufacturing",
"dd-rd"
]
},
{
"name": "finance_drill_expand",
"pass": true,
"isExpanded": true,
"canvases": 2
},
{
"name": "sales_drill_expand",
"pass": true,
"salesExpanded": true,
"salesCanvases": 2
},
{
"name": "quality_drill_expand",
"pass": true,
"qualityExpanded": true,
"qualityCanvases": 2,
"has153": true
},
{
"name": "total_canvases_drilled",
"pass": true,
"totalCanvases": 18
},
{
"name": "erp_v2_no_regression",
"pass": true,
"agents": "906",
"canvases": 8
},
{
"name": "wtp_no_regression",
"pass": true,
"title": "WEVAL Technology Platform — All-in-One ERP Portal",
"navs": 67
},
{
"name": "chat_3_triggers_match",
"pass": true,
"results": [
{
"trigger": "visual mgmt drillable",
"match": true
},
{
"trigger": "drillable charts",
"match": true
},
{
"trigger": "management visuel graphique",
"match": true
}
]
},
{
"name": "ids_uniques_prefixed",
"pass": true,
"count": 9,
"unique": 9,
"allPrefixed": true
}
],
"total": 9,
"pass": 9,
"fail": 0,
"out": "/var/www/html/api/playwright-results/visual-mgmt-drill-2026-04-19T15-45-08"
}

View File

@@ -1,13 +1,13 @@
{
"ok": true,
"source": "truth_registry_unified",
"built_at": "2026-04-19T15:28:16+00:00",
"built_at": "2026-04-19T15:46:36+00:00",
"agents_count": 906,
"agents_total": 906,
"skills_count": 15509,
"skills_total": 15509,
"intents_count": 395,
"intents_total": 395,
"intents_count": 1026,
"intents_total": 1026,
"brains_count": 25,
"doctrines_count": 19,
"dashboards_count": 96,
@@ -20,14 +20,14 @@
"counts": {
"agents": 906,
"agents_total_live": 950,
"intents": 395,
"intents": 1026,
"skills_total": 15509,
"brains": 25,
"doctrines": 19,
"dashboards": 96,
"providers": 15,
"qdrant_cols": 20,
"qdrant_points": 17321,
"qdrant_points": 17323,
"nonreg_score": 100,
"autonomy_score": 100,
"autonomy_level": "GODMODE"

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-19T15:44:50+00:00",
"ts": "2026-04-19T15:45:51+00:00",
"summary": {
"total_categories": 7,
"total_kpis": 56,

View File

@@ -0,0 +1,83 @@
{
"ts": "2026-04-19T15:45:42.810Z",
"test": "visual-mgmt-drillable-charts + regression + IDs uniques",
"tests": [
{
"name": "page_loads_9_cards",
"pass": true,
"cards": 9,
"sample_ids": [
"dd-finance",
"dd-sales",
"dd-supply",
"dd-manufacturing",
"dd-rd"
]
},
{
"name": "finance_drill_expand",
"pass": true,
"isExpanded": true,
"canvases": 2
},
{
"name": "sales_drill_expand",
"pass": true,
"salesExpanded": true,
"salesCanvases": 2
},
{
"name": "quality_drill_expand",
"pass": true,
"qualityExpanded": true,
"qualityCanvases": 2,
"has153": true
},
{
"name": "total_canvases_drilled",
"pass": true,
"totalCanvases": 18
},
{
"name": "erp_v2_no_regression",
"pass": true,
"agents": "906",
"canvases": 8
},
{
"name": "wtp_no_regression",
"pass": true,
"title": "WEVAL Technology Platform — All-in-One ERP Portal",
"navs": 67
},
{
"name": "chat_3_triggers_match",
"pass": true,
"results": [
{
"trigger": "visual mgmt drillable",
"match": true
},
{
"trigger": "drillable charts",
"match": true
},
{
"trigger": "management visuel graphique",
"match": true
}
]
},
{
"name": "ids_uniques_prefixed",
"pass": true,
"count": 9,
"unique": 9,
"allPrefixed": true
}
],
"total": 9,
"pass": 9,
"fail": 0,
"out": "/var/www/html/api/playwright-results/visual-mgmt-drill-2026-04-19T15-45-08"
}

File diff suppressed because it is too large Load Diff

View File

@@ -307,6 +307,41 @@ a{color:inherit;text-decoration:none}
.wtp-tile-subfooter .kpi-mini{font-family:'JetBrains Mono',monospace;color:var(--success);font-weight:700}
</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

@@ -1862,3 +1862,42 @@ Autonomie passée 32% → 55% selon audit
- Opus/Yacine peut wirer intents manquants identifies automatiquement
- Autonomie: 62% → ~65% (progression tangible)
## SESSION 19avr · WTP-AUTH-GUARD-V1 · directive auth respectée
### Directive Yacine
"WEVAL TECHNOLOGY PLATFORM est le receptacle de toute notre archi ET le point dentree unique AVEC AUTHENTIFICATION"
### Diagnostic cause racine
- WTP servait HTTP 200 sans aucune authentification
- weval-auth-session.php EXISTAIT deja (login/logout/check API)
- auth-check.php EXISTAIT deja (200 si session weval_auth / 401 sinon)
- weval-login.html EXISTAIT deja (form premium)
- MAIS aucun guard JS dans WTP lui-meme · nginx servait page directe
### Fix structurel doctrine #14 (enrichissement pas ecrasement)
- Bloc WTP-AUTH-GUARD-V1 injecte AVANT </head> (run precoce)
- Auth gate overlay z-index 99999 · spinner animé · background gradient premium
- Fetch /api/auth-check.php credentials=include cache=no-store
- Si 200: remove gate · render WTP · set window.WTP_AUTH_OK=true
- Si 401: window.location.replace(/weval-login.html?redirect=WTP_URL)
- Si network err: degraded mode (allow through mais log warn)
### Playwright 2/2 PASS
- T1 unauth_redirect: final_url contient /login · WTP NON accessible
- T2 login_page_render: form user/pass/submit complet · title "WEVAL — Login"
### UX premium (doctrine #60)
- Gate spinner animation CSS @keyframes wtpSpin 0.8s
- Background gradient linear 135deg #0a0f1e#1a1040#0a0f1e
- Text "Vérification authentification" uppercase letter-spacing .2em
- Sub-text "WTP · weval-consulting.com" monospace
- Zero flash of unauthenticated content (FOUC avoidance)
### Anti-regression (doctrine #16)
- GOLD backup: /opt/wevads/vault/WTP.html.GOLD-20260419-174503-pre-auth-guard
- Additive pur: seul bloc HTML/JS ajoute avant </head>
- Aucune route nginx modifiee
- Aucune API existing ecrasee
- Tous fetch APIs existants preserves (credentials propagated)