deep-risk/backend/app/schemas/risk_detection.py
2025-12-14 20:08:27 +08:00

127 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
风险检测相关Schema定义
"""
from typing import List, Dict, Any, Optional
from pydantic import BaseModel, Field
# 检测规则相关Schema
class DetectionRuleBase(BaseModel):
rule_name: str = Field(..., description="规则名称")
algorithm_code: str = Field(..., description="算法编码")
description: Optional[str] = Field(None, description="规则描述")
parameters: Optional[Dict[str, Any]] = Field(default_factory=dict, description="算法参数")
is_enabled: bool = Field(True, description="是否启用")
class DetectionRuleCreate(DetectionRuleBase):
pass
class DetectionRuleUpdate(BaseModel):
rule_name: Optional[str] = None
description: Optional[str] = None
parameters: Optional[Dict[str, Any]] = None
is_enabled: Optional[bool] = None
class DetectionRuleResponse(DetectionRuleBase):
rule_id: str
created_at: str
updated_at: Optional[str] = None
class Config:
from_attributes = True
# 检测任务相关Schema
class DetectionTaskCreate(BaseModel):
task_name: str = Field(..., description="任务名称")
task_type: str = Field(..., description="任务类型periodic/on_demand/batch")
entity_ids: Optional[List[str]] = Field(None, description="实体ID列表可选不提供将自动绑定")
entity_type: Optional[str] = Field(None, description="实体类型(可选,不提供将自动绑定)")
period: str = Field(..., description="检测期间格式YYYY-MM")
rule_ids: Optional[List[str]] = Field(None, description="规则ID列表")
parameters: Optional[Dict[str, Any]] = Field(default_factory=dict, description="额外参数")
class DetectionTaskResponse(BaseModel):
task_id: str
task_name: str
task_type: str
status: str
entity_type: str
period: str
total_entities: int
processed_entities: int
result_count: Optional[int] = None
summary: Optional[Dict[str, Any]] = None
parameters: Dict[str, Any]
error_message: Optional[str] = None
created_at: str
started_at: Optional[str] = None
completed_at: Optional[str] = None
class Config:
from_attributes = True
# 检测执行相关Schema
class DetectionExecutionRequest(BaseModel):
task_name: Optional[str] = Field(None, description="任务名称")
entity_id: Optional[str] = Field(None, description="实体ID可选未提供时自动使用当前用户的实体")
entity_type: Optional[str] = Field(None, description="实体类型(可选)")
period: str = Field(..., description="检测期间")
rule_ids: List[str] = Field(..., description="规则ID列表")
parameters: Optional[Dict[str, Any]] = Field(default_factory=dict, description="额外参数")
class DetectionExecutionResponse(BaseModel):
task_id: str
status: str
summary: Dict[str, Any]
result_count: int
executed_at: str
# 检测结果相关Schema
class RiskEvidence(BaseModel):
type: str
description: str
data: Dict[str, Any]
metadata: Optional[Dict[str, str]] = None
class DetectionResultItem(BaseModel):
entity_id: str
entity_type: str
risk_level: str
risk_score: float
description: str
suggestion: str
risk_data: Dict[str, Any]
evidence: List[RiskEvidence]
detected_at: str
class DetectionResultResponse(BaseModel):
id: int
task_id: str
rule_id: str
result: DetectionResultItem
class Config:
from_attributes = True
# 检测汇总相关Schema
class DetectionSummaryResponse(BaseModel):
entity_id: str
entity_type: str
period: str
total_detections: int
risk_distribution: Dict[str, int]
avg_risk_score: float
high_risk_count: int
recommendations: List[str]