Atualização automática: 2026-05-18 22:23:50

This commit is contained in:
Hermes
2026-05-18 22:23:50 +00:00
parent 7d2a72b166
commit 7c877e03ba
+75 -9
View File
@@ -178,13 +178,70 @@ function updateScoutStatus(status) {
// DESIGNER AGENT - Redesign Ultra-Moderno // DESIGNER AGENT - Redesign Ultra-Moderno
// ============================================ // ============================================
async function loadDesignerClonesSelect() {
const inputUrl = document.getElementById('designUrl');
if (!inputUrl) return;
try {
const response = await fetch('/api/clones');
const result = await response.json();
if (!result.success || !result.data?.clones) return;
const clones = result.data.clones;
// Criar o select
const select = document.createElement('select');
select.id = 'designerCloneSelect';
select.className = 'form-control mb-3';
select.style.cssText = 'background: rgba(255, 255, 255, 0.05); border: 1px solid var(--ai-border-glass); color: #f3f4f6; border-radius: 12px; padding: 12px 16px; margin-bottom: 16px; font-family: "Inter", sans-serif; cursor: pointer; width: 100%;';
let optionsHtml = '<option value="">-- Selecione um site já clonado para Redesign --</option>';
clones.forEach(c => {
const dateStr = c.cloneInfo?.clonedAt ? new Date(c.cloneInfo.clonedAt).toLocaleDateString('pt-BR') : '';
optionsHtml += `<option value="${c.id}">${c.baseUrl} ${dateStr ? `(Clonado em ${dateStr})` : ''}</option>`;
});
select.innerHTML = optionsHtml;
// Inserir antes do inputUrl
inputUrl.parentNode.insertBefore(select, inputUrl);
// Adicionar evento para desabilitar/limpar o input de URL quando um clone é selecionado
select.addEventListener('change', () => {
if (select.value) {
inputUrl.value = '';
inputUrl.placeholder = 'Site selecionado acima. (Ou limpe o select para usar URL nova)';
inputUrl.disabled = true;
agentsState.designer.currentClone = {
directory: 'cloned-sites/' + select.value,
name: select.value.split('_')[0],
url: 'https://' + select.value.split('_')[0]
};
} else {
inputUrl.disabled = false;
inputUrl.placeholder = 'https://exemplo.com (Para clonar novo site)';
agentsState.designer.currentClone = null;
}
});
} catch (e) {
console.error('Erro ao carregar lista de clones no Designer:', e);
}
}
async function startDesign() { async function startDesign() {
const clone = agentsState.designer.currentClone; const selectEl = document.getElementById('designerCloneSelect');
if (!clone) { const urlEl = document.getElementById('designUrl');
// Try to get from URL input
const url = document.getElementById('designUrl')?.value?.trim(); // Se escolheu na droplist
if (selectEl && selectEl.value) {
agentsState.designer.currentClone = {
directory: 'cloned-sites/' + selectEl.value,
name: selectEl.value.split('_')[0],
url: 'https://' + selectEl.value.split('_')[0]
};
} else {
const url = urlEl?.value?.trim();
if (!url) { if (!url) {
showAgentError('Designer', 'Nenhum site selecionado. Use o Scout ou insira uma URL.'); showAgentError('Designer', 'Selecione um site já clonado na lista ou insira uma URL válida.');
return; return;
} }
agentsState.designer.currentClone = { url, name: 'Site selecionado' }; agentsState.designer.currentClone = { url, name: 'Site selecionado' };
@@ -194,7 +251,10 @@ async function startDesign() {
updateDesignerStatus('🚀 Iniciando redesign ultra-moderno...'); updateDesignerStatus('🚀 Iniciando redesign ultra-moderno...');
try { try {
// Step 1: Clone the site let directory = agentsState.designer.currentClone.directory;
// Se NÃO escolheu na droplist (ou seja, se passou URL nova), faz o clone do zero!
if (!directory) {
updateDesignerStatus('📥 Clonando site original...'); updateDesignerStatus('📥 Clonando site original...');
const cloneResult = await cloneSite(agentsState.designer.currentClone.url); const cloneResult = await cloneSite(agentsState.designer.currentClone.url);
@@ -202,15 +262,18 @@ async function startDesign() {
throw new Error(cloneResult.error || 'Falha ao clonar'); throw new Error(cloneResult.error || 'Falha ao clonar');
} }
const directory = cloneResult.data?.directory || cloneResult.data?.path || cloneResult.directory; directory = cloneResult.data?.directory || cloneResult.data?.path || cloneResult.directory;
agentsState.designer.currentClone.directory = directory; agentsState.designer.currentClone.directory = directory;
updateDesignerStatus('✅ Site clonado com sucesso'); updateDesignerStatus('✅ Site clonado com sucesso');
} else {
updateDesignerStatus('📂 Usando site já clonado do storage...');
}
// Step 2: Apply ultra-modern redesign // Step 2: Apply ultra-modern redesign
updateDesignerStatus('🎨 Aplicando redesign ultra-moderno...'); updateDesignerStatus('🎨 Aplicando redesign ultra-moderno com IA...');
const redesignResult = await applyUltraModernRedesign(directory); const redesignResult = await applyUltraModernRedesign(directory);
updateDesignerStatus('✨ Redesign concluído!'); updateDesignerStatus('✨ Redesign concluído com sucesso!');
showDesignerPreview(redesignResult.previewUrl); showDesignerPreview(redesignResult.previewUrl);
} catch (err) { } catch (err) {
@@ -527,5 +590,8 @@ document.addEventListener('DOMContentLoaded', function() {
btn.addEventListener('click', () => switchAgentTab(btn.dataset.tab)); btn.addEventListener('click', () => switchAgentTab(btn.dataset.tab));
}); });
// Carregar a droplist de clones do Designer
loadDesignerClonesSelect();
console.log('✅ BrainSteel Web Agents initialized'); console.log('✅ BrainSteel Web Agents initialized');
}); });