Первый коммит
This commit is contained in:
80
app/schemas/chat.py
Normal file
80
app/schemas/chat.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, Field, HttpUrl
|
||||
|
||||
from app.schemas.changeset import ChangeItem
|
||||
from app.schemas.common import ErrorPayload
|
||||
|
||||
|
||||
class AttachmentType(str, Enum):
|
||||
CONFLUENCE_URL = "confluence_url"
|
||||
|
||||
|
||||
class ChatMode(str, Enum):
|
||||
AUTO = "auto"
|
||||
PROJECT_QA = "project_qa"
|
||||
PROJECT_EDITS = "project_edits"
|
||||
DOCS_GENERATION = "docs_generation"
|
||||
# Legacy alias preserved for backward compatibility.
|
||||
CODE_CHANGE = "code_change"
|
||||
# Legacy alias preserved for backward compatibility.
|
||||
ANALYTICS_REVIEW = "analytics_review"
|
||||
QA = "qa"
|
||||
|
||||
|
||||
class Attachment(BaseModel):
|
||||
type: AttachmentType
|
||||
url: HttpUrl
|
||||
|
||||
|
||||
class ChatFileContext(BaseModel):
|
||||
path: str = Field(min_length=1)
|
||||
content: str
|
||||
content_hash: str = Field(min_length=1)
|
||||
|
||||
|
||||
class ChatMessageRequest(BaseModel):
|
||||
mode: ChatMode = ChatMode.AUTO
|
||||
dialog_session_id: str | None = Field(default=None, min_length=1)
|
||||
rag_session_id: str | None = Field(default=None, min_length=1)
|
||||
session_id: str | None = Field(default=None, min_length=1)
|
||||
project_id: str | None = Field(default=None, min_length=1)
|
||||
message: str = Field(min_length=1)
|
||||
attachments: list[Attachment] = Field(default_factory=list)
|
||||
files: list[ChatFileContext] = Field(default_factory=list)
|
||||
|
||||
|
||||
class TaskQueuedResponse(BaseModel):
|
||||
task_id: str
|
||||
status: str
|
||||
|
||||
|
||||
class TaskStatus(str, Enum):
|
||||
QUEUED = "queued"
|
||||
RUNNING = "running"
|
||||
DONE = "done"
|
||||
ERROR = "error"
|
||||
|
||||
|
||||
class TaskResultType(str, Enum):
|
||||
ANSWER = "answer"
|
||||
CHANGESET = "changeset"
|
||||
|
||||
|
||||
class TaskResultResponse(BaseModel):
|
||||
task_id: str
|
||||
status: TaskStatus
|
||||
result_type: Optional[TaskResultType] = None
|
||||
answer: Optional[str] = None
|
||||
changeset: list[ChangeItem] = Field(default_factory=list)
|
||||
error: Optional[ErrorPayload] = None
|
||||
|
||||
|
||||
class DialogCreateRequest(BaseModel):
|
||||
rag_session_id: str = Field(min_length=1)
|
||||
|
||||
|
||||
class DialogCreateResponse(BaseModel):
|
||||
dialog_session_id: str
|
||||
rag_session_id: str
|
||||
Reference in New Issue
Block a user