Files
Simon 5e53146a9a test(backend): unit/integration tests for automation, otp, neo4j, contract
新增自动化审批状态机/执行器/意图路由/会话管理、OTP 绑定流程、neo4j 客户端、响应契约、置信度门禁、环境门控、Tier1 API 等测试。
2026-07-09 11:49:50 +08:00

90 lines
3.7 KiB
Python

# =============================================================================
# 企微IT智能服务台 — 置信门控逻辑测试(D3 / P0-3)
# =============================================================================
# 说明:测试 confidence < 0.7 门控逻辑、阈值可配置性、source_failed 标记。
# =============================================================================
import pytest
from app.schemas.enums import AudienceEnum
class TestConfidenceGate:
"""置信门控逻辑测试。"""
@pytest.mark.asyncio
async def test_confidence_above_07_passes(self):
"""验证 confidence >= 0.7 通过门控。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
assert service._apply_confidence_gate(0.86) is True
assert service._apply_confidence_gate(0.70) is True # 边界值
assert service._apply_confidence_gate(0.95) is True
assert service._apply_confidence_gate(1.0) is True
@pytest.mark.asyncio
async def test_confidence_below_07_fails(self):
"""验证 confidence < 0.7 未通过门控。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
assert service._apply_confidence_gate(0.69) is False
assert service._apply_confidence_gate(0.5) is False
assert service._apply_confidence_gate(0.0) is False
@pytest.mark.asyncio
async def test_confidence_none_fails(self):
"""验证 confidence=None 未通过门控。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
assert service._apply_confidence_gate(None) is False
@pytest.mark.asyncio
async def test_threshold_configurable(self):
"""验证门控阈值可配置。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
# 默认阈值 0.7
service = KnowledgeIterationService()
assert service.confidence_gate_threshold == 0.7
# 修改阈值
service.confidence_gate_threshold = 0.8
assert service._apply_confidence_gate(0.75) is False
assert service._apply_confidence_gate(0.85) is True
@pytest.mark.asyncio
async def test_auto_tag_audience_manual(self, db_session):
"""验证手动录入→engineer_workguide。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
audience = await service._auto_tag_audience(
db_session, "manual", ["test_id"]
)
assert audience == AudienceEnum.engineer_workguide
@pytest.mark.asyncio
async def test_auto_tag_audience_document_ragflow(self, db_session):
"""验证 RAGFlow 文档→engineer_workguide。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
audience = await service._auto_tag_audience(
db_session, "document_ragflow", ["test_id"]
)
assert audience == AudienceEnum.engineer_workguide
@pytest.mark.asyncio
async def test_auto_tag_audience_conversation_default(self, db_session):
"""验证会话来源→默认 employee_quick_reply(保守)。"""
from app.services.knowledge_iteration_service import KnowledgeIterationService
service = KnowledgeIterationService()
audience = await service._auto_tag_audience(
db_session, "conversation", ["nonexistent_id"]
)
assert audience == AudienceEnum.employee_quick_reply