From e296b60d597c870a6d218812f5f15198d788356e Mon Sep 17 00:00:00 2001 From: maogeigei Date: Thu, 3 Sep 2026 19:22:33 +0800 Subject: [PATCH] =?UTF-8?q?R46:=20=E8=84=9A=E6=9C=AC=E8=AF=8A=E6=96=AD?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E6=94=B9=E5=90=8D=E2=80=94=E2=80=94=E9=92=A9?= =?UTF-8?q?=E5=AD=90=E8=AE=BE=E7=BD=AE=E2=86=92=E7=88=86=E6=AC=BE=E5=BC=80?= =?UTF-8?q?=E5=9C=BA=E3=80=81=E5=85=B1=E9=B8=A3=E5=92=8C=E5=85=B1=E6=83=85?= =?UTF-8?q?=E2=86=92=E5=88=9B=E6=84=8F=E5=92=8C=E7=88=86=E7=82=B9=EF=BC=88?= =?UTF-8?q?=E6=8E=92=E8=AE=BE=E5=AE=9A=E6=89=BF=E6=8E=A5=E5=89=8D=EF=BC=89?= =?UTF-8?q?=EF=BC=9BDIAG=5FKEY=5FALIAS=20=E6=97=A7=20key=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E4=BF=9D=E5=8E=86=E5=8F=B2=E5=88=86=E6=95=B0=EF=BC=9B?= =?UTF-8?q?data-pages=20ah=E2=86=92ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1.0/mcn-work-shop/public/data-pages.js | 18 +++++++++++------- .../V1.0/mcn-work-shop/public/index.html | 2 +- 2 files changed, 12 insertions(+), 8 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 6af9c14..64c1eab 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js @@ -1448,7 +1448,7 @@ async function openCustomScriptView(id) { /* ================= AI脚本诊断 ================= */ async function renderReviews(view) { const d = await api('/api/dsh/rewrites').catch((e) => ({ ok: false, error: e.message })); - const DIMS = ['设定承接', '框架节奏', '钩子设置', '叙事逻辑', '极致事件', '共鸣和共情', '其他', '总分']; + const DIMS = ['创意和爆点', '设定承接', '框架节奏', '爆款开场', '叙事逻辑', '极致事件', '其他', '总分']; if (!d.ok) { view.innerHTML = `
${toolbarBack()}
${esc(d.error || '加载失败')}
`; bindBack(view); return; } const items = (d.items || []).filter((x) => x.status === 'done' && x.script_len > 0); // 补账号名 @@ -1474,7 +1474,7 @@ async function renderReviews(view) { const sd = dimsOf(row); const rv = reviewOf(row); const dimsTd = DIMS.map((dim) => { - const v = dim === '总分' ? sd.total : sd.dims[dim]; + const v = dim === '总分' ? sd.total : diagDimVal(sd.dims, dim); const clickable = dim === '总分' && rv && typeof v === 'number'; return `${clickable ? `${fmtScore(v)}` : fmtScore(v)}`; }).join(''); @@ -1547,9 +1547,9 @@ async function renderReviews(view) { const rv = d3.review; const typeName = rv.type === 'source' ? '原视频脚本复盘' : rv.type === 'compare' ? '对比分析' : 'AI 脚本复盘'; let dimsObj = {}; try { dimsObj = JSON.parse(rv.dims_json || '{}'); } catch (e) {} - const DIMS_ALL = ['设定承接', '框架节奏', '钩子设置', '叙事逻辑', '极致事件', '共鸣和共情', '格式规范性', '台词口语化', '内容合规', '教程完整链', '其他']; + const DIMS_ALL = ['创意和爆点', '设定承接', '框架节奏', '爆款开场', '叙事逻辑', '极致事件', '格式规范性', '台词口语化', '内容合规', '教程完整链', '其他']; const scoreColor = (v) => (v >= 75 ? '#3a9e6d' : v >= 60 ? '#d99a2b' : '#d9534f'); - const scoreBar = (dims, prefix) => DIMS_ALL.map((k) => { const v = dims[k]; const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); + const scoreBar = (dims, prefix) => DIMS_ALL.map((k) => { const v = diagDimVal(dims, k); const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); let body = ''; if (rv.type === 'compare') { const aiD = dimsObj.ai || {}, srcD = dimsObj.source || {}; @@ -1580,7 +1580,11 @@ async function renderReviews(view) { —— 分镜内容 = 该视频下 storyboard_log 中属当前版本的记录 + 生成/重新生成入口(仅参考选题脚本;自定义选题无视频载体不支持) 数据源:/api/dsh/video-script + /api/dsh/video-detail(参考选题)/ /api/dsh/custom-script(自定义选题) + /api/dsh/review-full?rewriteId=(当前版本诊断)+ /api/dsh/storyboards?videoId=(分镜) */ -const DIAG_DIMS = ['设定承接', '框架节奏', '钩子设置', '叙事逻辑', '极致事件', '共鸣和共情', '格式规范性', '台词口语化', '内容合规', '教程完整链', '其他']; +const DIAG_DIMS = ['创意和爆点', '设定承接', '框架节奏', '爆款开场', '叙事逻辑', '极致事件', '格式规范性', '台词口语化', '内容合规', '教程完整链', '其他']; +/* R46 维度术语改名(09-03):钩子设置→爆款开场、共鸣和共情→创意和爆点(排设定承接前)。 + 维度名兼作 dims_json 数据 key——历史复盘仍为旧 key,取值回退别名兼容(新 key 缺失时读旧 key),保证历史分数继续展示 */ +const DIAG_KEY_ALIAS = { '爆款开场': '钩子设置', '创意和爆点': '共鸣和共情' }; +const diagDimVal = (dims, k) => { const v = dims[k]; return (typeof v === 'number' && Number.isFinite(v)) ? v : (DIAG_KEY_ALIAS[k] ? dims[DIAG_KEY_ALIAS[k]] : v); }; const diagScoreColor = (v) => (v >= 75 ? '#3a9e6d' : v >= 60 ? '#d99a2b' : '#d9534f'); const diagFmtScore = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : '-'); @@ -1604,7 +1608,7 @@ async function reportFullReview(reviewId) { const rv = d3.review; const typeName = rv.type === 'source' ? '原视频脚本复盘' : rv.type === 'compare' ? '对比分析' : 'AI 脚本复盘'; let dimsObj = {}; try { dimsObj = JSON.parse(rv.dims_json || '{}'); } catch (e) {} - const scoreBar = (dims, prefix) => DIAG_DIMS.map((k) => { const v = dims[k]; const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); + const scoreBar = (dims, prefix) => DIAG_DIMS.map((k) => { const v = diagDimVal(dims, k); const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); let body = ''; if (rv.type === 'compare') { const aiD = dimsObj.ai || {}, srcD = dimsObj.source || {}; @@ -1701,7 +1705,7 @@ async function openScriptModal({ rewriteId, videoId } = {}) { const diagHtml = (dg) => { const { rv, dims, total, srcTotal } = dg; const totalFin = Number.isFinite(total); - const scoreBar = DIAG_DIMS.map((k) => { const v = dims[k]; const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); + const scoreBar = DIAG_DIMS.map((k) => { const v = diagDimVal(dims, k); const has = typeof v === 'number' && Number.isFinite(v); return `
${esc(k)}
${has ? v : '—'}
`; }).join(''); let html = `
AI 总分 ${diagFmtScore(totalFin ? total : Number(rv.total))}${rv.type === 'compare' && Number.isFinite(srcTotal) ? `(对比源脚本 ${diagFmtScore(srcTotal)})` : ''}${rv.verdict ? ` · ${esc(rv.verdict)}` : ''}
${scoreBar}
`; let issues = []; try { issues = JSON.parse(rv.issues_json || '[]'); } catch (e) {} if (issues.length) html += `
问题清单
${issues.map((it) => `
${esc(it.severity || '低')}${esc(it.issue || '')}${it.suggestion ? `→ ${esc(it.suggestion)}` : ''}
`).join('')}
`; diff --git a/project/短视频脚本创作/V1.0/mcn-work-shop/public/index.html b/project/短视频脚本创作/V1.0/mcn-work-shop/public/index.html index e9c2763..80c57f0 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/index.html +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/index.html @@ -42,6 +42,6 @@ - +