3 Commits

Author SHA1 Message Date
db3788ac69 Merge branch 'fix-parser-7' into hotfix 2025-09-08 19:06:31 +03:00
31fad98133 Опер справку починил 2025-09-08 19:06:10 +03:00
88294de506 Merge branch 'fix-services' into hotfix 2025-09-08 18:44:52 +03:00

View File

@@ -41,20 +41,20 @@ def get_async_report_service() -> AsyncReportService:
500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"} 500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"}
},) },)
async def upload_oper_spravka_tech_pos( async def upload_oper_spravka_tech_pos(
file: UploadFile = File(..., description="Excel файл оперативной справки техпос (.xlsx, .xlsm, .xls)") file: UploadFile = File(..., description="ZIP архив с файлами оперативной справки техпос (.zip)")
): ):
"""Загрузка и обработка отчета оперативной справки техпос""" """Загрузка и обработка отчета оперативной справки техпос"""
report_service = get_report_service() report_service = get_report_service()
try: try:
if not file.filename.endswith(('.xlsx', '.xlsm', '.xls')): if not file.filename.endswith('.zip'):
return JSONResponse( return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
content=UploadErrorResponse( content=UploadErrorResponse(
message="Поддерживаются только Excel файлы (.xlsx, .xlsm, .xls)", message="Поддерживаются только ZIP архивы (.zip)",
error_code="INVALID_FILE_TYPE", error_code="INVALID_FILE_TYPE",
details={ details={
"expected_formats": [".xlsx", ".xlsm", ".xls"], "expected_formats": [".zip"],
"received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown" "received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown"
} }
).model_dump() ).model_dump()
@@ -115,9 +115,11 @@ async def get_oper_spravka_tech_pos_data(
result = report_service.get_data(request) result = report_service.get_data(request)
if result.success: if result.success:
# Извлекаем данные из result.data["value"]
data = result.data.get("value", []) if isinstance(result.data, dict) else result.data
return OperSpravkaTechPosResponse( return OperSpravkaTechPosResponse(
success=True, success=True,
data=result.data data=data
) )
else: else:
raise HTTPException(status_code=404, detail=result.message) raise HTTPException(status_code=404, detail=result.message)
@@ -136,20 +138,20 @@ async def get_oper_spravka_tech_pos_data(
500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"} 500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"}
},) },)
async def async_upload_oper_spravka_tech_pos( async def async_upload_oper_spravka_tech_pos(
file: UploadFile = File(..., description="Excel файл оперативной справки техпос (.xlsx, .xlsm, .xls)") file: UploadFile = File(..., description="ZIP архив с файлами оперативной справки техпос (.zip)")
): ):
"""Асинхронная загрузка и обработка отчета оперативной справки техпос""" """Асинхронная загрузка и обработка отчета оперативной справки техпос"""
async_service = get_async_report_service() async_service = get_async_report_service()
try: try:
if not file.filename.endswith(('.xlsx', '.xlsm', '.xls')): if not file.filename.endswith('.zip'):
return JSONResponse( return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
content=UploadErrorResponse( content=UploadErrorResponse(
message="Поддерживаются только Excel файлы (.xlsx, .xlsm, .xls)", message="Поддерживаются только ZIP архивы (.zip)",
error_code="INVALID_FILE_TYPE", error_code="INVALID_FILE_TYPE",
details={ details={
"expected_formats": [".xlsx", ".xlsm", ".xls"], "expected_formats": [".zip"],
"received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown" "received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown"
} }
).model_dump() ).model_dump()