fix(workbench): 复盘按钮按有无源脚本动态分支prompt——无源(输入选题/未解析视频)仅AI脚本评分,禁幻觉对比;查询失败保守沿用三模式(09-02)

This commit is contained in:
maogeigei committed 2026-09-02 14:26:56 +08:00
1 parent 8c365d77e8
commit 1444f59e42
2 files changed
+31 -9

No files matched your search

@@ -922,15 +922,32 @@ async function renderReviews(view) {
bindPager(view, (p) => { page = p; render(); });
view.querySelectorAll('[data-open]').forEach((a) => a.addEventListener('click', () => openScriptDetail(a.dataset.open)));
view.querySelectorAll('[data-review]').forEach((a) => a.addEventListener('click', () => openReviewDetail(a.dataset.review)));
view.querySelectorAll('[data-review-row]').forEach((b) => b.addEventListener('click', () => {
confirmRun({
title: '复盘评分',
desc: '将对该 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。',
prompt: '请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。',
label: '复盘指令',
skills: ['脚本复盘'],
btn: b,
});
view.querySelectorAll('[data-review-row]').forEach((b) => b.addEventListener('click', async () => {
if (b.dataset.lock) return; b.dataset.lock = '1'; // 防 await 窗口期重复点击
try {
// 按该脚本是否有原视频源脚本决定复盘范围:有 → 三模式;无(输入选题/视频未解析)→ 仅 AI 脚本评分
const row = items.find((x) => String(x.id) === String(b.dataset.reviewRow));
let hasSource = false;
if (row && Number(row.video_id) > 0) {
const vs = await api('/api/dsh/video-script?videoId=' + row.video_id).catch(() => ({ ok: false, error: 1 }));
hasSource = !!(!vs.error && vs.ok && vs.source && String(vs.source).trim()); // 查询失败视为有源(沿用原文案,不误砍对比模式)
}
const [desc, prompt] = hasSource
? ['将对该 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。',
'请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。']
: ['将对该 AI 脚本做质量复盘评分(该脚本无原视频脚本,仅评 AI 脚本:独立分析模式·10 维评分制),按 mcn-script-review(脚本复盘)技能执行。',
'请对这条 AI 脚本做质量复盘评分(独立分析模式·10 维评分制)。该脚本无原视频脚本,只评 AI 脚本本身,不做源脚本复盘、不做对比分析,按 mcn-script-review(脚本复盘)技能执行。'];
confirmRun({
title: hasSource ? '复盘评分' : 'AI脚本复盘',
desc,
prompt,
label: '复盘指令',
skills: ['脚本复盘'],
btn: b,
});
} finally {
delete b.dataset.lock;
}
}));
};
render();