phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
phase
plan
type
wave
depends_on
files_modified
autonomous
requirements
must_haves
12-srt-simplifier
02
execute
2
kb_workflow/pipeline/pipeline.py
kb_workflow/pipeline/schemas.py
kb_workflow/cli.py
kb_workflow/deep_analyzer/__init__.py
tests/test_bilibili_pipeline.py
false
truths
artifacts
key_links
B 站视频处理流程使用 SRTProcessor 替代 AnalyzeProcessor
知乎等其他平台处理器保持不变
DeepAnalyzer 不再被 B 站视频处理调用
kb-workflow process 命令正常工作
path
provides
contains
kb_workflow/pipeline/pipeline.py
Pipeline 编排
bilibili pipeline steps
path
provides
contains
kb_workflow/cli.py
CLI 入口
process_command
from
to
via
pattern
kb_workflow/cli.py
kb_workflow/pipeline/pipeline.py
Pipeline class
Pipeline
from
to
via
pattern
kb_workflow/pipeline/pipeline.py
kb_workflow/pipeline/processors/srt.py
platform check
SRTProcessor
将 SRTProcessor 集成到 Pipeline,修改 B 站处理流程使用简化处理,移除 DeepAnalyzer 调用,同时保持知乎等其他平台处理不变。
Purpose: 实现需求 SCOPE-01(移除深度分析)和 SCOPE-02(仅针对 B 站),确保 B 站视频生成简化的 Markdown 文档。
Output: 修改后的 Pipeline 和 CLI,集成测试通过。
<execution_context>
@/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md
@/home/starmen1265/.claude/get-shit-done/templates/summary.md
</execution_context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
现有 Pipeline 流程(from cli.py)
Pipeline 条件逻辑(from pipeline.py)
B 站 vs 知乎处理差异
平台
内容类型
ASR
分析
bilibili
video
需要
简化(SRTProcessor)
bilibili
article
跳过
AnalyzeProcessor(保留)
zhihu
answer
跳过
AnalyzeProcessor(保留)
zhihu
zhuanlan
跳过
AnalyzeProcessor(保留)
需要修改的文件
pipeline.py: 根据平台类型选择处理器
cli.py: 更新处理器列表
schemas.py: 添加必要的 Input/Output Schema
Task 1: 修改 Pipeline 支持平台特定处理流程
kb_workflow/pipeline/pipeline.py, kb_workflow/pipeline/schemas.py
修改 Pipeline 支持平台特定处理流程:
1. 更新 `kb_workflow/pipeline/schemas.py`:
- 确认 `SRTInput` 和 `SRTOutput` 已在 12-01 中添加
- 添加 `SRTInput` 到 imports
2. 修改 `kb_workflow/pipeline/pipeline.py` 的 `run` 方法:
- 在 step 处理循环中,检测 B 站视频 + analyze 步骤的情况
- B 站视频(platform="bilibili", content_type="video")时:
- 跳过 "analyze" 步骤
- 执行 "srt" 步骤(使用 SRTProcessor)
- 其他情况保持原有逻辑
3. 修改 `run` 方法中的步骤输入创建逻辑:
- 添加 `elif step_name == "srt":` 分支
- SRTInput 需要: srt_file(从 ASR 结果获取), metadata_file, output_file
4. 修改 `_populate_skipped_step_results` 方法:
- 添加 "srt" 步骤的现有文件扫描逻辑
关键代码位置: pipeline.py 约 170-250 行
python -c "from kb_workflow.pipeline.pipeline import Pipeline; print('Pipeline imports OK')
- Pipeline 能根据平台类型选择处理器
- B 站视频使用 SRTProcessor
- 其他平台保持 AnalyzeProcessor
Task 2: 更新 CLI 处理器注册
kb_workflow/cli.py
更新 CLI 处理器注册:
1. 修改 `kb_workflow/cli.py` 的 `process_command` 函数:
- 导入 SRTProcessor: `from .pipeline.processors import SRTProcessor`
- 将 SRTProcessor 添加到 processors 列表
- 更新 PipelineConfig.steps: `["parse", "download", "asr", "srt", "analyze", "archive"]`
( Pipeline 会根据平台条件跳过不需要的步骤)
2. 处理器列表变为:
```python
processors = [
ParseProcessor(),
DownloadProcessor(),
ASRProcessor(),
SRTProcessor(), # 新增:B 站视频使用
AnalyzeProcessor(), # 保留:知乎/文章使用
ArchiveProcessor(),
]
```
注意:Pipeline 步骤顺序保持不变,SRTProcessor 和 AnalyzeProcessor 都注册,
但 Pipeline 会根据平台类型选择执行哪一个。
python -c "from kb_workflow.cli import process_command; print('CLI imports OK')
- CLI 正确导入 SRTProcessor
- 处理器列表包含所有处理器
- process_command 函数正常工作
Task 3: 添加 B 站视频流程的端到端测试
tests/test_bilibili_pipeline.py
添加 B 站视频流程的端到端测试:
1. 创建 `tests/test_bilibili_pipeline.py`:
- 使用 mock 模拟 BilibiliAdapter 的 fetch_metadata 和 download_video
- 使用 mock 模拟 ASRProcessor 的输出(返回 SRT 文件路径)
- 测试 B 站视频处理流程:
- 验证 SRTProcessor 被调用
- 验证 AnalyzeProcessor 被跳过
- 验证生成的 Markdown 文件格式正确
2. 测试用例:
- `test_bilibili_video_uses_srt_processor`: 验证 B 站视频使用 SRTProcessor
- `test_bilibili_article_uses_analyze_processor`: 验证 B 站文章使用 AnalyzeProcessor
- `test_zhihu_answer_uses_analyze_processor`: 验证知乎回答使用 AnalyzeProcessor
3. 使用 pytest fixtures 创建测试数据:
- 模拟的 SRT 文件内容
- 模拟的 metadata.json 内容
pytest tests/test_bilibili_pipeline.py -v
- B 站视频流程测试通过
- 平台路由逻辑正确
- 生成的 Markdown 格式正确
Task 4: 更新 DeepAnalyzer 添加弃用警告
kb_workflow/deep_analyzer/__init__.py
更新 DeepAnalyzer 添加弃用警告(但保留功能):
1. 修改 `kb_workflow/deep_analyzer/__init__.py`:
- 在 `DeepAnalyzer.__init__` 中添加日志警告:
```python
import logging
logger = logging.getLogger(__name__)
logger.warning(
"DeepAnalyzer is deprecated for Bilibili video processing. "
"Use SRTProcessor instead."
)
```
- 功能保持不变,以便知乎等其他平台继续使用
2. 不删除任何代码,只是添加警告
注意:DeepAnalyzer 仍被 AnalyzeProcessor 使用,知乎处理需要它。
此任务只是添加警告,提醒开发者 B 站视频应使用 SRTProcessor。
python -c "from kb_workflow.deep_analyzer import DeepAnalyzer; print('DeepAnalyzer imports OK')
- DeepAnalyzer 仍可正常导入和使用
- 初始化时输出弃用警告
- 知乎处理流程不受影响
完整的 B 站视频简化处理流程:
- SRTProcessor 处理器(解析、分段、纠错、Markdown 生成)
- Pipeline 平台路由逻辑(B 站视频用 SRT,其他用 Analyze)
- CLI 集成和端到端测试
1. 运行单元测试: `pytest tests/test_srt_processor.py tests/test_bilibili_pipeline.py -v`
2. 测试 B 站视频处理(需要真实 SRT 文件或 mock
) :
```bash
# 使用测试模式运行
python -m kb_workflow process "
https://www.bilibili.com/video/BV1test " --no-skip
```
3. 验证输出文件格式:
- 检查生成的 .md 文件包含 YAML frontmatter
- 检查时间戳已移除
- 检查文本已分段
4. 验证知乎处理不受影响:
```bash
python -m kb_workflow process "
https://zhuanlan.zhihu.com/p/123456 " --no-skip
```
Type "approved" or describe issues found
- 所有单元测试通过
- B 站视频使用 SRTProcessor
- 知乎处理使用 AnalyzeProcessor
- CLI 命令正常工作
- DeepAnalyzer 弃用警告正常输出
<success_criteria>
运行 kb-workflow process <bilibili-url> 生成 Markdown 文件(非深度分析报告)
Markdown 文件包含视频元数据(标题、作者、时长)
元数据处理功能保持不变(BilibiliAdapter 正常工作)
视频标签正常生成
DeepAnalyzer 对 B 站视频输出弃用警告
知乎等其他平台处理器不受影响
所有测试通过
</success_criteria>
After completion, create `.planning/phases/12-srt-simplifier/12-02-SUMMARY.md`