Init project
This commit is contained in:
86
doc-service/app/models/document.py
Normal file
86
doc-service/app/models/document.py
Normal file
@@ -0,0 +1,86 @@
|
||||
from typing import Optional, Dict, Any, List
|
||||
from pydantic import BaseModel, Field
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
class DocumentType(str, Enum):
|
||||
"""Типы документов"""
|
||||
PDF = "pdf"
|
||||
EXCEL = "excel"
|
||||
WORD = "word"
|
||||
QR_CODE = "qr_code"
|
||||
|
||||
class DocumentStatus(str, Enum):
|
||||
"""Статусы документов"""
|
||||
PENDING = "pending"
|
||||
PROCESSING = "processing"
|
||||
COMPLETED = "completed"
|
||||
FAILED = "failed"
|
||||
|
||||
class QRCodeRequest(BaseModel):
|
||||
"""Запрос на генерацию QR-кода"""
|
||||
location_id: str = Field(..., description="ID места хранения")
|
||||
location_address: str = Field(..., description="Адрес места")
|
||||
organization_id: str = Field(..., description="ID организации")
|
||||
size: Optional[int] = Field(10, description="Размер QR-кода")
|
||||
border: Optional[int] = Field(2, description="Размер границы")
|
||||
|
||||
class QRCodeResponse(BaseModel):
|
||||
"""Ответ с QR-кодом"""
|
||||
document_id: str = Field(..., description="ID документа")
|
||||
qr_code_url: str = Field(..., description="URL для скачивания QR-кода")
|
||||
qr_code_data: str = Field(..., description="Данные QR-кода")
|
||||
expires_at: datetime = Field(..., description="Время истечения")
|
||||
|
||||
class ReportRequest(BaseModel):
|
||||
"""Запрос на генерацию отчета"""
|
||||
report_type: str = Field(..., description="Тип отчета")
|
||||
organization_id: str = Field(..., description="ID организации")
|
||||
filters: Optional[Dict[str, Any]] = Field({}, description="Фильтры для отчета")
|
||||
format: DocumentType = Field(DocumentType.PDF, description="Формат отчета")
|
||||
|
||||
class ReportResponse(BaseModel):
|
||||
"""Ответ с отчетом"""
|
||||
document_id: str = Field(..., description="ID документа")
|
||||
download_url: str = Field(..., description="URL для скачивания")
|
||||
file_size: int = Field(..., description="Размер файла в байтах")
|
||||
expires_at: datetime = Field(..., description="Время истечения")
|
||||
|
||||
class DocumentStatusResponse(BaseModel):
|
||||
"""Ответ со статусом документа"""
|
||||
document_id: str = Field(..., description="ID документа")
|
||||
status: DocumentStatus = Field(..., description="Статус документа")
|
||||
progress: Optional[int] = Field(None, description="Прогресс в процентах")
|
||||
error_message: Optional[str] = Field(None, description="Сообщение об ошибке")
|
||||
created_at: datetime = Field(..., description="Время создания")
|
||||
updated_at: datetime = Field(..., description="Время обновления")
|
||||
|
||||
class GeneratePDFRequest(BaseModel):
|
||||
"""Запрос на генерацию PDF"""
|
||||
template_name: str = Field(..., description="Название шаблона")
|
||||
data: Dict[str, Any] = Field(..., description="Данные для шаблона")
|
||||
filename: Optional[str] = Field(None, description="Имя файла")
|
||||
|
||||
class GenerateExcelRequest(BaseModel):
|
||||
"""Запрос на генерацию Excel"""
|
||||
data: List[Dict[str, Any]] = Field(..., description="Данные для таблицы")
|
||||
sheet_name: str = Field("Sheet1", description="Название листа")
|
||||
filename: Optional[str] = Field(None, description="Имя файла")
|
||||
|
||||
class TemplateInfo(BaseModel):
|
||||
"""Информация о шаблоне"""
|
||||
name: str = Field(..., description="Название шаблона")
|
||||
description: str = Field(..., description="Описание шаблона")
|
||||
variables: List[str] = Field(..., description="Переменные шаблона")
|
||||
created_at: datetime = Field(..., description="Время создания")
|
||||
updated_at: datetime = Field(..., description="Время обновления")
|
||||
|
||||
class DocumentInfo(BaseModel):
|
||||
"""Информация о документе"""
|
||||
id: str = Field(..., description="ID документа")
|
||||
type: DocumentType = Field(..., description="Тип документа")
|
||||
status: DocumentStatus = Field(..., description="Статус документа")
|
||||
filename: str = Field(..., description="Имя файла")
|
||||
file_size: int = Field(..., description="Размер файла")
|
||||
created_at: datetime = Field(..., description="Время создания")
|
||||
expires_at: datetime = Field(..., description="Время истечения")
|
||||
Reference in New Issue
Block a user