fix(home): count completed review statistics
This commit is contained in:
@@ -6,10 +6,24 @@ from fastapi_modules.fastapi_leaudit.services.impl.homeServiceImpl import HomeSe
|
||||
|
||||
|
||||
class _FakeDocument:
|
||||
def __init__(self, *, audit_status: int, failed_count: int = 0, updated_at: str = "2026-05-23T10:00:00") -> None:
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
audit_status: int,
|
||||
failed_count: int = 0,
|
||||
passed_count: int | None = None,
|
||||
updated_at: str = "2026-05-23T10:00:00",
|
||||
processing_status: str | None = None,
|
||||
run_status: str | None = None,
|
||||
result_status: str | None = None,
|
||||
) -> None:
|
||||
self.auditStatus = audit_status
|
||||
self.failedCount = failed_count
|
||||
self.passedCount = passed_count
|
||||
self.updatedAt = updated_at
|
||||
self.processingStatus = processing_status or ("running" if audit_status == 2 else "waiting" if audit_status == 0 else "completed")
|
||||
self.runStatus = run_status or ("running" if audit_status == 2 else "pending" if audit_status == 0 else "completed")
|
||||
self.resultStatus = result_status
|
||||
|
||||
|
||||
class _FakePage:
|
||||
@@ -47,6 +61,49 @@ class _FakeDocumentService:
|
||||
return _FakePage(documents=[], total_pages=2)
|
||||
|
||||
|
||||
class _FakeFailedReviewDocumentService:
|
||||
def __init__(self) -> None:
|
||||
self.calls = []
|
||||
|
||||
async def ListDocuments(self, **kwargs):
|
||||
self.calls.append(kwargs)
|
||||
return _FakePage(
|
||||
documents=[
|
||||
_FakeDocument(
|
||||
audit_status=0,
|
||||
passed_count=5,
|
||||
failed_count=0,
|
||||
updated_at="2026-05-21T09:00:00",
|
||||
run_status="completed",
|
||||
result_status="pass",
|
||||
),
|
||||
_FakeDocument(
|
||||
audit_status=0,
|
||||
failed_count=3,
|
||||
updated_at="2026-05-21T10:00:00",
|
||||
run_status="completed",
|
||||
result_status="fail",
|
||||
),
|
||||
_FakeDocument(
|
||||
audit_status=0,
|
||||
failed_count=0,
|
||||
updated_at="2026-05-21T11:00:00",
|
||||
processing_status="waiting",
|
||||
run_status="pending",
|
||||
result_status=None,
|
||||
),
|
||||
_FakeDocument(
|
||||
audit_status=0,
|
||||
failed_count=1,
|
||||
updated_at="2026-04-18T10:00:00",
|
||||
run_status="completed",
|
||||
result_status="fail",
|
||||
),
|
||||
],
|
||||
total_pages=1,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_home_dashboard_statistics_uses_entry_scope_and_all_pages():
|
||||
"""首页统计按入口模块与文档类型过滤,并拉取全量分页后计算。"""
|
||||
@@ -71,3 +128,17 @@ async def test_home_dashboard_statistics_uses_entry_scope_and_all_pages():
|
||||
assert [call["Page"] for call in document_service.calls] == [1, 2]
|
||||
assert all("DateFrom" not in call for call in document_service.calls)
|
||||
assert all("DateTo" not in call for call in document_service.calls)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_home_dashboard_statistics_counts_failed_reviews_as_reviewed():
|
||||
"""首页已审核统计应包含不通过但已评查完成的文件。"""
|
||||
document_service = _FakeFailedReviewDocumentService()
|
||||
service = HomeServiceImpl(DocumentService=document_service)
|
||||
|
||||
result = await service.GetDashboardStatistics(UserId=7, Today="2026-05-21")
|
||||
|
||||
assert result.todayPendingFiles == 1
|
||||
assert result.monthlyReviewedFiles == 2
|
||||
assert result.monthlyPassRate == 50
|
||||
assert result.issuesDetected == 3
|
||||
|
||||
Reference in New Issue
Block a user