Files
leaudit-platform-backend/fastapi_modules/fastapi_leaudit/domian/vo/reviewPointVo.py
T
wren adc1e0b8dc feat: 交叉评查后端优化 — 评查地区、文档评查统计、currentScore、错误提示
- GetUserTasks: 新增 task_regions CTE,从任务成员 sso_users.area 去重收集 evaluationRegion
- GetTaskDocuments: 新增 es LATERAL 子查询聚合 leaudit_rule_results 的 pass_count/warning_count/error_count/score_percent;path/uploadTime 改为从 leaudit_document_files 获取;新增 fileExt
- ReviewPointResultVO: 新增 currentScore 字段
- _loadReviewPointResults: SQL 新增 approved_delta LATERAL 子查询,currentScore = base_score + SUM(approved_deltas)
- CrossReviewTaskItemVO: 新增 evaluationRegion
- CrossReviewTaskDocumentVO: 新增 18 个评查统计字段 + path/uploadTime/fileExt
- 文档更新:交叉评查核心模块业务逻辑文档补充评查地区、评查统计、版本号本地化等章节
2026-05-15 14:15:29 +08:00

87 lines
4.0 KiB
Python

"""评查详情聚合 VO。"""
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field
class ReviewPointResultVO(BaseModel):
"""前端评查详情页所需的单条评查点结果。"""
id: str | int = Field(..., description="评查结果ID")
documentId: str = Field(..., description="文档ID")
pointId: str | int = Field(..., description="评查点/规则ID")
editAuditStatusId: str | int = Field("", description="人工审核状态ID")
editAuditStatus: int = Field(0, description="人工审核状态")
editAuditStatusMessage: str = Field("", description="人工审核意见")
title: str = Field("", description="标题")
pointName: str = Field("", description="评查点名称")
pointCode: str = Field("", description="评查点编码")
groupName: str = Field("", description="所属分组名")
status: str = Field("success", description="success/warning/error/notApplicable")
content: dict[str, Any] = Field(default_factory=dict, description="抽取字段内容")
contentPage: dict[str, str] = Field(default_factory=dict, description="字段页码映射")
suggestion: str = Field("", description="建议内容")
postAction: str = Field("", description="后续动作")
actionContent: Any = Field(default_factory=dict, description="动作配置")
legalBasis: Any = Field(default_factory=dict, description="法律依据")
evaluationConfig: Any = Field(default_factory=dict, description="评查配置")
score: float = Field(0, description="分值")
finalScore: float | None = Field(None, description="最终得分")
machineScore: float | None = Field(None, description="机器得分")
currentScore: float = Field(0, description="当前得分(含提案扣分/加分)")
result: bool | None = Field(None, description="是否通过")
failMessage: str = Field("", description="失败提示")
passMessage: str = Field("", description="通过提示")
evaluatedPointResultsLog: dict[str, Any] = Field(default_factory=dict, description="规则执行日志")
class ReviewPointStatsVO(BaseModel):
"""统计信息。"""
total: int = Field(0, description="总数")
success: int = Field(0, description="通过数")
warning: int = Field(0, description="警告数")
error: int = Field(0, description="错误数")
score: float = Field(0, description="总分")
class ReviewPointInfoVO(BaseModel):
"""评查摘要信息。"""
reviewTime: str = Field("", description="评查时间")
reviewModel: str = Field("DeepSeek", description="评查模型")
ruleGroup: str = Field("", description="规则组")
result: str = Field("success", description="总体结果")
issueCount: int = Field(0, description="问题数")
class ReviewPointsAggregateVO(BaseModel):
"""评查详情聚合响应。"""
data: list[ReviewPointResultVO] = Field(default_factory=list, description="评查点结果")
stats: ReviewPointStatsVO = Field(default_factory=ReviewPointStatsVO, description="统计信息")
reviewInfo: ReviewPointInfoVO = Field(default_factory=ReviewPointInfoVO, description="评查摘要")
document: dict[str, Any] | None = Field(default=None, description="文档信息")
comparison_document: dict[str, Any] | None = Field(default=None, description="比对文档信息")
scoring_proposals: list[dict[str, Any]] = Field(default_factory=list, description="评分提案")
class ReviewPointAuditVO(BaseModel):
"""评查点人工审核更新结果。"""
reviewPointResultId: int = Field(..., description="规则结果ID")
editAuditStatusId: int = Field(..., description="审核记录ID")
editAuditStatus: int = Field(..., description="审核状态")
overrideResult: bool | None = Field(default=None, description="人工覆盖结果")
message: str = Field("", description="审核意见")
class DocumentConfirmVO(BaseModel):
"""文档确认评查结果。"""
documentId: int = Field(..., description="文档ID")
auditStatus: int = Field(..., description="文档审核状态")