From d88759ed08653faf1d4ff835bba91012bf579cce Mon Sep 17 00:00:00 2001 From: Marcos Reifonas Date: Wed, 12 Aug 2026 16:38:16 +0000 Subject: [PATCH] =?UTF-8?q?chore:=20remover=20m=C3=B3dulo=20acidental=20We?= =?UTF-8?q?bClone=20e=20depend=C3=AAncias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/sidebar/menuConfig.ts | 9 +- src/config/routeConfig.ts | 7 +- src/pages/WebClone.tsx | 201 --------------------------- src/pages/index.ts | 1 - 4 files changed, 2 insertions(+), 216 deletions(-) delete mode 100644 src/pages/WebClone.tsx diff --git a/src/components/sidebar/menuConfig.ts b/src/components/sidebar/menuConfig.ts index 1a9bc26..1c0c926 100644 --- a/src/components/sidebar/menuConfig.ts +++ b/src/components/sidebar/menuConfig.ts @@ -17,8 +17,7 @@ import { Settings, Shield, UserCog, - Cog, - Globe + Cog } from "lucide-react"; import { MenuItem, MenuGroup } from './types'; @@ -71,12 +70,6 @@ export const menuGroups: MenuGroup[] = [ key: "inconsistencias", title: "Ver Inconsistências", url: "/ferramentas/inconsistencias", - }, - { - key: "webclone", - title: "WebClone AI", - url: "/ferramentas/webclone", - icon: Globe, } ] }, diff --git a/src/config/routeConfig.ts b/src/config/routeConfig.ts index 710c2a3..e3ce06b 100644 --- a/src/config/routeConfig.ts +++ b/src/config/routeConfig.ts @@ -78,12 +78,7 @@ export const routeConfig: RouteDefinition[] = [ guard: 'resource', resourceKey: 'ferramentas-inconsistencias', }, - { - path: '/ferramentas/webclone', - component: () => import('@/pages/WebClone'), - guard: 'resource', - resourceKey: 'ferramentas-webclone', - }, + // ── Estoque ────────────────────────────────────────────── { diff --git a/src/pages/WebClone.tsx b/src/pages/WebClone.tsx deleted file mode 100644 index b0dce9c..0000000 --- a/src/pages/WebClone.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import React, { useState } from 'react'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { Button } from "@/components/ui/button"; -import { Badge } from "@/components/ui/badge"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; -import { Globe, Play, CheckCircle2, AlertCircle, RefreshCw, ExternalLink, Code } from "lucide-react"; -import { toast } from "sonner"; - -export default function WebClone() { - const [url, setUrl] = useState(''); - const [loading, setLoading] = useState(false); - const [result, setResult] = useState(null); - const [activeTab, setActiveTab] = useState('clone'); - - const handleClone = async (e: React.FormEvent) => { - e.preventDefault(); - if (!url) { - toast.error('Por favor, insira uma URL válida'); - return; - } - - setLoading(true); - toast.info(`Iniciando clonagem inteligente de ${url}...`); - - try { - // Comunicando com a API do Crawler na porta 3001 (ou rota de gateway) - const res = await fetch('http://localhost:3001/api/crawl', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ startUrl: url, maxPages: 5 }) - }); - - if (!res.ok) { - throw new Error('Falha ao comunicar com o serviço de clonagem'); - } - - const data = await res.json(); - setResult(data); - toast.success('Clonagem e recriação concluídas com sucesso!'); - setActiveTab('resultados'); - } catch (error: any) { - console.error(error); - toast.error(error.message || 'Erro ao realizar o clone da página'); - } finally { - setLoading(false); - } - }; - - return ( -
-
-
-

- WebClone AI -

-

- Clonagem inteligente avançada, mocking de SPAs e recriação generativa de componentes. -

-
- - Playwright + IA + Service Workers - -
- - - - Nova Clonagem - Resultados - - - - - - Iniciar Processo de Clonagem - - Insira a URL do site. O sistema irá extrair o HTML, processar o Shadow DOM, criar mocks de API XHR/Fetch e emular formulários via IA. - - - -
-
-
- - setUrl(e.target.value)} - className="pl-10 h-12 text-base" - required - /> -
- -
-
-
-
- -
- - - - Mocks de Rede (SPA) - - - - Injeta um Service Worker local para responder chamadas XHR e Fetch gravadas durante a sessão original, permitindo que sites React/Vue funcionem offline. - - - - - - - Recriação com IA - - - - Detecta formulários quebrados ou áreas dinâmicas vazias e usa LLMs multimodais para reescrever o componente em Vanilla JS/CSS funcional. - - - - - - - Declarative Shadow DOM - - - - Vasculha e abre as árvores de Shadow DOM ocultas, convertendo-as para templates declarativos para perfeita fidelidade visual. - - -
-
- - - {result && ( - - - - Relatório do Clone - - Detalhes da extração e emulação do site {result.rootUrl} - - -
-
-
Páginas Clonadas
-
{result.totalPages || result.pages?.length || 1}
-
-
-
Tempo de Crawl
-
{result.crawlTime ? `${(result.crawlTime / 1000).toFixed(1)}s` : 'N/A'}
-
-
-
Profundidade Máx
-
{result.crawlDepth || 1}
-
-
-
Status
- Concluído -
-
- -
- - -
-
-
- )} -
-
-
- ); -} diff --git a/src/pages/index.ts b/src/pages/index.ts index 614535d..0dfb800 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -38,4 +38,3 @@ export { default as PrioridadesFabricacao } from './PrioridadesFabricacao'; export { default as MapaInterativo } from './MapaInterativo'; export { default as Atribuicoes } from './Atribuicoes'; export { default as VerInconsistencias } from './VerInconsistencias'; -export { default as WebClone } from './WebClone';