# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

СТРАТЕГИИ
----------
Основные стратегии действий для решения проблем и автоматизации.

Ссылка: docs/help/operators.txt, docs/help/denkstrategie.txt


1. КАТЕГОРИЗАЦИЯ
-----------------
Стратегия: правила, эвристики или модели распределяют данные по классам.
Операторы: Извлечь -> Нормализовать -> Классифицировать -> Проверить

Пример (Python):
``` питон
защита classify_doc(док):
    текст = документ["текст"].lower()
    если в тексте «счет-фактура»:
        вернуть «счет»
    если в тексте «контракт»:
        вернуть «контракт»
    вернуть «другое»
```


2. ОЦЕНКА (оценка)
---------------------
Стратегия: Определите критерии, взвесьте их, подсчитайте балл.
Основа для ранжирования, автоматизация, проверка человеком.

Пример (Python):
``` питон
Защиту Score_invoice (почта):
    оценка = 0
    если "счет" в mail["subject"].lower():
        оценка += 0,5
    если есть(a.endswith(".pdf") для почты["attachments"]):
        оценка += 0,3
    если "iban" в mail["body"].lower():
        оценка += 0,2
    возвратный счет
```


3. ИСКЛЮЧИТЬ
----------------
Стратегия: Определить отрицательные критерии (черные списки, закономерности, ограничения).
Раннее «отключение» снижает шум.

Пример (JavaScript):
```Javascript
функция isExcluded (почта) {
  const blacklist = ["noreply@", "newsletter@"];
  return blacklist.some(b => mail.from.includes(b));
}

const соответствующий = mails.filter(m => !isExcluded(m));
```


4. ТЕСТИРОВАНИЕ (Проверка)
----------------------
Стратегия: проверка данных на соответствие правилам, схемам, справочным источникам.
Варианты: тесты схемы, бизнес-правила, сравнение A/B, проверка между исходными кодами.

Пример — тест схемы (Python):
``` питон
защита validate_invoice(d):
    тесты = [
        («сумма», лямбда x: x не равен None и x > 0),
        («номер_счета», лямбда x: bool(x)),
        («дата», лямбда x: x не равен None),
    ]
    ошибки = []
    для поля, правило в тестах:
        если не правило(d.get(поле)):
            error.append(поле)
    ошибки возврата
```

Пример – A/B-тест (Python):
``` питон
защита classify_A(док): ...
def classify_B(doc): ...

resA = classify_A(doc)
resB = classify_B(doc)

if resA != resB:
    # Отметить конфликт, записать в журнал для анализа
    пройти
```


5. ОПРЕДЕЛИТЬ ПРОБЛЕМЫ
----------------------
Стратегия: проблема как входные данные -> желаемый результат -> сформулировать ограничения.
В коде: понятные интерфейсы, ожидаемые инварианты, классы ошибок.

Пример формулировки:
  Проблема: «Входящие электронные письма должны автоматически отправляться в виде счета-фактуры.
           контракт или что-то еще».
  Входные данные: электронная почта (тема, текст, вложения, метаданные).
  Вывод: Категория + Оценка + выдержки, если необходимо.
  Ограничения: отсутствие ложных срабатываний для счетов на сумму более X евро,
               Пороги оценок, протоколирование


6. СТРАТЕГИИ РЕШЕНИЯ ПРОБЛЕМ
--------------------------
Общий шаблон для принятия стратегических решений.

```python
Защиту решить_проблему (входные_данные, стратегии):
    """
    стратегии: Список стратегий с:
      - имя
      - условие (входные_данные) -> логическое значение
      - действие (входные_данные) -> результат
    """
    для s в стратегиях:
        если s["условие"](входные_данные):
            вернуть {
                "стратегия": s["имя"],
                «результат»: s[»действие»](входные_данные)
            }
    вернуть {
        «стратегия»: Нет,
        «результат»: нет
    }
```

Примеры стратегий (основанные на доверии):
``` питон
стратегии = [
    {
        "name": "high_confidence_auto",
        "условие": лямбда d: d["score"] >= 0,9,
        "действие": лямбда d: {"режим": "авто", "маршрут": "учет"}
    },
    {
        "name": "medium_confidence_review",
        «условие»: лямбда d: 0,6 <= d["score"] <0,9,
        "действие": лямбда d: {"режим": "обзор", "маршрут": "inbox_review"}
    },
    {
        "name": "low_confidence_ignore",
        "условие": лямбда d: d["score"] <0,6,
        "действие": лямбда d: {"режим": "игнорировать", "маршрут": нет}
    },
]
```


ССЫЛКА НА БАХА
-------------
Эти стратегии являются основой для:
  - Инжекторы (контекстные решения) - system/tools/injectors.py
  - Консолидация памяти (вывод урока) - system/hub/consolidation.py
  - Маршрутизация рабочего процесса (навыки и услуги)
  - Обработка документов (OCR, классификация)

Стратегии + операторы = повторно используемые модули решений


СВЯЗАННЫЕ ФАЙЛЫ ПОМОЩИ
----------------------
  --help операторы Основные операторы и шаблоны
  --help стратегии мышления Когнитивные стратегии
  --help rhetoric Риторические операторы
