初始化
This commit is contained in:
49
app/schemas/__init__.py
Normal file
49
app/schemas/__init__.py
Normal 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",
|
||||
]
|
||||
69
app/schemas/compliance.py
Normal file
69
app/schemas/compliance.py
Normal 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"
|
||||
44
app/schemas/doc.py
Normal file
44
app/schemas/doc.py
Normal 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"
|
||||
31
app/schemas/rag.py
Normal file
31
app/schemas/rag.py
Normal 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]
|
||||
Reference in New Issue
Block a user