# Парсер Сводки ПМ

## Описание

Парсер для обработки сводок ПМ (план и факт) с поддержкой множественных геттеров. Наследуется от `ParserPort` и реализует архитектуру hexagonal architecture.

## Доступные геттеры

### 1. `get_single_og`
Получение данных по одному ОГ из сводки ПМ.

**Обязательные параметры:**
- `id` (str): ID ОГ (например, "SNPZ", "KNPZ")
- `codes` (list): Список кодов показателей (например, [78, 79, 81, 82])
- `columns` (list): Список столбцов для извлечения (например, ["ПП", "БП", "СЭБ"])

**Необязательные параметры:**
- `search` (str): Значение для поиска в столбцах

**Пример использования:**
```python
parser = SvodkaPMParser()
params = {
    "id": "SNPZ",
    "codes": [78, 79, 81, 82],
    "columns": ["ПП", "БП", "СЭБ"]
}
result = parser.get_value("get_single_og", params)
```

### 2. `get_total_ogs`
Получение данных по всем ОГ из сводки ПМ.

**Обязательные параметры:**
- `codes` (list): Список кодов показателей
- `columns` (list): Список столбцов для извлечения

**Необязательные параметры:**
- `search` (str): Значение для поиска в столбцах

**Пример использования:**
```python
parser = SvodkaPMParser()
params = {
    "codes": [78, 79, 81, 82],
    "columns": ["ПП", "БП", "СЭБ"]
}
result = parser.get_value("get_total_ogs", params)
```

## Поддерживаемые столбцы

- **ПП, БП**: Данные из файлов плана
- **ТБ, СЭБ, НЭБ**: Данные из файлов факта

## Структура файлов

Парсер ожидает следующую структуру файлов:
- `data/pm_fact/svodka_fact_pm_{OG_ID}.xlsx` или `.xlsm`
- `data/pm_plan/svodka_plan_pm_{OG_ID}.xlsx` или `.xlsm`

Где `{OG_ID}` - это ID ОГ (например, SNPZ, KNPZ и т.д.)

## Формат результата

Результат возвращается в формате JSON со следующей структурой:
```json
{
  "ПП": {
    "78": 123.45,
    "79": 234.56
  },
  "БП": {
    "78": 111.11,
    "79": 222.22
  },
  "СЭБ": {
    "78": 333.33,
    "79": 444.44
  }
}
```

## Обработка ошибок

- Если файл плана/факта не найден, соответствующие столбцы будут пустыми
- Если код показателя не найден, возвращается 0
- Валидация параметров выполняется автоматически