From 31fad9813357cc8222fa770af7a119f09551ca49 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 8 Sep 2025 19:06:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B5=D1=80=20=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D1=83=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/endpoints/oper_spravka_tech_pos.py | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/python_parser/app/endpoints/oper_spravka_tech_pos.py b/python_parser/app/endpoints/oper_spravka_tech_pos.py index 2c4543a..e5fbc10 100644 --- a/python_parser/app/endpoints/oper_spravka_tech_pos.py +++ b/python_parser/app/endpoints/oper_spravka_tech_pos.py @@ -41,20 +41,20 @@ def get_async_report_service() -> AsyncReportService: 500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"} },) 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() try: - if not file.filename.endswith(('.xlsx', '.xlsm', '.xls')): + if not file.filename.endswith('.zip'): return JSONResponse( status_code=status.HTTP_400_BAD_REQUEST, content=UploadErrorResponse( - message="Поддерживаются только Excel файлы (.xlsx, .xlsm, .xls)", + message="Поддерживаются только ZIP архивы (.zip)", error_code="INVALID_FILE_TYPE", details={ - "expected_formats": [".xlsx", ".xlsm", ".xls"], + "expected_formats": [".zip"], "received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown" } ).model_dump() @@ -115,9 +115,11 @@ async def get_oper_spravka_tech_pos_data( result = report_service.get_data(request) if result.success: + # Извлекаем данные из result.data["value"] + data = result.data.get("value", []) if isinstance(result.data, dict) else result.data return OperSpravkaTechPosResponse( success=True, - data=result.data + data=data ) else: raise HTTPException(status_code=404, detail=result.message) @@ -136,20 +138,20 @@ async def get_oper_spravka_tech_pos_data( 500: {"model": UploadErrorResponse, "description": "Внутренняя ошибка сервера"} },) 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() try: - if not file.filename.endswith(('.xlsx', '.xlsm', '.xls')): + if not file.filename.endswith('.zip'): return JSONResponse( status_code=status.HTTP_400_BAD_REQUEST, content=UploadErrorResponse( - message="Поддерживаются только Excel файлы (.xlsx, .xlsm, .xls)", + message="Поддерживаются только ZIP архивы (.zip)", error_code="INVALID_FILE_TYPE", details={ - "expected_formats": [".xlsx", ".xlsm", ".xls"], + "expected_formats": [".zip"], "received_format": file.filename.split('.')[-1] if '.' in file.filename else "unknown" } ).model_dump()