update
This commit is contained in:
22
backend/app/api/models/__init__.py
Normal file
22
backend/app/api/models/__init__.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# src/api/models/__init__.py
|
||||
"""API数据模型"""
|
||||
|
||||
from .document import (
|
||||
DocumentUploadRequest,
|
||||
DocumentUploadResponse,
|
||||
SearchRequest,
|
||||
SearchResultItem,
|
||||
SearchResponse,
|
||||
DocumentStatusResponse,
|
||||
ErrorResponse
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"DocumentUploadRequest",
|
||||
"DocumentUploadResponse",
|
||||
"SearchRequest",
|
||||
"SearchResultItem",
|
||||
"SearchResponse",
|
||||
"DocumentStatusResponse",
|
||||
"ErrorResponse"
|
||||
]
|
||||
63
backend/app/api/models/document.py
Normal file
63
backend/app/api/models/document.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# src/api/models/document.py
|
||||
"""文档相关Pydantic数据模型"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List, Optional, Dict, Any
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class DocumentUploadRequest(BaseModel):
|
||||
"""文档上传请求"""
|
||||
doc_name: Optional[str] = Field(None, description="文档名称")
|
||||
regulation_type: Optional[str] = Field(None, description="法规类型")
|
||||
version: Optional[str] = Field(None, description="文档版本")
|
||||
|
||||
|
||||
class DocumentUploadResponse(BaseModel):
|
||||
"""文档上传响应"""
|
||||
doc_id: str = Field(..., description="文档ID")
|
||||
doc_name: str = Field(..., description="文档名称")
|
||||
status: str = Field(..., description="处理状态")
|
||||
message: str = Field(default="", description="状态消息")
|
||||
num_chunks: int = Field(default=0, description="分块数量")
|
||||
summary: str = Field(default="", description="LLM生成的文档摘要")
|
||||
summary_latency_ms: int = Field(default=0, description="摘要生成耗时(ms)")
|
||||
timestamp: datetime = Field(default_factory=datetime.now, description="时间戳")
|
||||
|
||||
|
||||
class SearchRequest(BaseModel):
|
||||
"""检索请求"""
|
||||
query: str = Field(..., description="查询文本")
|
||||
top_k: int = Field(default=10, description="返回结果数量")
|
||||
filters: Optional[str] = Field(None, description="过滤条件")
|
||||
|
||||
|
||||
class SearchResultItem(BaseModel):
|
||||
"""单个检索结果"""
|
||||
id: int = Field(..., description="记录ID")
|
||||
content: str = Field(..., description="内容")
|
||||
score: float = Field(..., description="相似度分数")
|
||||
metadata: Dict[str, Any] = Field(default_factory=dict, description="元数据")
|
||||
|
||||
|
||||
class SearchResponse(BaseModel):
|
||||
"""检索响应"""
|
||||
query: str = Field(..., description="查询文本")
|
||||
total: int = Field(..., description="结果总数")
|
||||
results: List[SearchResultItem] = Field(default_factory=list, description="结果列表")
|
||||
timestamp: datetime = Field(default_factory=datetime.now, description="时间戳")
|
||||
|
||||
|
||||
class DocumentStatusResponse(BaseModel):
|
||||
"""文档状态响应"""
|
||||
doc_id: str = Field(..., description="文档ID")
|
||||
status: str = Field(..., description="状态")
|
||||
num_chunks: Optional[int] = Field(None, description="分块数量")
|
||||
timestamp: datetime = Field(default_factory=datetime.now, description="时间戳")
|
||||
|
||||
|
||||
class ErrorResponse(BaseModel):
|
||||
"""错误响应"""
|
||||
error: str = Field(..., description="错误类型")
|
||||
message: str = Field(..., description="错误消息")
|
||||
timestamp: datetime = Field(default_factory=datetime.now, description="时间戳")
|
||||
Reference in New Issue
Block a user