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 988427a..89aa225 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js @@ -172,9 +172,10 @@ function bindBatchBar(container, opts) { // 09-02 v10:需求框定位=选题补充——只留本条视频选题侧字段 + 兜底「其他」;账号设定类(情绪基调/受众/结构性符号/广告植入)由人设卡提供,不在此重复收集 // 09-02 v11:dur 时长目标 移出需求栏 → 需求栏下方「功能选项」下拉(30/60/120/240/自定义),值由 w.dur 单独承载 // 09-02 v17:选题落点要素(痛点/爽点、共鸣/共情、爆点)加入需求框——创作流程需要但不是必填,空值由 AI 按账号设定与选题自决 +// 09-02 v18:叙事形态→叙事结构;删核心情节/结尾落点(情节与结尾由 AI 创作阶段自决,无需用户填写) const REQ_FIELDS = [ ['idea', '一句话创意'], ['pain', '痛点/爽点'], ['relate', '共鸣/共情'], ['blow', '爆点'], - ['form', '叙事形态'], ['plot', '核心情节'], ['end', '结尾落点'], ['note', '其他约束'], + ['form', '叙事结构'], ['note', '其他约束'], ]; // 需求 md 行 → 向导字段映射(parseReqSheet 用) const REQ_LABEL_TO_KEY = Object.fromEntries(REQ_FIELDS.map(([k, label]) => [label, k])); @@ -214,11 +215,11 @@ function buildCreatePrompt(accountName, w, personaBlock, hasPersona, attachText) } /* AI创作 弹窗(09-02 v2:需求框 + 输入框 对话式打磨)—— - 顶部=创作需求(8 行选题字段:创意+落点要素(痛点爽点/共鸣/爆点,可空)+形态/情节/结尾/其他,随对话逐轮被 AI 更新,空值标「待完善」)+ 下方时长选项条 + 顶部=创作需求(6 行选题字段:创意+落点要素(痛点爽点/共鸣/爆点,可空)+叙事结构/其他约束,随对话逐轮被 AI 更新,空值标「待完善」)+ 下方时长选项条 中部=对话流(用户输入 vs AI 整理/追问),底部=输入框 + 提交创作 */ async function confirmAiScript(accountName, btn) { const accId = btn && btn.dataset.accId ? btn.dataset.accId : ''; - const w = { idea: '', pain: '', relate: '', blow: '', form: '', dur: '', plot: '', end: '', note: '' }; + const w = { idea: '', pain: '', relate: '', blow: '', form: '', dur: '', note: '' }; const convo = []; // 对话流 { role: 'u' | 'ai', text } let pHas = false, pContent = ''; let attach = { name: '', text: '' }; // 已上传需求附件(解析后的纯文本,打磨与创作共用) @@ -281,7 +282,7 @@ async function confirmAiScript(accountName, btn) { mask.querySelector('[data-x]').addEventListener('click', close); const q = (s) => mask.querySelector(s); - /* —— 需求框渲染:8 个选题字段(含落点要素,可空),维度名作标题、内容在下方 —— */ + /* —— 需求框渲染:6 个选题字段(含落点要素可空;情节/结尾由 AI 创作自决),维度名作标题、内容在下方 —— */ const renderSheet = () => { const rows = REQ_FIELDS.map(([k, label]) => { const v = String(w[k] || '').trim(); @@ -324,7 +325,7 @@ async function confirmAiScript(accountName, btn) { ? convo.map((c) => (c.role === 'u' ? `