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()