File size: 2,433 Bytes
c2ea5ed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
Pydantic models for request and response validation
"""

from typing import Optional, List, Dict, Any, Union
from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum


class KnowledgeGraphResponse(BaseModel):
    """Response model for knowledge graphs"""
    files: List[str]


class PlatformStatsResponse(BaseModel):
    """Response model for platform statistics"""
    total_graphs: int
    total_entities: int
    total_relations: int
    entity_distribution: Dict[str, int]
    relation_distribution: Dict[str, int]
    recent_graphs: List[Dict[str, Any]]


# Context Document Models
class ContextDocumentType(str, Enum):
    """Enumeration of context document types."""
    DOMAIN_KNOWLEDGE = "domain_knowledge"
    SCHEMA = "schema"
    DOCUMENTATION = "documentation"
    GUIDELINES = "guidelines"
    EXAMPLES = "examples"


class ContextDocument(BaseModel):
    """Context document model."""
    id: str
    title: str = Field(..., max_length=200, description="Document title")
    document_type: ContextDocumentType
    content: str = Field(..., max_length=100000, description="Document content")
    file_name: Optional[str] = Field(None, description="Original file name if uploaded")
    created_at: datetime
    is_active: bool = Field(default=True, description="Whether document is active")


class CreateContextRequest(BaseModel):
    """Request model for creating context documents."""
    title: str = Field(..., max_length=200, description="Document title")
    document_type: ContextDocumentType
    content: str = Field(..., max_length=100000, description="Document content")
    file_name: Optional[str] = Field(None, description="Original file name if uploaded")


class UpdateContextRequest(BaseModel):
    """Request model for updating context documents."""
    title: Optional[str] = Field(None, max_length=200, description="Document title")
    document_type: Optional[ContextDocumentType] = None
    content: Optional[str] = Field(None, max_length=100000, description="Document content")
    is_active: Optional[bool] = None


class ContextDocumentResponse(BaseModel):
    """Response model for context document operations."""
    success: bool
    message: str
    data: Optional[ContextDocument] = None


class ContextStats(BaseModel):
    """Statistics for context documents."""
    total_count: int
    active_count: int
    by_type: Dict[ContextDocumentType, int]