293 lines
9.7 KiB
Markdown
293 lines
9.7 KiB
Markdown
---
|
||
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>
|