refactor(06-02): update CLI and test imports to kb_workflow.pipeline

- Remove sys.path manipulation from kb_workflow.py
- Update CLI imports to use kb_workflow.pipeline prefix
- Update all test file imports and patch paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 00:17:10 +08:00
parent fdca690bd6
commit c9ca1b538d
20 changed files with 307 additions and 307 deletions
+27 -27
View File
@@ -13,7 +13,7 @@ from datetime import datetime
from unittest.mock import AsyncMock, MagicMock, patch
from pathlib import Path
from kb_pipeline.schemas import DownloadInput, DownloadOutput
from kb_workflow.pipeline.schemas import DownloadInput, DownloadOutput
class TestDownloadInputSchema:
@@ -180,8 +180,8 @@ class TestDownloadProcessorMetadata:
self, mock_bilibili_adapter, mock_state_manager, tmp_path
):
"""Test 1: DownloadProcessor fetches Bilibili video metadata correctly"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput
input_data = DownloadInput(
content_id="BV1xx",
@@ -190,7 +190,7 @@ class TestDownloadProcessorMetadata:
content_type="video"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_adapter
@@ -212,8 +212,8 @@ class TestDownloadProcessorMetadata:
self, mock_zhihu_adapter, mock_state_manager, tmp_path
):
"""Test 2: DownloadProcessor fetches Zhihu answer metadata correctly"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput
input_data = DownloadInput(
content_id="456",
@@ -222,7 +222,7 @@ class TestDownloadProcessorMetadata:
content_type="answer"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_zhihu_adapter
@@ -243,8 +243,8 @@ class TestDownloadProcessorMetadata:
self, mock_bilibili_adapter, mock_state_manager, tmp_path
):
"""Test 3: DownloadProcessor records state on success"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput, WorkflowState
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput, WorkflowState
# Create a mock state that will be updated
mock_state = MagicMock(spec=WorkflowState)
@@ -258,7 +258,7 @@ class TestDownloadProcessorMetadata:
content_type="video"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_adapter
@@ -279,9 +279,9 @@ class TestDownloadProcessorMetadata:
self, mock_bilibili_adapter, mock_state_manager, tmp_path
):
"""Test 4: DownloadProcessor records state on failure"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput, WorkflowState
from kb_pipeline.errors import NetworkError
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput, WorkflowState
from kb_workflow.pipeline.errors import NetworkError
# Make adapter raise an error
mock_bilibili_adapter.fetch_metadata = AsyncMock(
@@ -305,7 +305,7 @@ class TestDownloadProcessorMetadata:
content_type="video"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_adapter
@@ -369,8 +369,8 @@ class TestDownloadProcessorContent:
self, mock_bilibili_article_adapter, mock_state_manager, tmp_path
):
"""Test 1: DownloadProcessor downloads Bilibili article content"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput
input_data = DownloadInput(
content_id="CV123",
@@ -379,7 +379,7 @@ class TestDownloadProcessorContent:
content_type="article"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_article_adapter
@@ -403,8 +403,8 @@ class TestDownloadProcessorContent:
self, mock_bilibili_video_adapter, mock_state_manager, tmp_path
):
"""Test 2: DownloadProcessor skips video download (handled by ASR)"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput
input_data = DownloadInput(
content_id="BV1xx",
@@ -413,7 +413,7 @@ class TestDownloadProcessorContent:
content_type="video"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_video_adapter
@@ -433,8 +433,8 @@ class TestDownloadProcessorContent:
self, mock_bilibili_article_adapter, mock_state_manager, tmp_path
):
"""Test 3: DownloadProcessor creates correct output file paths"""
from kb_pipeline.processors.download import DownloadProcessor
from kb_pipeline.schemas import DownloadInput
from kb_workflow.pipeline.processors.download import DownloadProcessor
from kb_workflow.pipeline.schemas import DownloadInput
input_data = DownloadInput(
content_id="CV123",
@@ -443,7 +443,7 @@ class TestDownloadProcessorContent:
content_type="article"
)
with patch("kb_pipeline.processors.base.get_settings") as mock_settings:
with patch("kb_workflow.pipeline.processors.base.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
with patch.object(
DownloadProcessor, '_get_adapter', return_value=mock_bilibili_article_adapter
@@ -466,16 +466,16 @@ class TestDownloadProcessorModuleExport:
"""Tests for DownloadProcessor module export."""
def test_download_processor_importable_from_processors(self):
"""Test 4: DownloadProcessor can be imported from kb_pipeline.processors"""
from kb_pipeline.processors import DownloadProcessor
"""Test 4: DownloadProcessor can be imported from kb_workflow.pipeline.processors"""
from kb_workflow.pipeline.processors import DownloadProcessor
assert DownloadProcessor is not None
assert hasattr(DownloadProcessor, 'STEP_NAME')
assert DownloadProcessor.STEP_NAME == "download"
def test_all_processors_exported(self):
"""All processors should be exported from kb_pipeline.processors"""
from kb_pipeline.processors import BaseProcessor, ParseProcessor, DownloadProcessor, ASRProcessor
"""All processors should be exported from kb_workflow.pipeline.processors"""
from kb_workflow.pipeline.processors import BaseProcessor, ParseProcessor, DownloadProcessor, ASRProcessor
assert BaseProcessor is not None
assert ParseProcessor is not None