File size: 3,390 Bytes
e83f5e9
 
 
 
 
 
 
 
 
c8b8c9b
e83f5e9
 
c8b8c9b
 
 
 
e83f5e9
c8b8c9b
 
 
 
e83f5e9
 
 
 
 
 
 
c8b8c9b
 
e83f5e9
 
 
 
 
 
 
 
c8b8c9b
e83f5e9
 
c8b8c9b
 
 
 
 
 
 
 
 
e83f5e9
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any

class PDFUploadRequest(BaseModel):
    """Request model cho upload PDF"""
    namespace: Optional[str] = Field("Default", description="Namespace trong Pinecone")
    index_name: Optional[str] = Field("testbot768", description="Tên index trong Pinecone")
    title: Optional[str] = Field(None, description="Tiêu đề của tài liệu")
    description: Optional[str] = Field(None, description="Mô tả về tài liệu")
    vector_database_id: Optional[int] = Field(None, description="ID của vector database trong PostgreSQL để sử dụng")

class PDFResponse(BaseModel):
    """Response model cho các endpoints liên quan đến PDF."""
    success: bool = Field(False, description="Kết quả xử lý: true/false")
    document_id: Optional[str] = Field(None, description="ID của tài liệu đã xử lý")
    document_database_id: Optional[int] = Field(None, description="ID của tài liệu trong PostgreSQL (nếu có)")
    chunks_processed: Optional[int] = Field(None, description="Số lượng chunks đã xử lý")
    total_text_length: Optional[int] = Field(None, description="Tổng kích thước text đã xử lý")
    error: Optional[str] = Field(None, description="Thông báo lỗi (nếu có)")
    warning: Optional[str] = Field(None, description="Cảnh báo (nếu có)")
    message: Optional[str] = Field(None, description="Thông báo thành công")
    
    class Config:
        schema_extra = {
            "example": {
                "success": True,
                "document_id": "550e8400-e29b-41d4-a716-446655440000",
                "chunks_processed": 25,
                "total_text_length": 50000,
                "message": "Successfully processed document"
            }
        }

class DeleteDocumentRequest(BaseModel):
    """Request model cho xóa document"""
    document_id: str = Field(..., description="ID của tài liệu cần xóa")
    namespace: Optional[str] = Field("Default", description="Namespace trong Pinecone")
    index_name: Optional[str] = Field("testbot768", description="Tên index trong Pinecone")
    vector_database_id: Optional[int] = Field(None, description="ID của vector database trong PostgreSQL")

class DocumentsListResponse(BaseModel):
    """Response model cho danh sách documents"""
    success: bool = Field(False, description="Kết quả xử lý: true/false")
    total_vectors: Optional[int] = Field(None, description="Tổng số vectors trong namespace")
    namespace: Optional[str] = Field(None, description="Namespace đã truy vấn")
    index_name: Optional[str] = Field(None, description="Tên index đã truy vấn")
    documents: Optional[List[Dict[str, Any]]] = Field(None, description="Danh sách documents")
    postgresql_documents: Optional[List[Dict[str, Any]]] = Field(None, description="Danh sách documents từ PostgreSQL")
    postgresql_document_count: Optional[int] = Field(None, description="Số lượng documents từ PostgreSQL")
    error: Optional[str] = Field(None, description="Thông báo lỗi (nếu có)")
    
    class Config:
        schema_extra = {
            "example": {
                "success": True,
                "total_vectors": 5000,
                "namespace": "Default",
                "index_name": "testbot768"
            }
        }