init
This commit is contained in:
14
python_parser/app/schemas/__init__.py
Normal file
14
python_parser/app/schemas/__init__.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from .monitoring_fuel import MonitoringFuelMonthRequest, MonitoringFuelTotalRequest
|
||||
from .svodka_ca import SvodkaCARequest
|
||||
from .svodka_pm import SvodkaPMSingleOGRequest, SvodkaPMTotalOGsRequest
|
||||
from .server import ServerInfoResponse
|
||||
from .upload import UploadResponse, UploadErrorResponse
|
||||
|
||||
|
||||
__all__ = [
|
||||
'MonitoringFuelMonthRequest', 'MonitoringFuelTotalRequest',
|
||||
'SvodkaCARequest',
|
||||
'SvodkaPMSingleOGRequest', 'SvodkaPMTotalOGsRequest',
|
||||
'ServerInfoResponse',
|
||||
'UploadResponse', 'UploadErrorResponse'
|
||||
]
|
||||
34
python_parser/app/schemas/monitoring_fuel.py
Normal file
34
python_parser/app/schemas/monitoring_fuel.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List
|
||||
|
||||
|
||||
class MonitoringFuelMonthRequest(BaseModel):
|
||||
month: str = Field(
|
||||
...,
|
||||
description="Номер месяца строкой с ведущим 0",
|
||||
example="02",
|
||||
pattern="^(0[1-9]|1[0-2])$"
|
||||
)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"month": "02"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class MonitoringFuelTotalRequest(BaseModel):
|
||||
columns: List[str] = Field(
|
||||
...,
|
||||
description="Массив названий выбираемых столбцов",
|
||||
example=["total", "normativ"],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"columns": ["total", "normativ"]
|
||||
}
|
||||
}
|
||||
18
python_parser/app/schemas/server.py
Normal file
18
python_parser/app/schemas/server.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ServerInfoResponse(BaseModel):
|
||||
process_id: int = Field(..., description="Идентификатор текущего процесса сервера")
|
||||
parent_id: int = Field(..., description="Идентификатор родительского процесса")
|
||||
cpu_cores: int = Field(..., description="Количество ядер процессора в системе")
|
||||
memory_mb: float = Field(..., description="Общий объем оперативной памяти в мегабайтах")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"process_id": 12345,
|
||||
"parent_id": 6789,
|
||||
"cpu_cores": 8,
|
||||
"memory_mb": 16384.5
|
||||
}
|
||||
}
|
||||
33
python_parser/app/schemas/svodka_ca.py
Normal file
33
python_parser/app/schemas/svodka_ca.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class ReportMode(str, Enum):
|
||||
PLAN = "plan"
|
||||
FACT = "fact"
|
||||
NORMATIV = "normativ"
|
||||
|
||||
|
||||
class SvodkaCARequest(BaseModel):
|
||||
modes: List[ReportMode] = Field(
|
||||
...,
|
||||
description="Массив кодов режимов: plan, fact или normativ",
|
||||
example=["plan", "fact"],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
tables: List[str] = Field(
|
||||
...,
|
||||
description="Массив названий таблиц как есть",
|
||||
example=["ТиП, %", "Топливо итого, тонн", "Топливо итого, %", "Потери итого, тонн"],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"modes": ["plan", "fact"],
|
||||
"tables": ["ТиП, %", "Топливо итого, тонн", "Топливо итого, %", "Потери итого, тонн"]
|
||||
}
|
||||
}
|
||||
91
python_parser/app/schemas/svodka_pm.py
Normal file
91
python_parser/app/schemas/svodka_pm.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from pydantic import Field, BaseModel
|
||||
from typing import Optional, List
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class OGID(str, Enum):
|
||||
"""Доступные идентификаторы ОГ"""
|
||||
KNPZ = "KNPZ"
|
||||
ANHK = "ANHK"
|
||||
AchNPZ = "AchNPZ"
|
||||
BASH = "BASH"
|
||||
UNPZ = "UNPZ"
|
||||
UNH = "UNH"
|
||||
NOV = "NOV"
|
||||
NovKuybNPZ = "NovKuybNPZ"
|
||||
KuybNPZ = "KuybNPZ"
|
||||
CyzNPZ = "CyzNPZ"
|
||||
TuapsNPZ = "TuapsNPZ"
|
||||
SNPZ = "SNPZ"
|
||||
RNPK = "RNPK"
|
||||
NVNPO = "NVNPO"
|
||||
KLNPZ = "KLNPZ"
|
||||
PurNP = "PurNP"
|
||||
YANOS = "YANOS"
|
||||
|
||||
|
||||
class SvodkaPMSingleOGRequest(BaseModel):
|
||||
id: OGID = Field(
|
||||
...,
|
||||
description="Идентификатор МА для запрашиваемого ОГ",
|
||||
example="SNPZ"
|
||||
)
|
||||
|
||||
codes: List[int] = Field(
|
||||
...,
|
||||
description="Массив кодов выбираемых строк",
|
||||
example=[78, 79],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
columns: List[str] = Field(
|
||||
...,
|
||||
description="Массив названий выбираемых столбцов",
|
||||
example=["ПП", "СЭБ"],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
search: Optional[str] = Field(
|
||||
None,
|
||||
description="Опциональный параметр для фильтрации ('Итого' или null)",
|
||||
example="Итого"
|
||||
)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"id": "SNPZ",
|
||||
"codes": [78, 79],
|
||||
"columns": ["ПП", "СЭБ"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class SvodkaPMTotalOGsRequest(BaseModel):
|
||||
codes: List[int] = Field(
|
||||
...,
|
||||
description="Массив кодов выбираемых строк",
|
||||
example=[78, 79, 394, 395, 396, 397, 81, 82, 83, 84],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
columns: List[str] = Field(
|
||||
...,
|
||||
description="Массив названий выбираемых столбцов",
|
||||
example=["БП", "ПП", "СЭБ"],
|
||||
min_items=1
|
||||
)
|
||||
|
||||
search: Optional[str] = Field(
|
||||
None,
|
||||
description="Опциональный параметр для фильтрации ('Итого' или null)",
|
||||
example="Итого"
|
||||
)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"codes": [78, 79, 394, 395, 396, 397, 81, 82, 83, 84],
|
||||
"columns": ["БП", "ПП", "СЭБ"]
|
||||
}
|
||||
}
|
||||
44
python_parser/app/schemas/upload.py
Normal file
44
python_parser/app/schemas/upload.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional, Dict, Any
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class UploadStatus(str, Enum):
|
||||
SUCCESS = "success"
|
||||
PROCESSING = "processing"
|
||||
ERROR = "error"
|
||||
|
||||
|
||||
class UploadResponse(BaseModel):
|
||||
success: bool = Field(..., description="Успешность операции")
|
||||
message: str = Field(..., description="Сообщение о результате операции")
|
||||
object_id: Optional[str] = Field(None, description="Идентификатор загруженного объекта")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"success": True,
|
||||
"message": "Файл успешно загружен и обработан",
|
||||
"object_id": "65a1b2c3d4e5f6a7b8c9d0e1",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class UploadErrorResponse(BaseModel):
|
||||
success: bool = Field(False, description="Успешность операции")
|
||||
message: str = Field(..., description="Сообщение об ошибке")
|
||||
error_code: Optional[str] = Field(None, description="Код ошибки")
|
||||
details: Optional[Dict[str, Any]] = Field(None, description="Детали ошибки")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"success": False,
|
||||
"message": "Неверный формат файла",
|
||||
"error_code": "INVALID_FILE_FORMAT",
|
||||
"details": {
|
||||
"expected_formats": [".zip"],
|
||||
"received_format": ".rar"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user