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

This commit is contained in:
maogeigei committed 2026-09-02 14:26:56 +08:00
1 parent e66488b530
commit 24358b2df3
2 files changed
+26 -4

No files matched your search

+5
View File
@@ -163,3 +163,8 @@
## AI脚本诊断列表 生成方式列收拢两种取值(14:20)
- 原 GEN 映射死代码(rewrite/new/abc→爆款视频创作/账号列表创作/ABC融合创作,后端 listRewrites 从不返回 genMethod,恒显示爆款视频创作)
- 改为按 `rewrite_log.video_id>0` 判定:有参考视频(视频/详情页 AI创作入口,prompt 参考视频选题)=「参考选题」;无 video_id(账号列表 confirmAiScript 入口,手输/AI生成选题)=「输入选题」;删 GEN 常量。当前库 26 行全有 video_id → 全显示参考选题(如实)
## 复盘按钮 prompt 按有无源脚本动态分支(14:24)
- 问题:复盘 prompt 固定要求「AI脚本/原视频脚本/对比分析三模式」,输入选题创作(video_id=0,无原视频脚本)或无源脚本视频会无对象可比 → AI 可能幻觉编造源脚本对比,污染 source/compare 数据
- 落地:点击复盘/更新按钮时 async 查 `/api/dsh/video-script?videoId=N` 判 source 非空 → 有源=原三模式文案;无源(含 video_id=0)prompt/desc 改「仅 AI 脚本质量复盘评分(独立分析模式·10 维评分制),不做源脚本复盘与对比分析」+title 改「AI脚本复盘」;查询失败保守按有源(沿用原文案不误砍);dataset.lock 防 await 窗口期连点
- 检查发现遗留风险:按钮复盘 prompt 不含脚本全文/标识(executeTask 不透传行数据),AI 会话定位脚本依赖会话侧库访问——若点击复盘常跑偏,根因在此需另行注入
@@ -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', () => {
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: '复盘评分',
desc: '将对该 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。',
prompt: '请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。',
title: hasSource ? '复盘评分' : 'AI脚本复盘',
desc,
prompt,
label: '复盘指令',
skills: ['脚本复盘'],
btn: b,
});
} finally {
delete b.dataset.lock;
}
}));
};
render();