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

НАЗВАНИЕ ОБРАБОТЧИКА
-----------------------------------------------------------------------------
Инжектор напоминаний (SQ040) — вводит воспоминания в подсказки LLM

ОПИСАНИЕ
-----------------------------------------------------------------------------
Инжектор напоминаний управляет и вводит воспоминания в подсказки LLM
перед каждым звонком. Напоминания активируются в зависимости от условий срабатывания.
выборочно вставляется в блок [BACH-REMINDERS]. Реализация
поддерживает резервное хранилище БД и JSON.

Поддерживаемые условия триггера:
  - всегда: всегда активен (без условий)
  - on_task: только когда задача запущена
  - time_based: только в определенном временном окне (ЧЧ:ММ-ЧЧ:ММ)
  - ключевое слово_match: только если ключевое слово встречается во вводе пользователя

ОПЕРАЦИИ
-----------------------------------------------------------------------------
list_reminders(active_only=True)
  Возвращает все активные напоминания (или все) в виде списка[dict].

add_reminder(message, триггер_условие="всегда", триггер_значение=Нет,
             приоритет=5)
  Создайте новое напоминание. Значения триггера в зависимости от состояния:
    - всегда: значение триггера игнорируется
    - on_task: значение триггера игнорируется
    - time_based: «ЧЧ:ММ-ЧЧ:ММ» (например, «09:00-17:00»)
    - ключевое слово_match: «ключевое слово1, ключевое слово2, ...» (через запятую)
  Приоритет: низкие значения = более важный (0 = наивысший приоритет).

update_reminder(reminder_id, **kwargs)
  Напоминание об обновлении. Разрешенные поля: сообщение, триггер_условие,
  значение триггера, активно, приоритет. Возвращает True в случае успеха.

delete_reminder(reminder_id)
  Удалить напоминание (тогда оно будет проигнорировано list_reminders).
  Возвращает True в случае успеха.

get_active_reminders(context)
  Возвращает список текстов напоминаний, связанных с текущим контекстом.
  подходит. Context-Dict может содержать: active_task, user_input.

inject(prompt, context)
  Добавляет активные напоминания перед приглашением. Возврат:
    [НАПОМИНАНИЯ БАХА]
      1. <Напоминание с наивысшим приоритетом>
      2. <Следующее напоминание>
    [/НАПОМИНАНИЯ БАХА]
    <Исходная подсказка>

ПРИМЕРЫ
-----------------------------------------------------------------------------
# Создание напоминаний для активных задач
inj = ReminderInjector(Путь("система"), db=Нет)
inj.add_reminder("Использовать режим фокусировки для длительных задач.",
                 триггер_условие="on_task", приоритет=1)

# Напоминание по времени (9:00–17:00)
inj.add_reminder("Гарантирует выполнение резервного копирования.",
                 триггер_условие="на основе времени",
                 триггер_value="09:00-17:00", Priority=3)

# Напоминание на основе ключевых слов
inj.add_reminder("Использовать BACH API, а не прямой доступ к БД!",
                 триггер_условие="соответствие_ключевого слова",
                 триггер_value="database, db, sql", Priority=2)

# Вставить напоминание в приглашение
context = {"active_task": "исследование", "user_input": "запрос к базе данных"}
Modified_prompt = inj.inject("Как работает XYZ?", контекст)

ФАЙЛЫ
-----------------------------------------------------------------------------
hub/reminder_injector.py Основная реализация
data/reminders.json Резервный вариант JSON (случай ошибки БД)
docs/help/reminder_injector.txt Этот файл справки

СМОТРИ ТАКЖЕ
-----------------------------------------------------------------------------
task_manager.py — управление задачами (контекст для триггера on_task)
bach_api.py — API перекрестного концентратора
