PMFlow/tests/test_feishu_pipeline_fallba...

52 lines
1.8 KiB
Python

import pytest
from backend.app.services.feishu_signal_pipeline import FeishuSignalPipelineService
@pytest.mark.asyncio
async def test_classify_level_fallback_when_llm_empty(monkeypatch):
service = FeishuSignalPipelineService(db=None, tenant_id=1)
async def _fake_generate(*args, **kwargs):
return ""
monkeypatch.setattr(service.llm, "generate", _fake_generate)
result = await service._classify_level(message="我们需要新增导出按钮", projects=[])
assert result["level"] == "signal"
assert 0.0 <= float(result["project_score"]) <= 1.0
assert str(result["level_reasoning"]).strip()
@pytest.mark.asyncio
async def test_extract_signal_fastpath_for_simple_request(monkeypatch):
service = FeishuSignalPipelineService(db=None, tenant_id=1)
async def _should_not_be_called(*args, **kwargs):
raise AssertionError("LLM should not be called on simple signal request fastpath")
monkeypatch.setattr(service.llm, "generate", _should_not_be_called)
result = await service._extract_signal(
"新增一个导出按钮,支持飞书同步",
projects=[{"id": 3, "name": "飞书协同平台"}],
)
assert result["type"] == "新需求"
assert result["priority"] in {"P1", "P2", "P3"}
assert str(result["summary"]).strip()
@pytest.mark.asyncio
async def test_extract_project_prefill_fallback_when_llm_empty(monkeypatch):
service = FeishuSignalPipelineService(db=None, tenant_id=1)
async def _fake_generate(*args, **kwargs):
return ""
monkeypatch.setattr(service.llm, "generate", _fake_generate)
result = await service._extract_project_prefill("我们要做一个飞书需求同步项目")
assert str(result["suggested_name"]).strip()
assert str(result["suggested_description"]).strip()
assert str(result["suggested_owner"]).strip()