From 8443af199bf27af870b457efb3758015c6676d74 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Wed, 2 Sep 2026 19:07:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(workshop):=20=E7=97=9B=E7=82=B9/=E7=88=BD?= =?UTF-8?q?=E7=82=B9=20=E6=A0=87=E7=AD=BE=E5=8A=A0=E7=A9=BA=E6=A0=BC?= =?UTF-8?q?=EF=BC=88label+clarify=E6=A8=A1=E6=9D=BF=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=EF=BC=89=EF=BC=9BAI=E5=86=99=E8=84=9A=E6=9C=AC=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=BB=98=E8=AE=A4=E8=BF=91=E4=B8=89=E4=B8=AA=E6=9C=88?= =?UTF-8?q?=20v24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js | 4 ++-- project/短视频脚本创作/V1.0/mcn-work-shop/server.js | 4 ++-- 2 files changed, 4 insertions(+), 4 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 e7f83cd..1811a88 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js @@ -176,7 +176,7 @@ function bindBatchBar(container, opts) { // 09-02 v19:爆点→创新/爆点,字段序调整至「一句话创意」之后 // 09-02 v20:删共鸣/共情(由 AI 按痛点/爽点自然发挥,无需用户单独填写) const REQ_FIELDS = [ - ['idea', '一句话创意'], ['blow', '创新 / 爆点'], ['pain', '痛点/爽点'], + ['idea', '一句话创意'], ['blow', '创新 / 爆点'], ['pain', '痛点 / 爽点'], ['form', '叙事结构'], ['note', '其他约束'], ]; // 需求 md 行 → 向导字段映射(parseReqSheet 用) @@ -923,7 +923,7 @@ async function renderVideoDetail(view, id) { /* ================= AI写脚本 ================= */ async function renderRewrites(view, initAccount) { /* v22:initAccount=账号列表 AI脚本列跳转进入,预筛该账号 */ try { initAccount = decodeURIComponent(initAccount || ''); } catch (e) { initAccount = ''; } /* hash 路径段 param 未解码,中文账号名需还原(v22 fix) */ - let state = { search: initAccount || '', parsed: '', days: '30', page: 1, pageSize: 20, batch: false }; + let state = { search: initAccount || '', parsed: '', days: '90', page: 1, pageSize: 20, batch: false }; async function load() { const d = await api('/api/dsh/videos?search=' + encodeURIComponent(state.search) + '&parsed=' + state.parsed + '&days=' + state.days + '&page=' + state.page + '&pageSize=' + state.pageSize); const rows = (d.items || []).map((v) => ` diff --git a/project/短视频脚本创作/V1.0/mcn-work-shop/server.js b/project/短视频脚本创作/V1.0/mcn-work-shop/server.js index 8776d1a..dfe5ef5 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/server.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/server.js @@ -704,8 +704,8 @@ const server = http.createServer((req, res) => { + '3. 若信息已基本齐备:用一两句话总结并提示用户可点击「提交创作」。\n' + '4. 输出必须严格分两段:第一段是对用户说的话(120 字以内,含必要时的问题);\n' + '然后另起一行单独输出 ==REQ==;\n' - + '接着输出 5 行需求清单(仍未确定的项留空值,严禁编造;情节/结尾/时长不由本清单承载,由创作阶段按人设与选题自决;共鸣/共情亦不收集,创作时由 AI 依痛点/爽点自然发挥),模板:\n' - + '- 一句话创意:\n- 创新 / 爆点:\n- 痛点/爽点:\n- 叙事结构:\n- 其他约束:\n' + + '接着输出 5 行需求清单(仍未确定的项留空值,严禁编造;情节/结尾/时长不由本清单承载,由创作阶段按人设与选题自决;共鸣/共情亦不收集,创作时由 AI 依痛点 / 爽点自然发挥),模板:\n' + + '- 一句话创意:\n- 创新 / 爆点:\n- 痛点 / 爽点:\n- 叙事结构:\n- 其他约束:\n' + '5. 需求框只收集本条视频的选题相关信息;账号级设定(情绪基调 / 目标受众 / 结构性符号 / 广告植入等)已由账号设定自动带入创作,不要向达人重复询问这些维度——仅当达人主动提出与账号设定不同的要求时,将其记入「其他约束」。'; // 4) Dify blocking 调用 const difyUrl = String(process.env.DIFY_URL || 'https://mydify.youmanvideo.com/v1').replace(/\/+$/, '');