Merge branch 'RM2_develop' into qyqy_develop

This commit is contained in:
zhangshy
2026-09-11 11:12:43 +08:00
2 changed files with 80 additions and 9 deletions
@@ -1,5 +1,5 @@
from datetime import datetime
from types import MappingProxyType
from types import MappingProxyType, SimpleNamespace
import pytest
@@ -30,6 +30,26 @@ class FakeRepository:
return self.snapshot
class FailingEndpointResolver:
async def resolve(self, **_kwargs):
raise RuntimeError("模型端点不可用")
class FailingModelService:
async def generate(self, *_args, **_kwargs):
raise AssertionError("端点解析失败后不应调用模型")
class StubEndpointResolver:
async def resolve(self, **_kwargs):
return [object()]
class StubModelService:
async def generate(self, *_args, **_kwargs):
return SimpleNamespace(text="1. 根据模型生成日报建议")
def record(
alert_no: str,
*,
@@ -97,6 +117,8 @@ async def test_daily_report_contains_nine_sections_and_historical_items() -> Non
service = RiskDailyReportService(
session,
repository=FakeRepository(snapshot),
model_service=FailingModelService(),
endpoint_resolver=FailingEndpointResolver(),
)
report = await service.generate(
@@ -108,12 +130,46 @@ async def test_daily_report_contains_nine_sections_and_historical_items() -> Non
assert report["unresolved_items"]["total"] == 2
assert report["unresolved_items"]["historical"] == 1
assert report["unresolved_items"]["overdue"] == 1
assert report["generated_at"] == "2026-09-10 18:00:00"
assert report["unresolved_items"]["items"][0]["created_at"] == "2026-09-10 16:00:00"
assert report["source"] == "规则化模板"
assert all(f"{index}." in report["content"] for index in range(1, 10))
assert session.committed is True
assert session.added[0].action_type == "risk_daily_report_generated"
@pytest.mark.asyncio
async def test_daily_report_lazily_initializes_model_service(monkeypatch) -> None:
current = record("ALERT-MODEL")
snapshot = RiskReportSnapshot(
daily=(current,),
unresolved=(current,),
false_positive=(),
dispositions=(current,),
)
session = FakeSession()
monkeypatch.setattr(
"app.service.agent.bootstrap.get_model_service",
lambda: StubModelService(),
)
monkeypatch.setattr(
"app.service.model_gateway.DatabaseModelEndpointResolver",
StubEndpointResolver,
)
service = RiskDailyReportService(
session,
repository=FakeRepository(snapshot),
)
report = await service.generate(
context(),
now=datetime(2026, 9, 10, 10, 0),
)
assert report["source"] == "模型"
assert report["optimization_suggestions"] == "1. 根据模型生成日报建议"
def test_mail_service_is_disabled_by_default() -> None:
result = RiskDailyReportMailService(environment={}).send(
["risk@example.com"],