test(工作台): 俊希测试用例重跑——TC-09/10+三入口输入输出+入库全链路验证

- cdp-test-junxi.mjs: 弹窗标题断言 AI写脚本→AI创作(09-01 改名同步);文案分支打印修正(首次/有设定正则区分)
- 实测验证:TC-09 界面链路 PASS(AI选题3方向);AI创作三入口 prompt 注入 PASS(账号设定前置/选题后置/无泄漏);TC-10 自动任务链路 PASS(automations→调度器→会话→脚本02落盘);入库 PASS(video_source 6条+persona幂等+videos去重)
- 库表澄清:source/analysis 无 account_id 列靠 video_id 关联,俊希行 video_id=null 属设计
This commit is contained in:
maogeigei committed 2026-09-01 12:44:13 +08:00
1 parent d9576c19dd
commit 56fc5e08fc
3 files changed
+17 -6

No files matched your search

+8
View File
@@ -182,3 +182,11 @@
- **规则定稿(一句话)**:库中已有 ≠ 可直接使用——实时数据(账号信息/视频列表)必须重新获取(红线禁回填);分析产物(人设卡/视频解析/分析报告)复用优先 + 询问是否更新,只对增量补获取;「已有」须校验内容质量(存在≠有效,假数据视为无,实测 1629「连通性测试」8字符假 persona)
- **落盘 3 处**:①新建 `subskill/mcn-dou-analysis/references/铁律避坑规则/已有数据处理规则.md`(统一决策表:分场景决策表+三判断依据+收敛散落规则出处+接口速查);②SKILL.md 红线行后加「已有数据处理(统一决策)」引用行;③工作台 `docs/AI会话任务输入输出对照.md` 关键细节加「已有数据处理」条目
- 已 commit(2 小时节奏内不 push)
## 09-01 12:4x 俊希测试用例重跑(用户:重新跑俊希的测试用例,看所有功能是否正常,特别是自动任务 AI会话任务/输入输出/入库)
- **TC-09 界面链路 PASS**:cdp-test-junxi.mjs 断言同步(弹窗标题 AI写脚本→AI创作,09-01 改名后脚本脱节已修);定位俊希[data-create]→弹窗(title=AI创作,desc=基于当前账号设定=有设定场景)→AI选题 3 方向 PASS;文案分支打印修正(firstTime 正则区分首次/有设定,原打印误报「首次场景」)
- **AI创作三入口输入输出 PASS**(cdp-verify-aicreate.mjs):#/rewrites 已解析无选题段(旧梦留声机分镜头表)→【视频解析内容】+提炼指令;未解析(白昼小熊)→账号信息前置 idx26<解析要求 idx75;账号详情已解析有选题段→【视频选题】+# 选题;均无 noPersonaNote/undefined 泄漏
- **TC-10 自动任务链路 PASS**:--confirm 真实触发 → automations 写入 automation-1788237441433(once+ACTIVE,scheduled_at=12:37:26,next_run_at=+5s 显式写,cwds=D:\AgentSkill\mcn-workshop)→ 调度器拾取(automation_runs IN_PROGRESS→ACCEPTED,runtime_state running 1→0 无 error)→ 会话 1d1e19fe 创建(working→completed)→ 脚本02/09_脚本正文.md 落盘(月底百元生存挑战!450s/6场,开场钩子 10s 内、5字段画面标注、人物(表情/动作):台词 格式)
- **入库链路 PASS**:POST /api/import/account {account:俊希,root:桌面MCNSkill项目} → {ok:true, video_source:6, persona:0, videos_upserted:0, skipped:[persona(重复)]};6 条 source 全部 content+analysis_json 双字段(analysis 860~33916字符);persona 幂等仍 1 行 7010 字符;video_analysis=0 属正常(视频分析/ 目录无「拆解分析.md」,该字段只收拆解产物)
- **库表结构澄清**:account_video_source/analysis 无 account_id 列,靠 video_id→account_videos.id 关联;俊希 6 条 source video_id=null(代码设计 insSource.run(null,...)),JOIN 查不到属正常;id=47(02:02)与 id=80(12:38)同 detailId 33021 但 aweme_id 不同=历史遗留映射差异,非本次问题
- 已 commit(2 小时节奏内不 push)
@@ -1,5 +1,6 @@
// 模拟点击测试:俊希「AI写脚本」界面链路(#/accounts → AI写脚本弹窗 → AI 选题生成)
// 模拟点击测试:俊希「AI创作」界面链路(#/accounts → AI创作弹窗 → AI 选题生成)
// 覆盖测试用例 TC-09 的界面交互环节(真实模拟用户点击,非仅文字步骤)
// 2026-09-01 更新:按钮/弹窗标题已由「AI写脚本」统一改名为「AI创作」(cdp-test 断言同步)
//
// 前置:
// 1. 工作台服务运行中(node server.js,默认端口 8900;可传参指定)
@@ -57,11 +58,11 @@ const findBtn = await ev2(`(() => {
})()`);
console.log('【Step1 账号列表定位俊希】', JSON.stringify(findBtn));
if (!findBtn.found) {
console.log('FAIL: 账号列表未找到俊希「AI写脚本」按钮(若账号未关注,请先到周榜/账号列表关注俊希)');
console.log('FAIL: 账号列表未找到俊希「AI创作」按钮(若账号未关注,请先到周榜/账号列表关注俊希)');
await send('Target.closeTarget', { targetId }); ws.close(); ws2.close(); process.exit(1);
}
// 4) 模拟点击「AI写脚本」→ 轮询等待弹窗出现(confirmAiScript 先 await persona 接口再建弹窗,需等待)
// 4) 模拟点击「AI创作」→ 轮询等待弹窗出现(confirmAiScript 先 await persona 接口再建弹窗,需等待)
await ev2(`(() => { const b = [...document.querySelectorAll('[data-create]')].find((x) => x.dataset.create === '俊希'); b.click(); return true; })()`);
const modal = await ev2(`(async () => {
for (let i = 0; i < 24; i++) {
@@ -74,10 +75,12 @@ const modal = await ev2(`(async () => {
}
return { open: false };
})()`);
console.log('【Step2 AI写脚本弹窗】', JSON.stringify(modal, null, 1));
const descOk = modal.open && modal.title.includes('AI写脚本') && modal.hasTopicInput && modal.hasGenBtn;
console.log('【Step2 AI创作弹窗】', JSON.stringify(modal, null, 1));
const descOk = modal.open && modal.title.includes('AI创作') && modal.hasTopicInput && modal.hasGenBtn;
const branch = modal.open && (modal.desc || '').includes('账号设定');
console.log(branch ? ' → 文案分支:先进行账号设定分析(首次场景,符合预期)' : ' → 文案分支:基于当前账号设定(有设定场景)');
// 09-01 修正:有 persona 时 desc=「基于当前账号设定…」;无 persona 时才提示先分析账号设定
const firstTime = modal.open && /先.*账号设定|暂无账号设定|尚未.*设定/.test(modal.desc || '');
console.log(firstTime ? ' → 文案分支:先进行账号设定分析(首次场景)' : branch ? ' → 文案分支:基于当前账号设定(有设定场景)' : ' → 文案分支:未识别(需人工确认)');
// 5) 模拟点击「AI」选题按钮 → 轮询选题输入框(Dify 约 50s)
await ev2(`(() => { const g = document.querySelector('#aiTopicGen'); g.click(); return true; })()`);