// ─── AI Enhanced Functions ───────────────────────────────────────────────── let aiPresets = []; async function loadAIPresets() { try { aiPresets = await api('GET', '/api/ai/presets'); const select = document.getElementById('g-preset'); if (select) { aiPresets.forEach(p => { const opt = document.createElement('option'); opt.value = p.id; opt.textContent = `${p.name} (${p.category})`; select.appendChild(opt); }); } } catch (err) { console.error('Failed to load AI presets:', err); } } function applyPreset(id) { const preset = aiPresets.find(p => p.id === id); if (preset) { document.getElementById('g-prompt').value = preset.prompt; toast(`已应用预设: ${preset.name}`, 'info'); } } async function showAIOptimizeModal() { const code = document.getElementById('code-editor').value; openModal('✨ AI 优化内容', `
AI 将分析并重写您的 HTML 内容,保留结构并优化文案。
`, async () => { const type = document.getElementById('opt-type').value; const btn = document.getElementById('modal-confirm-btn'); btn.textContent = '优化中...'; btn.disabled = true; try { const data = await api('POST', '/api/ai/optimize', { html_content: code, optimization_type: type }); document.getElementById('code-editor').value = data.optimized_content; updatePreview(); toast('内容已优化', 'success'); closeModal(); } catch (err) { toast('优化失败: ' + err.message, 'error'); } }); } async function showAIWriteAssistModal() { openModal('✍️ AI 写作辅助', `
`, async () => { const btn = document.getElementById('modal-confirm-btn'); btn.textContent = '生成中...'; btn.disabled = true; try { const data = await api('POST', '/api/ai/write-assist', { section_title: document.getElementById('wa-title').value, section_type: document.getElementById('wa-type').value, context: document.getElementById('wa-context').value, tone: document.getElementById('wa-tone').value, lang: document.getElementById('wa-lang').value }); // 将生成的内容插入到编辑器光标位置或末尾 const editor = document.getElementById('code-editor'); const start = editor.selectionStart; const end = editor.selectionEnd; const text = editor.value; editor.value = text.substring(0, start) + data.content + text.substring(end); updatePreview(); toast('内容已生成并插入', 'success'); closeModal(); } catch (err) { toast('生成失败: ' + err.message, 'error'); } }); } async function showAISuggestKeywordsModal() { if (!editorPage) return; openModal('🔍 AI 关键词建议', `
`, async () => { const btn = document.getElementById('modal-confirm-btn'); btn.textContent = '分析中...'; btn.disabled = true; try { const data = await api('POST', '/api/ai/suggest-keywords', { business_name: document.getElementById('sk-name').value, service_description: document.getElementById('sk-desc').value, target_market: document.getElementById('sk-market').value }); let html = '
'; data.keywords.forEach(k => { html += ``; }); html += '
关键词意图竞争度评分
${escHtml(k.keyword)} ${escHtml(k.intent)} ${escHtml(k.competition)} ${k.score}/10
'; openModal('🔍 关键词建议结果', html); } catch (err) { toast('分析失败: ' + err.message, 'error'); } }); } // 在 renderGenerate 中调用 loadAIPresets const originalRenderGenerate = renderGenerate; renderGenerate = function() { originalRenderGenerate(); loadAIPresets(); }; // AI Form Assistance moved to head for global availability