This commit is contained in:
2026-05-14 15:07:34 +08:00
parent c2a398930d
commit 10d04c4083
179 changed files with 24073 additions and 1243 deletions

View File

@@ -0,0 +1,49 @@
from .doc import (
DocumentUploadResponse,
DocumentInfo,
DocumentListResponse,
ChunkInfo,
ParseResponse,
EmbedResponse,
)
from .rag import (
RagChatRequest,
RetrievedDoc,
SourceInfo,
QuickQuestion,
QuickQuestionsResponse,
)
from .compliance import (
RiskLevel,
ComplianceStatus,
Regulation,
ComplianceSegment,
RiskDashboard,
PriorityAction,
ComplianceResult,
ComplianceChatRequest,
AnalyzeResponse,
)
__all__ = [
"DocumentUploadResponse",
"DocumentInfo",
"DocumentListResponse",
"ChunkInfo",
"ParseResponse",
"EmbedResponse",
"RagChatRequest",
"RetrievedDoc",
"SourceInfo",
"QuickQuestion",
"QuickQuestionsResponse",
"RiskLevel",
"ComplianceStatus",
"Regulation",
"ComplianceSegment",
"RiskDashboard",
"PriorityAction",
"ComplianceResult",
"ComplianceChatRequest",
"AnalyzeResponse",
]

View File

@@ -0,0 +1,69 @@
from pydantic import BaseModel
from typing import Optional
from enum import Enum
class RiskLevel(str, Enum):
high = "high"
medium = "medium"
low = "low"
class ComplianceStatus(str, Enum):
pass_status = "pass"
warning = "warning"
fail = "fail"
class Regulation(BaseModel):
id: int
name: str
clause: Optional[str] = None
score: float
match_keyword: str
category: RiskLevel
full_content: str
class ComplianceSegment(BaseModel):
id: int
index: int
intent: str
start_pos: int
end_pos: int
content: str
risk_level: RiskLevel
regulations: list[Regulation]
class RiskDashboard(BaseModel):
score: float
high_risk_count: int
medium_risk_count: int
low_risk_count: int
need_fix_segments: int
status: ComplianceStatus
status_label: str
class PriorityAction(BaseModel):
regulation: str
issue: str
suggestion: str
severity: RiskLevel
class ComplianceResult(BaseModel):
task_id: str
dashboard: RiskDashboard
segments: list[ComplianceSegment]
priority_actions: list[PriorityAction]
class ComplianceChatRequest(BaseModel):
query: str
class AnalyzeResponse(BaseModel):
task_id: str
status: str = "processing"

View File

@@ -0,0 +1,44 @@
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
class DocumentUploadResponse(BaseModel):
doc_id: str
filename: str
size: int
status: str = "uploaded"
class DocumentInfo(BaseModel):
id: str
name: str
chunks: int
status: str
created_at: Optional[datetime] = None
class DocumentListResponse(BaseModel):
docs: list[DocumentInfo]
class ChunkInfo(BaseModel):
chunk_id: str
doc_name: str
clause_id: Optional[str] = None
chapter: Optional[str] = None
content: str
token_count: int
chunk_index: int
class ParseResponse(BaseModel):
doc_id: str
chunks: int
status: str = "parsed"
class EmbedResponse(BaseModel):
doc_id: str
vectors: int
status: str = "embedded"

View File

@@ -0,0 +1,31 @@
from pydantic import BaseModel
from typing import Optional
class RagChatRequest(BaseModel):
query: str
top_k: int = 5
class RetrievedDoc(BaseModel):
id: str
doc_name: str
clause_id: Optional[str] = None
score: float
content: str
preview: str
class SourceInfo(BaseModel):
name: str
clause: Optional[str] = None
class QuickQuestion(BaseModel):
id: str
question: str
category: str
class QuickQuestionsResponse(BaseModel):
questions: list[QuickQuestion]