This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/.planning/phases/12-srt-simplifier/12-02-PLAN.md
T

293 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
phase: 12-srt-simplifier
plan: 02
type: execute
wave: 2
depends_on:
- 12-01
files_modified:
- 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
autonomous: false
requirements:
- OUT-03
- SCOPE-01
- SCOPE-02
must_haves:
truths:
- "B 站视频处理流程使用 SRTProcessor 替代 AnalyzeProcessor"
- "知乎等其他平台处理器保持不变"
- "DeepAnalyzer 不再被 B 站视频处理调用"
- "kb-workflow process 命令正常工作"
artifacts:
- path: "kb_workflow/pipeline/pipeline.py"
provides: "Pipeline 编排"
contains: "bilibili pipeline steps"
- path: "kb_workflow/cli.py"
provides: "CLI 入口"
contains: "process_command"
key_links:
- from: "kb_workflow/cli.py"
to: "kb_workflow/pipeline/pipeline.py"
via: "Pipeline class"
pattern: "Pipeline"
- from: "kb_workflow/pipeline/pipeline.py"
to: "kb_workflow/pipeline/processors/srt.py"
via: "platform check"
pattern: "SRTProcessor"
---
<objective>
将 SRTProcessor 集成到 Pipeline,修改 B 站处理流程使用简化处理,移除 DeepAnalyzer 调用,同时保持知乎等其他平台处理不变。
Purpose: 实现需求 SCOPE-01(移除深度分析)和 SCOPE-02(仅针对 B 站),确保 B 站视频生成简化的 Markdown 文档。
Output: 修改后的 Pipeline 和 CLI,集成测试通过。
</objective>
<execution_context>
@/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md
@/home/starmen1265/.claude/get-shit-done/templates/summary.md
</execution_context>
<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
## 现有 Pipeline 流程(from cli.py)
```python
processors = [
ParseProcessor(),
DownloadProcessor(),
ASRProcessor(),
AnalyzeProcessor(), # B 站视频:深度分析(需移除)
ArchiveProcessor(),
]
config = PipelineConfig(
steps=["parse", "download", "asr", "analyze", "archive"],
)
```
## Pipeline 条件逻辑(from pipeline.py)
```python
# 现有平台相关逻辑示例
text_content_types = {"article", "answer", "zhuanlan", "question"}
if step_name == "asr" and parsed.content_type in text_content_types:
logger.info(f"Skipping ASR for text content type: {parsed.content_type}")
continue
```
## B 站 vs 知乎处理差异
| 平台 | 内容类型 | ASR | 分析 |
|------|----------|-----|------|
| bilibili | video | 需要 | 简化(SRTProcessor) |
| bilibili | article | 跳过 | AnalyzeProcessor(保留) |
| zhihu | answer | 跳过 | AnalyzeProcessor(保留) |
| zhihu | zhuanlan | 跳过 | AnalyzeProcessor(保留) |
## 需要修改的文件
1. `pipeline.py`: 根据平台类型选择处理器
2. `cli.py`: 更新处理器列表
3. `schemas.py`: 添加必要的 Input/Output Schema
</context>
<tasks>
<task type="auto">
<name>Task 1: 修改 Pipeline 支持平台特定处理流程</name>
<files>kb_workflow/pipeline/pipeline.py, kb_workflow/pipeline/schemas.py</files>
<action>
修改 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 行
</action>
<verify>
<automated>python -c "from kb_workflow.pipeline.pipeline import Pipeline; print('Pipeline imports OK')</automated>
</verify>
<done>
- Pipeline 能根据平台类型选择处理器
- B 站视频使用 SRTProcessor
- 其他平台保持 AnalyzeProcessor
</done>
</task>
<task type="auto">
<name>Task 2: 更新 CLI 处理器注册</name>
<files>kb_workflow/cli.py</files>
<action>
更新 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 会根据平台类型选择执行哪一个。
</action>
<verify>
<automated>python -c "from kb_workflow.cli import process_command; print('CLI imports OK')</automated>
</verify>
<done>
- CLI 正确导入 SRTProcessor
- 处理器列表包含所有处理器
- process_command 函数正常工作
</done>
</task>
<task type="auto">
<name>Task 3: 添加 B 站视频流程的端到端测试</name>
<files>tests/test_bilibili_pipeline.py</files>
<action>
添加 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 内容
</action>
<verify>
<automated>pytest tests/test_bilibili_pipeline.py -v</automated>
</verify>
<done>
- B 站视频流程测试通过
- 平台路由逻辑正确
- 生成的 Markdown 格式正确
</done>
</task>
<task type="auto">
<name>Task 4: 更新 DeepAnalyzer 添加弃用警告</name>
<files>kb_workflow/deep_analyzer/__init__.py</files>
<action>
更新 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。
</action>
<verify>
<automated>python -c "from kb_workflow.deep_analyzer import DeepAnalyzer; print('DeepAnalyzer imports OK')</automated>
</verify>
<done>
- DeepAnalyzer 仍可正常导入和使用
- 初始化时输出弃用警告
- 知乎处理流程不受影响
</done>
</task>
<task type="checkpoint:human-verify" gate="blocking">
<what-built>
完整的 B 站视频简化处理流程:
- SRTProcessor 处理器(解析、分段、纠错、Markdown 生成)
- Pipeline 平台路由逻辑(B 站视频用 SRT,其他用 Analyze)
- CLI 集成和端到端测试
</what-built>
<how-to-verify>
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
```
</how-to-verify>
<resume-signal>Type "approved" or describe issues found</resume-signal>
</task>
</tasks>
<verification>
- 所有单元测试通过
- B 站视频使用 SRTProcessor
- 知乎处理使用 AnalyzeProcessor
- CLI 命令正常工作
- DeepAnalyzer 弃用警告正常输出
</verification>
<success_criteria>
1. 运行 `kb-workflow process <bilibili-url>` 生成 Markdown 文件(非深度分析报告)
2. Markdown 文件包含视频元数据(标题、作者、时长)
3. 元数据处理功能保持不变(BilibiliAdapter 正常工作)
4. 视频标签正常生成
5. DeepAnalyzer 对 B 站视频输出弃用警告
6. 知乎等其他平台处理器不受影响
7. 所有测试通过
</success_criteria>
<output>
After completion, create `.planning/phases/12-srt-simplifier/12-02-SUMMARY.md`
</output>