From 89b453ef6a3f5ceed0fc8cb3aff312165b565b75 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Mon, 7 Sep 2026 12:31:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0:AI=E5=88=9B?= =?UTF-8?q?=E4=BD=9C=E5=BC=B9=E7=AA=97=E5=9B=9B=E9=A1=B9=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?+flova=E5=BC=8F=E9=80=89=E9=A1=B9=E4=BA=A4=E4=BA=92(=E8=8D=89?= =?UTF-8?q?=E7=A8=BF=E7=BC=93=E5=AD=98/=E5=8E=BB=E9=81=AE=E7=BD=A9?= =?UTF-8?q?=E5=85=B3/=E6=94=B6=E5=B0=BE=E9=97=A8=E6=A7=9B/=E5=80=99?= =?UTF-8?q?=E9=80=89=E5=85=B7=E4=BD=93=E5=8C=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1.0/mcn-work-shop/public/data-pages.js | 70 ++++++++++++++++--- .../V1.0/mcn-work-shop/public/style.css | 27 ++++--- .../V1.0/mcn-work-shop/server.js | 16 ++--- 3 files changed, 87 insertions(+), 26 deletions(-) diff --git a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js index 4f5e45a..3d08ba6 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js @@ -250,10 +250,21 @@ function buildCreatePrompt(accountName, w, personaBlock, hasPersona, attachText) 中部=对话流(用户输入 vs AI 整理/追问),底部=输入框 + 提交创作 */ async function confirmAiScript(accountName, btn) { const accId = btn && btn.dataset.accId ? btn.dataset.accId : ''; - const w = { idea: '', pain: '', blow: '', form: '', dur: '', note: '' }; - const convo = []; // 对话流 { role: 'u' | 'ai', text } + /* 09-07 v26:草稿缓存(localStorage,按账号隔离)——关闭/误关后重开恢复已对话内容与已填需求 */ + const CACHE_KEY = 'aicreate_draft_' + accountName; + const readCache = () => { + try { + const raw = localStorage.getItem(CACHE_KEY); + return raw ? JSON.parse(raw) : null; + } catch (e) { return null; } + }; + const cache = readCache(); + const w = { idea: '', pain: '', blow: '', form: '', dur: '', note: '', ...(cache && cache.w ? cache.w : {}) }; + const convo = (cache && Array.isArray(cache.convo)) ? cache.convo.filter((c) => c && c.role && typeof c.text === 'string').map((c) => ({ role: c.role === 'ai' ? 'ai' : 'u', text: String(c.text), opts: Array.isArray(c.opts) ? c.opts.filter((o) => typeof o === 'string') : [] })) : []; // 对话流 { role: 'u' | 'ai', text, opts } let pHas = false, pContent = ''; - let attach = { name: '', text: '' }; // 已上传需求附件(解析后的纯文本,打磨与创作共用) + let attach = (cache && cache.attach && cache.attach.name) + ? { name: String(cache.attach.name), text: String(cache.attach.text || '').slice(0, 20000), meta: String(cache.attach.meta || '') } + : { name: '', text: '' }; // 已上传需求附件(解析后的纯文本,打磨与创作共用) let parsing = false; // 附件解析中(防重入) let busy = false; const loadPersona = async () => { @@ -269,7 +280,11 @@ async function confirmAiScript(accountName, btn) { const mask = document.createElement('div'); mask.className = 'modal-mask'; mask.innerHTML = `