- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
88 lines
3.2 KiB
HTML
88 lines
3.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="theme-color" content="#1976d2" />
|
|
<meta
|
|
name="description"
|
|
content="Visual Workflow Builder V2 - Interface de création de workflows RPA"
|
|
/>
|
|
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
<title>Visual Workflow Builder V2</title>
|
|
|
|
<!--
|
|
Suppression des erreurs ResizeObserver
|
|
Auteur : Dom, Alice, Kiro - 09 janvier 2026
|
|
Ces erreurs sont bénignes et générées par Material-UI/ReactFlow
|
|
-->
|
|
<script>
|
|
(function() {
|
|
// Fonction de vérification des erreurs ResizeObserver
|
|
function isResizeObserverError(message) {
|
|
return message && (
|
|
message.includes('ResizeObserver loop') ||
|
|
message.includes('ResizeObserver loop completed with undelivered notifications')
|
|
);
|
|
}
|
|
|
|
// Intercepter window.onerror
|
|
var originalOnError = window.onerror;
|
|
window.onerror = function(message, source, lineno, colno, error) {
|
|
if (isResizeObserverError(message)) {
|
|
return true; // Empêcher la propagation
|
|
}
|
|
if (originalOnError) {
|
|
return originalOnError(message, source, lineno, colno, error);
|
|
}
|
|
return false;
|
|
};
|
|
|
|
// Intercepter les événements d'erreur (phase de capture)
|
|
window.addEventListener('error', function(event) {
|
|
if (event.message && isResizeObserverError(event.message)) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
event.stopImmediatePropagation();
|
|
return false;
|
|
}
|
|
}, true);
|
|
|
|
// Intercepter les promesses rejetées
|
|
window.addEventListener('unhandledrejection', function(event) {
|
|
if (event.reason && event.reason.message && isResizeObserverError(event.reason.message)) {
|
|
event.preventDefault();
|
|
return false;
|
|
}
|
|
}, true);
|
|
|
|
// Intercepter console.error
|
|
var originalConsoleError = console.error;
|
|
console.error = function() {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
if (args.length > 0 && typeof args[0] === 'string' && isResizeObserverError(args[0])) {
|
|
return; // Ignorer silencieusement
|
|
}
|
|
originalConsoleError.apply(console, args);
|
|
};
|
|
|
|
// Intercepter console.warn aussi
|
|
var originalConsoleWarn = console.warn;
|
|
console.warn = function() {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
if (args.length > 0 && typeof args[0] === 'string' && isResizeObserverError(args[0])) {
|
|
return; // Ignorer silencieusement
|
|
}
|
|
originalConsoleWarn.apply(console, args);
|
|
};
|
|
})();
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<noscript>Vous devez activer JavaScript pour utiliser cette application.</noscript>
|
|
<div id="root"></div>
|
|
</body>
|
|
</html>
|