Atualização automática: 2026-05-18 22:23:50
This commit is contained in:
@@ -178,13 +178,70 @@ function updateScoutStatus(status) {
|
||||
// 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() {
|
||||
const clone = agentsState.designer.currentClone;
|
||||
if (!clone) {
|
||||
// Try to get from URL input
|
||||
const url = document.getElementById('designUrl')?.value?.trim();
|
||||
const selectEl = document.getElementById('designerCloneSelect');
|
||||
const urlEl = document.getElementById('designUrl');
|
||||
|
||||
// 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) {
|
||||
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;
|
||||
}
|
||||
agentsState.designer.currentClone = { url, name: 'Site selecionado' };
|
||||
@@ -194,23 +251,29 @@ async function startDesign() {
|
||||
updateDesignerStatus('🚀 Iniciando redesign ultra-moderno...');
|
||||
|
||||
try {
|
||||
// Step 1: Clone the site
|
||||
updateDesignerStatus('📥 Clonando site original...');
|
||||
const cloneResult = await cloneSite(agentsState.designer.currentClone.url);
|
||||
let directory = agentsState.designer.currentClone.directory;
|
||||
|
||||
if (!cloneResult.success) {
|
||||
throw new Error(cloneResult.error || 'Falha ao clonar');
|
||||
// Se NÃO escolheu na droplist (ou seja, se passou URL nova), faz o clone do zero!
|
||||
if (!directory) {
|
||||
updateDesignerStatus('📥 Clonando site original...');
|
||||
const cloneResult = await cloneSite(agentsState.designer.currentClone.url);
|
||||
|
||||
if (!cloneResult.success) {
|
||||
throw new Error(cloneResult.error || 'Falha ao clonar');
|
||||
}
|
||||
|
||||
directory = cloneResult.data?.directory || cloneResult.data?.path || cloneResult.directory;
|
||||
agentsState.designer.currentClone.directory = directory;
|
||||
updateDesignerStatus('✅ Site clonado com sucesso');
|
||||
} else {
|
||||
updateDesignerStatus('📂 Usando site já clonado do storage...');
|
||||
}
|
||||
|
||||
const directory = cloneResult.data?.directory || cloneResult.data?.path || cloneResult.directory;
|
||||
agentsState.designer.currentClone.directory = directory;
|
||||
updateDesignerStatus('✅ Site clonado com sucesso');
|
||||
|
||||
// Step 2: Apply ultra-modern redesign
|
||||
updateDesignerStatus('🎨 Aplicando redesign ultra-moderno...');
|
||||
updateDesignerStatus('🎨 Aplicando redesign ultra-moderno com IA...');
|
||||
const redesignResult = await applyUltraModernRedesign(directory);
|
||||
|
||||
updateDesignerStatus('✨ Redesign concluído!');
|
||||
updateDesignerStatus('✨ Redesign concluído com sucesso!');
|
||||
showDesignerPreview(redesignResult.previewUrl);
|
||||
|
||||
} catch (err) {
|
||||
@@ -527,5 +590,8 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
btn.addEventListener('click', () => switchAgentTab(btn.dataset.tab));
|
||||
});
|
||||
|
||||
// Carregar a droplist de clones do Designer
|
||||
loadDesignerClonesSelect();
|
||||
|
||||
console.log('✅ BrainSteel Web Agents initialized');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user