diff --git a/python_parser/core/services.py b/python_parser/core/services.py index 0d3f791..16e7da0 100644 --- a/python_parser/core/services.py +++ b/python_parser/core/services.py @@ -99,9 +99,35 @@ class ReportService: # Получаем парсер parser = get_parser(request.report_type) + + # Устанавливаем DataFrame в парсер для использования в геттерах + parser.df = df - # Получаем значение - value = parser.get_value(df, request.get_params) + # Получаем параметры запроса + get_params = request.get_params or {} + + # Определяем имя геттера (по умолчанию используем первый доступный) + getter_name = get_params.pop("getter", None) + if not getter_name: + # Если геттер не указан, берем первый доступный + available_getters = list(parser.getters.keys()) + if available_getters: + getter_name = available_getters[0] + print(f"⚠️ Геттер не указан, используем первый доступный: {getter_name}") + else: + return DataResult( + success=False, + message="Парсер не имеет доступных геттеров" + ) + + # Получаем значение через указанный геттер + try: + value = parser.get_value(getter_name, get_params) + except ValueError as e: + return DataResult( + success=False, + message=f"Ошибка параметров: {str(e)}" + ) # Формируем результат if value is not None: