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/06-code-consolidation/06-01-PLAN.md
T

256 lines
8.8 KiB
Markdown

---
phase: 06-code-consolidation
plan: 01
type: execute
wave: 1
depends_on: []
files_modified:
- kb-workflow/metadata/__init__.py
- kb-workflow/metadata/bilibili_extractor.py
- kb-workflow/metadata/bilibili_metadata.py
- kb-workflow/metadata/zhihu_extractor.py
- kb-workflow/metadata/zhihu_metadata.py
- kb-workflow/metadata/zhihu_article_crawler.py
- kb-workflow/metadata/markdown_converter.py
- kb_pipeline/platforms/bilibili.py
- kb_pipeline/platforms/zhihu.py
autonomous: true
requirements:
- MET-01
- MET-02
- MET-03
- MET-04
- MET-05
must_haves:
truths:
- "kb_workflow.metadata.bilibili_extractor 可正常导入"
- "kb_workflow.metadata.zhihu_extractor 可正常导入"
- "kb_pipeline/platforms/ 模块可通过新路径导入 metadata 模块"
- "原 kb-bilibili-metadata 目录已删除"
- "原 kb-zhihu-metadata 目录已删除"
artifacts:
- path: "kb-workflow/metadata/__init__.py"
provides: "metadata 包入口,导出 BilibiliExtractor 和 ZhihuPlaywrightExtractor"
- path: "kb-workflow/metadata/bilibili_extractor.py"
provides: "B站元数据提取器"
- path: "kb-workflow/metadata/zhihu_extractor.py"
provides: "知乎内容提取器"
key_links:
- from: "kb_pipeline/platforms/bilibili.py"
to: "kb_workflow.metadata.bilibili_extractor"
via: "from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor"
- from: "kb_pipeline/platforms/zhihu.py"
to: "kb_workflow.metadata.zhihu_extractor"
via: "from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor"
---
<objective>
将独立的元数据技能模块 (kb-bilibili-metadata 和 kb-zhihu-metadata) 整合进 kb-workflow/metadata/。
Purpose: 统一代码结构,消除 sys.path 动态操作,使用标准包导入。
Output: kb-workflow/metadata/ 目录包含所有元数据提取模块,platform adapters 使用标准导入。
</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
@.planning/phases/06-code-consolidation/06-CONTEXT.md
@.planning/phases/06-code-consolidation/06-RESEARCH.md
<interfaces>
<!-- Key interfaces executor needs from codebase -->
From kb_pipeline/platforms/bilibili.py (需要修改的动态导入):
```python
# 旧代码 - 需要删除
_BILIBILI_METADATA_PATH = Path(__file__).parent.parent.parent / "kb-bilibili-metadata"
if _BILIBILI_METADATA_PATH.exists():
sys.path.insert(0, str(_BILIBILI_METADATA_PATH))
from bilibili_extractor import BilibiliExtractor
# 新代码 - 标准导入
from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor
```
From kb_pipeline/platforms/zhihu.py (需要修改的动态导入):
```python
# 旧代码 - 需要删除
_kb_zhihu_path = Path(__file__).parent.parent.parent / "kb-zhihu-metadata"
if str(_kb_zhihu_path) not in sys.path:
sys.path.insert(0, str(_kb_zhihu_path))
from zhihu_extractor import ZhihuPlaywrightExtractor
# 新代码 - 标准导入
from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor
```
</interfaces>
</context>
<tasks>
<task type="auto">
<name>Task 1: 创建 metadata 目录并移动 bilibili 模块</name>
<files>
kb-workflow/metadata/__init__.py,
kb-workflow/metadata/bilibili_extractor.py,
kb-workflow/metadata/bilibili_metadata.py
</files>
<action>
1. 创建 kb-workflow/metadata/ 目录
2. 使用 git mv 移动文件(保留历史):
- kb-bilibili-metadata/bilibili_extractor.py → kb-workflow/metadata/bilibili_extractor.py
- kb-bilibili-metadata/bilibili_metadata.py → kb-workflow/metadata/bilibili_metadata.py
3. 创建 kb-workflow/metadata/__init__.py,内容如下:
```python
"""KB Workflow Metadata Module
提供 B站和知乎的元数据提取功能
"""
from .bilibili_extractor import BilibiliExtractor
__all__ = [
"BilibiliExtractor",
]
```
4. 移动后不要修改 bilibili_extractor.py 内部代码(保持原样)
</action>
<verify>
<automated>python -c "from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor; print('bilibili OK')"</automated>
</verify>
<done>kb-workflow/metadata/ 目录存在,bilibili_extractor.py 可从新路径导入</done>
</task>
<task type="auto">
<name>Task 2: 移动 zhihu 模块到 metadata 目录</name>
<files>
kb-workflow/metadata/zhihu_extractor.py,
kb-workflow/metadata/zhihu_metadata.py,
kb-workflow/metadata/zhihu_article_crawler.py,
kb-workflow/metadata/markdown_converter.py,
kb-workflow/metadata/__init__.py
</files>
<action>
1. 使用 git mv 移动文件:
- kb-zhihu-metadata/zhihu_extractor.py → kb-workflow/metadata/zhihu_extractor.py
- kb-zhihu-metadata/zhihu_metadata.py → kb-workflow/metadata/zhihu_metadata.py
- kb-zhihu-metadata/zhihu_article_crawler.py → kb-workflow/metadata/zhihu_article_crawler.py
- kb-zhihu-metadata/markdown_converter.py → kb-workflow/metadata/markdown_converter.py
2. 更新 kb-workflow/metadata/__init__.py:
```python
"""KB Workflow Metadata Module
提供 B站和知乎的元数据提取功能
"""
from .bilibili_extractor import BilibiliExtractor
from .zhihu_extractor import ZhihuPlaywrightExtractor
__all__ = [
"BilibiliExtractor",
"ZhihuPlaywrightExtractor",
]
```
3. 移动后不要修改内部代码(保持原样)
</action>
<verify>
<automated>python -c "from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor; print('zhihu OK')"</automated>
</verify>
<done>zhihu 模块文件已移动到 kb-workflow/metadata/,可从新路径导入</done>
</task>
<task type="auto">
<name>Task 3: 更新 platform adapters 导入路径</name>
<files>
kb_pipeline/platforms/bilibili.py,
kb_pipeline/platforms/zhihu.py
</files>
<action>
更新 kb_pipeline/platforms/bilibili.py:
1. 删除 sys.path 动态操作代码(第 33-36 行):
```python
# 删除以下代码
_BILIBILI_METADATA_PATH = Path(__file__).parent.parent.parent / "kb-bilibili-metadata"
if _BILIBILI_METADATA_PATH.exists():
sys.path.insert(0, str(_BILIBILI_METADATA_PATH))
```
2. 将 `from bilibili_extractor import BilibiliExtractor` 改为 `from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor`
3. 删除 try/except 包装,直接导入(因为包已存在)
更新 kb_pipeline/platforms/zhihu.py:
1. 删除 sys.path 动态操作代码(第 18-20 行):
```python
# 删除以下代码
_kb_zhihu_path = Path(__file__).parent.parent.parent / "kb-zhihu-metadata"
if str(_kb_zhihu_path) not in sys.path:
sys.path.insert(0, str(_kb_zhihu_path))
```
2. 将 `from zhihu_extractor import ZhihuPlaywrightExtractor` 改为 `from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor`
3. 删除 try/except 包装中的 ImportError 处理逻辑,直接导入
</action>
<verify>
<automated>python -c "from kb_pipeline.platforms.bilibili import BilibiliAdapter; from kb_pipeline.platforms.zhihu import ZhihuAdapter; print('adapters OK')"</automated>
</verify>
<done>platform adapters 使用标准包导入,无 sys.path 操作</done>
</task>
<task type="auto">
<name>Task 4: 删除原独立目录并验证</name>
<files>
(删除) kb-bilibili-metadata/,
(删除) kb-zhihu-metadata/
</files>
<action>
1. 运行测试验证整合成功:
```bash
pytest tests/test_platforms/test_bilibili.py tests/test_platforms/test_zhihu.py -v
```
2. 测试通过后,使用 git rm 删除原目录:
```bash
git rm -r kb-bilibili-metadata/ kb-zhihu-metadata/
```
3. 再次运行测试确认删除不影响功能:
```bash
pytest tests/ -v --tb=short -x
```
</action>
<verify>
<automated>pytest tests/ -v --tb=short -x</automated>
</verify>
<done>原 kb-bilibili-metadata 和 kb-zhihu-metadata 目录已删除,所有测试通过</done>
</task>
</tasks>
<verification>
1. 导入验证:
- `from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor` 成功
- `from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor` 成功
2. 平台适配器验证:
- `from kb_pipeline.platforms.bilibili import BilibiliAdapter` 成功
- `from kb_pipeline.platforms.zhihu import ZhihuAdapter` 成功
3. 测试验证:
- `pytest tests/ -v` 全部通过
4. 清理验证:
- `ls kb-bilibili-metadata/` 返回 "No such file or directory"
- `ls kb-zhihu-metadata/` 返回 "No such file or directory"
</verification>
<success_criteria>
- [ ] kb-workflow/metadata/ 目录包含 bilibili 和 zhihu 所有模块
- [ ] kb_pipeline/platforms/ 使用标准导入,无 sys.path 操作
- [ ] 所有测试通过 (pytest tests/ -v)
- [ ] 原 kb-bilibili-metadata 和 kb-zhihu-metadata 目录已删除
</success_criteria>
<output>
After completion, create `.planning/phases/06-code-consolidation/06-01-SUMMARY.md`
</output>