新增俊希全流程测试用例:获取账号数据→提取账号设定→AI选题写脚本完整链路

This commit is contained in:
maogeigei committed 2026-08-31 17:18:10 +08:00
1 parent ff2faec462
commit 86ca4ca6be
2 files changed
+213

No files matched your search

+6
View File
@@ -416,3 +416,9 @@
- mcn-script-review SKILL.md「与相关技能的关系」表:新增「MCN工作台(mcn-work-shop)」行——AI脚本诊断页复盘入口的 AI 任务 prompt 明确指定按本技能执行
- MEMORY.md 工作台条目补 AI脚本诊断关联
- 说明:mcn-script-review = 评分式质量复盘(6+4维、叙事逻辑2倍权重、逻辑硬伤预检)+ AI脚本vs源脚本对比分析(三段式)+ 创作过程复盘;判定标准只读引用 short-video-script 知识库 09_脚本诊断
## 俊希全流程测试用例编写(17:10)
- 用户要求:编写测试用例,用账号「俊希」测试「获取账号数据(有就刷新)→ 提取账号设定 → AI参考最新视频选题 → 写脚本」完整流程
- **前置调研结论**:达人账号表仅 2 行(小咪橘座 70010/旧梦留声机 70013),**俊希不在表** → 首次登记 70014;`MCNSkill项目/俊希/` 仅含 `提示词01/`(分镜产出),无账号分析产出 → 全新执行场景
- **用例落盘**:`.workbuddy/test-cases/2026-08-31_俊希全流程.md`(TC-20260831-01),覆盖 TC-01 账号表登记 → TC-02 获取账号信息(含「有就刷新」分支:更新时间近1个月提示用户判断)→ TC-03 获取视频(≥60条/13列Excel)→ TC-04 筛选TOP(select-top6,n≤6按实际)→ TC-05 MCP解析(upload→3-5min→detail,补充规则)→ TC-06 json_tool 保存 → TC-07 人设卡12段 → TC-08 设定卡自动生成(grep一致性)→ TC-09 工作台AI选题(/api/ai/topics→3选题)→ TC-10 AI写脚本(S1-S11,automations触发)→ TC-11 收尾验证(git提交);含数据校验标准表 + 8 项异常分支预案 + 验收汇总表
- 用例引用的权威参数:视频筛选标准(TOP6上限/不足按实际,SKILL.md L43)、视频获取数量(≥60条停止,L44)、browser-harness 红线(L49)、路径配置(references/路径配置.md:开发机→桌面 MCNSkill项目/俊希/ 直挂)
@@ -0,0 +1,207 @@
# 测试用例:俊希全流程(获取账号数据 → 提取账号设定 → AI 选题写脚本)
> **用例编号**:TC-20260831-01
> **用例名称**:达人「俊希」完整链路测试——从获取账号数据(有就刷新)→ 提取账号设定 → AI 参考最新视频选题 → 写脚本
> **测试账号**:俊希(MCN 账号,亲子 Vlog 方向)
> **执行场景**:**首次执行**(俊希不在达人账号表、产出目录无账号设定/视频表格 → 走首次获取;已存在数据时走「有就刷新」分支)
> **测试日期**:2026-08-31
> **预估耗时**:约 60~90 分钟(含 MCP 解析等待 3-5 分钟/条)
---
## 一、测试目标与链路总览
验证 mcn-dou-analysis 技能(功能一→二→三→六)与 MCN 工作台 AI 写脚本、脚本创作技能 S1-S11 的**端到端贯通**,覆盖:
| # | 环节 | 所属技能/功能 | 产出物 |
|---|------|--------------|--------|
| 1 | 账号表登记 | 功能一 Step 1.0 | `达人账号表.xlsx` 新增俊希行(账号ID 70014) |
| 2 | 获取账号信息(有就刷新) | 功能一 | 账号表 15 列补齐 + 更新时间 |
| 3 | 获取视频列表 | 功能二 | `短视频表格.xlsx`(13 列,≥60 条) |
| 4 | 筛选 TOP 视频 | 功能三 Step 3 | top 视频清单(最近三个月 + ≤15min + 点赞+分享降序,TOPn) |
| 5 | MCP 视频解析 | 功能三 Step 4 | 每条视频 content + analysis |
| 6 | 保存解析结果 | 功能三 Step 5 | `视频分析/{标题}_标签1_标签2/` content.json + analysis.json |
| 7 | 生成人设卡(12 段) | 功能三 Step 6 | `俊希账号设定.md` |
| 8 | 自动生成账号设定卡 | 功能六(Step 7 自动联动) | `俊希账号设定卡.svg` |
| 9 | AI 参考最新视频选题 | MCN 工作台「AI写脚本」→ AI 选题 | 3 个选题方向 |
| 10 | AI 写脚本(S1-S11 完整流程) | 脚本创作技能 | `脚本1/` 系列产物 + S9 完整脚本 |
| 11 | 收尾验证 | 全链路 | 文件齐全 + grep 一致性 + git 提交 |
**数据流**:`达人账号表.xlsx` → 浏览器抓取(browser-harness)→ `短视频表格.xlsx` → 筛选 → MCP 解析(upload → wait → detail)→ JSON 落盘 → 账号设定 md → 设定卡 SVG → 工作台 /api/ai/topics 选题 → 创作任务(automations)→ 脚本落盘。
---
## 二、前置检查清单
| # | 检查项 | 判定标准 | 本用例实际状态 |
|---|--------|---------|---------------|
| P1 | 达人账号表是否含「俊希」 | 有 → 走「有就刷新」分支;无 → Step 1.0 登记 | **无**(仅小咪橘座 70010 / 旧梦留声机 70013)→ 首次登记 70014 |
| P2 | 产出目录 `MCNSkill项目/俊希/` 现有内容 | 有账号设定/视频表格 → 刷新覆盖;无 → 全新创建 | **仅 `提示词01/` 子目录**,无账号设定/视频表格 → 全新 |
| P3 | browser-harness 是否可用(功能一/二红线) | 可执行文件存在(Win `~/.local/bin/browser-harness.exe` / mac `~/.local/bin/browser-harness`)或 `where`/`command -v` 有输出 | 执行前检测,未装则按红线提醒/安装 |
| P4 | MCP 服务(myai-mcp-production)可用 | 当前会话 MCP 工具列表含 `upload_douyin_video`/`short_video_detail` 或 `~/.workbuddy/mcp.json` 含该服务配置 | 执行前检测,未装按 MCP 规范提醒 |
| P5 | MCN 工作台服务(端口 8899) | `http://localhost:8899` 可访问 | 未启动则先启动(`node server.js`,自动避让端口) |
| P6 | 输出路径权威配置 | 读 `references/路径配置.md` | 开发机 → 桌面 `MCNSkill项目/`,`俊希/` 账号层直挂 |
---
## 三、详细测试步骤
### TC-01 账号表登记(前置)
| 项 | 内容 |
|---|------|
| 操作 | 打开 `达人账号表.xlsx`(15 列:账号ID/达人昵称/抖音号/抖音ID/抖音地址/粉丝数/解析状态/人设卡/更新时间/获赞数/关注数/作品数/IP属地/简介/备注),新增「俊希」行 |
| 预期 | 账号ID 自增 = **70014**;抖音号/抖音ID(sec_uid)/抖音地址存**文本格式**(防科学计数法);其余字段(粉丝数/解析状态/更新时间等)留空待补;表中仅新增俊希一行,不改动已有行 |
| 验证点 | ① 表格结构仍 15 列;② 70014 行号正确;③ 抖音号列显示完整无 `E+` 变形 |
| 通过标准 | 俊希已登记且格式合规;已有 2 行(小咪橘座/旧梦留声机)数据未受影响 |
### TC-02 获取账号信息(功能一,有就刷新分支)
| 项 | 内容 |
|---|------|
| 操作 | ① 检查表中俊希「更新时间」:**首次无更新时间** → 直接抓取(无需提示刷新);**若已有且近 1 个月内** → 提示用户判断是否仍需刷新,用户确认后再抓;② 检测 browser-harness(P3);③ 读 `浏览器搜索抖音账号操作规范.md` 全文;④ browser-harness 打开抖音网页版 → 适度访问(50% 概率先浏览首页 3~8 秒)→ 搜索「俊希」→ 进达人主页提取 昵称/抖音号/抖音ID(sec_uid)/抖音地址/粉丝数/获赞数/关注数/作品数/IP属地/简介 |
| 预期 | 主页信息完整提取;**sec_uid 失效处理**:若用三方提供的抖音地址访问报「用户不存在」,改搜索昵称/抖音号重新定位,回填正确 sec_uid 与抖音地址 |
| 验证点 | ① 15 列字段逐项有值(无数据的列留空不编造);② 抖音地址为 `https://www.douyin.com/user/{sec_uid}` 完整格式;③ 粉丝数/获赞数等为网页实时数值;④ 「更新时间」回填 `YYYY-MM-DD HH:MM` |
| 通过标准 | 账号表俊希行 15 列信息登记完毕;数据来源为浏览器优先(非 MCP 内部库;若兜底用 MCP 须在备注注明) |
### TC-03 获取视频列表(功能二)
| 项 | 内容 |
|---|------|
| 操作 | 进入俊希主页 → 滚动加载视频列表(每次间隔随机 1~3 秒,`.route-sc` 容器)→ **≥60 条即停止**(或滚动到底加载不出也停,两条件先到者为准)→ 保存为 `MCNSkill项目/俊希/短视频表格.xlsx`(13 列标准格式) |
| 预期 | Excel 13 列:序号/视频ID/视频标题/视频地址/点赞数/点赞(显示)/评论数/分享数/收藏数/播放量/视频时长/发布时间/标签;行数 ≥60 |
| 验证点 | ① 表头与 13 列标准完全一致;② 行数 ≥60;③ 视频地址可访问(抽查 3 条);④ 点赞/分享/时长/发布时间为数值且单位正确 |
| 通过标准 | `短视频表格.xlsx` 落盘且数据完整;**若表已存在(有就刷新)** → 重新抓取覆盖旧表,验证新表行数/时间范围更新 |
### TC-04 筛选 TOP 视频(功能三 Step 3)
| 项 | 内容 |
|---|------|
| 操作 | 用 `scripts/excel_tool.py select-top6 短视频表格.xlsx --output top6.json` 筛选:① 发布时间在最近三个月内;② 时长 ≤15 分钟;③ 按 点赞数+分享数 降序;④ 取前 N 条 |
| 预期 | N 按 SKILL.md「视频筛选标准」唯一权威参数:**上限 6,实际满足条件不足 6 条时按实际条数取(TOPn = 实际解析条数)**;top6.json 列出候选视频(含标题/链接/双率) |
| 验证点 | ① 筛选后条数 n 明确(n ≤ 6);② 排序依据 = 点赞(列5)+分享(列8) 降序,可人工抽查核对;③ 无 >15 分钟、超三个月视频混入 |
| 通过标准 | top6.json 生成,n 与后续「账号内容基因·TOPn」板块数一致(**n=解析条数,不写死 6**) |
### TC-05 MCP 视频解析(功能三 Step 4)
| 项 | 内容 |
|---|------|
| 操作 | 对每条入选视频:`upload_douyin_video`(传视频 URL `https://www.douyin.com/video/{id}`)→ 返回 detailId → **等待 3-5 分钟**(`sleep 180` 后批量查询)→ `short_video_detail` 查询 |
| 预期 | 每条视频返回 content(分镜头表:镜头/景别/时长/画面/表情/字幕口播)+ analysis(结构化 JSON:赛道/核心人设/差异化壁垒/情绪设计/通用框架等) |
| 验证点 | ① detailId 均成功返回;② content 已出;③ 部分视频 content 已出但 analysis 未完成 → 稍后重试(2-3 分钟);④ 返回「解析中」→ 等 2-3 分钟再查;⑤ **解析失败/无法解析 → 按视频补充规则取下一位(点赞+分享降序)补齐至 n 条** |
| 通过标准 | n 条视频全部拿到 content + analysis,无缺失(或已按补充规则补足) |
### TC-06 保存解析结果(功能三 Step 5)
| 项 | 内容 |
|---|------|
| 操作 | 用 `scripts/json_tool.py`:`create-content --detail-id {id} --title "标题" --output-dir "视频分析/文件夹"` + `create-analysis`;文件夹命名 `视频标题(去特殊符号)_标签1_标签2`(去掉账号名标签和 #);最后 `verify-folders --base-dir "视频分析"` 批量验证 |
| 预期 | 每个视频独立文件夹,含 `content.json` + `analysis.json`(JSON 格式,非 Markdown);目录结构符合 `解析结果格式规范.md` |
| 验证点 | ① json 可被 `json_tool.py inspect` 正常读取;② analysis 为简化格式(自动修复未转义双引号);③ 文件夹命名规则合规 |
| 通过标准 | 全部 n 条视频 JSON 落盘,verify-folders 无缺失 |
### TC-07 生成人设卡(功能三 Step 6)
| 项 | 内容 |
|---|------|
| 操作 | 综合**两个技能库**生成:① 脚本创作技能源技能 references(结构骨架:`创作流程/4_账号设定解析和确认.md` + `3_对标视频账号拆解.md` + `知识库/01_账号设定/` + `08_对话风格/`);② 女娲造人术 `subskills/nuwa-skill-main/`(深度分析)。产出 `俊希账号设定.md`,统一 **12 段结构** |
| 预期 | 12 段齐全:账号核心定位 → 账号内容基因(**板块数 = n 条解析 = TOPn**)→ 类型库(按账号类型适配,亲子 Vlog)→ 情绪结构 → 视听风格 → 内容打法 → 内容规则 → 系列内容规划 → 差异化壁垒 → 红线清单 → 当前需解决的问题 → 设定分析说明;聚焦内容创作,不含商业化变现路径 |
| 验证点 | ① 12 段标题逐一存在;② 赛道键归一(亲子赛道在 29 枚举内);③ 内容基因板块数 = 解析条数 n;④ 人设卡内容有账号级「如果…则…」内容规则(事前约束,非事后验收) |
| 通过标准 | `俊希账号设定.md` 落盘于 `MCNSkill项目/俊希/`,12 段完整、TOPn 与解析条数一致 |
### TC-08 自动生成账号设定卡(功能六联动)
| 项 | 内容 |
|---|------|
| 操作 | 设定 md 落盘后**无需用户开口自动触发**功能六:读设定 → 读模板样例 → 模块映射 → SVG 手绘 → 产出 `俊希账号设定卡.svg`(同目录) |
| 预期 | SVG 长图(680×~1716),模块名统一为「叙事结构」「内容标签」「**内容基因·TOPn**」(n=实际解析条数);底色按账号调性选色系(亲子 Vlog 偏明快 → 浅色系或按俊希既有风格定),**同一账号固定色系**;背景上直接书写的文字随背景深浅提亮 |
| 验证点 | ① 卡片 TOPn 与设定 md 内容基因板块数一致(**n 不写死 6**);② 双向联动一致性:交付前 **grep 校验**两文件关键术语一致(模块名「叙事结构」「内容标签」「内容基因·TOPn」等),零残留后再交付;③ 卡片内容与设定 md 内容级一致 |
| 通过标准 | `俊希账号设定卡.svg` 生成;grep 校验通过(模块名/TOPn 两文件一致) |
### TC-09 工作台 AI 参考最新视频选题
| 项 | 内容 |
|---|------|
| 操作 | ① 启动工作台(`node server.js`,8899 自动避让);② 打开「AI写脚本」页(#/ai-script),在「俊希」行点「创作」→ `confirmAiScript('俊希', btn)`;③ 因俊希**已有设定** → 弹窗文案为「基于当前账号设定生成脚本」;④ 点击右下角 `AI` 按钮(#aiTopicGen)→ `POST /api/ai/topics`(body `{accountName:'俊希'}`)→ 等待约 50s 返回 |
| 预期 | 返回 **3 个选题方向**(基于俊希账号设定 + 最新视频内容提炼);自动填入选题输入框并 toast「✅ 已生成 3 个选题方向」 |
| 验证点 | ① 弹窗文案正确识别「已有设定」分支;② 选题方向与俊希亲子 Vlog 人设相关(非泛泛);③ 选题可编辑(手输或修改) |
| 通过标准 | 3 个选题方向生成且贴合账号设定,填入输入框 |
### TC-10 AI 写脚本(S1-S11 完整流程)
| 项 | 内容 |
|---|------|
| 操作 | ① 选定一个选题方向(保留在输入框)→ 点「确认」→ `executeTask()` `POST /api/run` 写入 `~/.workbuddy/workbuddy.db` automations(once+now,cwds=`D:\AgentSkill\mcn-workshop`)→ WorkBuddy 自动执行创建会话(左侧会话栏 mcn-workshop 空间可见);② 轮询 `GET /api/run/status?id=`(5s 间隔,30min 上限)观察任务状态 running → done |
| 预期 | 创作会话按脚本创作技能执行 **S1-S11 完整流程**(三态创作默认自动模式=静默执行、只落最终交付物):S1 理解需求 → S2 检索对标 → S3 确定选题 → S4 素材库 → S5 极致事件 → S6 情绪规划 → S7 结构搭建 → S8 大纲 → S9 脚本(分镜)→ S10 可选细粒度分镜 → S11 诊断复盘;prompt 带「选题方向:{topic}」 |
| 验证点 | ① 任务状态流转正常(IN_PROGRESS → DONE/COMPLETED);② 脚本落盘 `MCNSkill项目/俊希/脚本1/`(产物链:05_故事选题 → 06_短视频框架 → 07_短视频大纲 → 09_短视频脚本,禁跳步);③ S9 脚本质量门禁:开场钩子绝对时长 3-7 秒(硬上限 10 秒,不看占比);④ 数字账取证(禁心算);⑤ 画面标注 5 字段【景别|环境|光线|场景|场景元素】;⑥ 人物标注格式统一;⑦ 交付物只含输出模板字段(验收口径=执行约束,不在正文自证) |
| 通过标准 | 脚本全流程完成落盘;S9 脚本完整可拍;工作台任务状态 done;按钮恢复 |
### TC-11 收尾验证
| 项 | 内容 |
|---|------|
| 操作 | 全链路产物盘点 + 一致性校验 + git 提交 |
| 预期 | ① 文件齐全:账号表俊希行 / 短视频表格.xlsx / top 解析 JSON / 俊希账号设定.md / 俊希账号设定卡.svg / 脚本1/ 产物;② grep 校验:设定 md ↔ 卡片 SVG 关键术语一致,无「TOP6」残留于俊希产出(除非实际解析 6 条);③ 达人账号表 15 列仅按用户要求增改;④ 源技能与 .dsh 副本同步状态无意外差异 |
| 验证点 | 逐项核对(见「四、数据校验标准」);git:源仓库 mcnskills push + dsh_MCNProject(若有技能变更)push,跟踪引用正常 |
| 通过标准 | 所有验收项 ✅;无未授权修改 |
---
## 四、数据校验标准(逐项核对)
| 校验对象 | 标准 |
|---------|------|
| 达人账号表.xlsx | 15 列结构不变;俊希行 70014;抖音号/抖音ID/抖音地址文本格式;更新时间 `YYYY-MM-DD HH:MM`;仅用户要求增改 |
| 短视频表格.xlsx | 13 列表头一致;≥60 条;点赞/分享/时长/发布时间数值正确 |
| top6.json | n ≤ 6;最近三个月 + ≤15min + 点赞+分享降序;n=后续 TOPn |
| 解析 JSON | 每视频文件夹 content.json + analysis.json;JSON 可读;文件夹名 `标题_标签1_标签2` |
| 俊希账号设定.md | 12 段齐全;内容基因板块数 = n(TOPn);赛道归 29 枚举;账号级内容规则 |
| 俊希账号设定卡.svg | 模块名「叙事结构」「内容标签」「内容基因·TOPn」;n=实际解析条数;同账号固定色系 |
| 一致性 grep | `叙事结构|内容标签|内容基因·TOP` 在 md 与 SVG 中一致;俊希产出无「TOP6」残留(n≠6 时) |
| 脚本产物 | 脚本1/ 目录;产物链 05→06→07→09 顺序;S9 开场钩子 3-7s;数字账取证;5 字段画面标注 |
| 版本标签(若有技能变更) | 源 SKILL.md `updated_at`/`last_change` 更新;dsh 副本 `deployed_at` 同步 |
---
## 五、异常分支与处理预案
| 异常 | 处理 |
|-----|------|
| browser-harness 未安装(P3 不通过) | 按红线提醒用户(可跳过:改用三方 API/MCP 兜底数据源)→ 同意则 `uv tool install --python 3.12 --upgrade --force browser-harness` → `browser-harness doctor` 验三要素(工具/daemon/Chrome) |
| MCP 未安装/不可用(P4 不通过) | 按 MCP 规范「首次提问」轻量提醒(可跳过、不打断创作);同意则部署预检(Node/Python → npm 缓存权限仅 macOS 查 → npm 源)→ 写入 mcp.json + 引导 Trust |
| sec_uid 失效(主页「用户不存在」) | 改用抖音搜索昵称/抖音号重新定位主页,回填正确 sec_uid 与抖音地址 |
| 账号表已有俊希(非首次) | 走「有就刷新」:检查更新时间近 1 个月 → 提示用户判断是否刷新;用户确认后重新抓取覆盖 |
| 视频解析中/analysis 未出 | content 已出 analysis 未出 → 稍后重试;「解析中」→ 等 2-3 分钟再查 |
| 解析失败/无法解析 | 按视频补充规则取下一位(点赞+分享降序)补齐至 n 条 |
| 弹登录窗口 | 暂停操作,提示用户登录后继续 |
| 工作台任务长时间 running(>30min) | 检查 automations 状态与 cwds 配置;必要时人工介入会话 |
| 设定 md 与卡片 TOPn 不一致 | 以实际解析条数为准修正两文件(改设定→卡片重生成;改卡片→设定同步),grep 复验 |
---
## 六、验收汇总表(执行后填写)
| 环节 | 用例 | 结果(✅/❌/⚠️) | 备注 |
|-----|------|----------------|------|
| 账号表登记 | TC-01 | | |
| 获取账号信息 | TC-02 | | |
| 获取视频列表 | TC-03 | | |
| 筛选 TOP | TC-04 | | n=___ |
| MCP 解析 | TC-05 | | |
| 保存解析 | TC-06 | | |
| 人设卡 12 段 | TC-07 | | |
| 设定卡自动生成 | TC-08 | | |
| AI 选题 | TC-09 | | 3 选题 |
| AI 写脚本 | TC-10 | | 脚本1/ |
| 收尾验证 | TC-11 | | |
| **整体结论** | | | 通过/不通过 |
---
## 附:本次执行的环境事实(2026-08-31 调研记录)
- 达人账号表当前仅 2 行:小咪橘座(70010,已解析/已生成)、旧梦留声机(70013,已生成)→ 俊希首次登记为 70014
- `MCNSkill项目/俊希/` 现有仅 `提示词01/` 子目录(分镜产出,属短视频分镜提示词技能),无账号分析产出
- MCP 解析单条视频需等待 3-5 分钟;已解析过的视频可直接查询
- 工作台 #/reviews「AI脚本诊断」复盘按钮明确按 **mcn-script-review(脚本复盘)技能**执行(本用例主链路不含复盘,如需回归可追加)
- 产出根目录:开发机 → 桌面 `MCNSkill项目/{达人昵称}/`(`references/路径配置.md` 权威)