--- 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" --- 将独立的元数据技能模块 (kb-bilibili-metadata 和 kb-zhihu-metadata) 整合进 kb-workflow/metadata/。 Purpose: 统一代码结构,消除 sys.path 动态操作,使用标准包导入。 Output: kb-workflow/metadata/ 目录包含所有元数据提取模块,platform adapters 使用标准导入。 @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md @.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 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 ``` Task 1: 创建 metadata 目录并移动 bilibili 模块 kb-workflow/metadata/__init__.py, kb-workflow/metadata/bilibili_extractor.py, kb-workflow/metadata/bilibili_metadata.py 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 内部代码(保持原样) python -c "from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor; print('bilibili OK')" kb-workflow/metadata/ 目录存在,bilibili_extractor.py 可从新路径导入 Task 2: 移动 zhihu 模块到 metadata 目录 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 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. 移动后不要修改内部代码(保持原样) python -c "from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor; print('zhihu OK')" zhihu 模块文件已移动到 kb-workflow/metadata/,可从新路径导入 Task 3: 更新 platform adapters 导入路径 kb_pipeline/platforms/bilibili.py, kb_pipeline/platforms/zhihu.py 更新 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 处理逻辑,直接导入 python -c "from kb_pipeline.platforms.bilibili import BilibiliAdapter; from kb_pipeline.platforms.zhihu import ZhihuAdapter; print('adapters OK')" platform adapters 使用标准包导入,无 sys.path 操作 Task 4: 删除原独立目录并验证 (删除) kb-bilibili-metadata/, (删除) kb-zhihu-metadata/ 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 ``` pytest tests/ -v --tb=short -x 原 kb-bilibili-metadata 和 kb-zhihu-metadata 目录已删除,所有测试通过 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" - [ ] kb-workflow/metadata/ 目录包含 bilibili 和 zhihu 所有模块 - [ ] kb_pipeline/platforms/ 使用标准导入,无 sys.path 操作 - [ ] 所有测试通过 (pytest tests/ -v) - [ ] 原 kb-bilibili-metadata 和 kb-zhihu-metadata 目录已删除 After completion, create `.planning/phases/06-code-consolidation/06-01-SUMMARY.md`