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
- 文档更新:交叉评查核心模块业务逻辑文档补充评查地区、评查统计、版本号本地化等章节
This commit is contained in:
wren
2026-05-15 14:15:29 +08:00
parent 397cbb111a
commit adc1e0b8dc
7 changed files with 393 additions and 11 deletions
@@ -20,6 +20,7 @@ class CrossReviewTaskItemVO(BaseModel):
totalDocuments: int = Field(0, description="文档总数")
completedDocuments: int = Field(0, description="已完成文档数")
createdAt: datetime | None = Field(None, description="创建时间")
evaluationRegion: list[str] = Field(default_factory=list, description="评查地区")
class CrossReviewTaskPageVO(BaseModel):
@@ -56,6 +57,23 @@ class CrossReviewTaskDocumentVO(BaseModel):
auditStatus: int = Field(0, description="任务内完成状态")
createdAt: datetime | None = Field(None, description="创建时间")
fileSize: int = Field(0, description="文件大小(字节)")
path: str | None = Field(None, description="文件存储路径")
uploadTime: datetime | None = Field(None, description="上传时间")
fileExt: str | None = Field(None, description="文件扩展名")
totalEvaluationPoints: int = Field(0, description="总评查点数")
passCount: int = Field(0, description="通过数")
warningCount: int = Field(0, description="警告数")
errorCount: int = Field(0, description="错误数")
manualCount: int = Field(0, description="人工审核数")
issueCount: int = Field(0, description="问题总数")
warningMessages: list[str] = Field(default_factory=list, description="警告消息")
errorMessages: list[str] = Field(default_factory=list, description="错误消息")
issueMessages: list[str] = Field(default_factory=list, description="问题消息")
manualMessages: list[str] = Field(default_factory=list, description="人工审核消息")
finalScore: float = Field(0, description="最终得分")
fullScore: float = Field(0, description="满分")
scoreSummary: str = Field("", description="得分摘要")
scorePercent: float = Field(0, description="得分百分比")
class CrossReviewTaskDocumentPageVO(BaseModel):
@@ -31,6 +31,7 @@ class ReviewPointResultVO(BaseModel):
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="通过提示")