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

BACH MAINTENANCE (Системные задания)
--------------------------

Обработчик обслуживания автоматически выполняет запланированные системные задания - например. резервные копии,
Проверка токенов, очистка данных или ваши собственные скрипты.

ОБРАБОТЧИК: system/hub/scheduler.py (ранее: daemon.py)
СЕРВИС: system/gui/daemon_service.py + DB (scheduler_jobs, Scheduler_runs)
Графический интерфейс пользователя: /daemon (http://localhost:8000/daemon)

Примечание: «bach daemon ...» и «bach Scheduler ...» являются псевдонимами.


КОМАНДЫ
-------

  bach daemon start          Запустить демон обслуживания на переднем плане (Ctrl+C завершен)
  bach daemon start --bg     Запустить демон обслуживания в фоновом режиме
  bach daemon stop           Остановить работающий демон
  bach daemon status         Показать статус и последние запуски
  bach daemon jobs           Все определенные Список заданий
  bach daemon run <ID>       Запустить задание вручную
  bach daemon logs [N]       Показать последнее N строки журнала (по умолчанию: 20)


КОМАНДЫ СЕССИИ (демон сеанса для автоматических сеансов Claude)
------------------------------------------------------------------

  bach daemon session start [--profile NAME]   Запустить демон сеанса
  bach daemon session stop                     Остановить демон сеанса
  bach daemon session status                   Показать статус сеанса
  bach daemon session trigger [--profile NAME] Session manuell ausloesen
  bach daemon session profiles                 Показать доступные профили


ТИПЫ ЗАДАНИЙ
---------

  интервал Периодический (например, «30 м», «1 ч», «24 ч»)
  cron Выражение Cron (например, «0 3 * * *» = ежедневно 03:00)
  руководство Может быть выполнено только вручную
  цепочка Выполнение цепочки (job.command = Chain_id)
  событие На основе событий (TODO)


ПРИМЕР ЗАДАНИЙ
-------------

  Имя Тип Расписание Описание
  ------------------------------------------------------------------
  резервное копирование-ежедневный интервал 24 часа Создать ежедневную резервную копию
  интервал проверки токена 30 м. Проверка потребления токена.
  cleanup cron 0 4 * * * Очистка старых журналов


СОЗДАНИЕ ЗАДАНИЙ
--------------

Через панель управления с графическим интерфейсом (http://localhost:8000/daemon):
  - Обслуживание > «Новое задание»

Через API:
  POST /api/daemon/jobs
  {
    "name": "моя работа",
    "job_type": "интервал",
    "расписание": "1 час",
    "команда": "инструменты Python/my_script.py"
  }


ФАЙЛЫ ЖУРНАЛА
-----------

  data/logs/daemon.log Действия по обслуживанию
  data/logs/session_daemon.log Действия сеанса
  data/daemon.pid PID-файл (если запущен)
  hub/_services/daemon/daemon.pid PID демона сеанса


ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ
------------------

- Задания загружаются из bach.db (таблица: Scheduler_jobs)
- Запуски, зарегистрированные в Scheduler_runs
- Настраиваемое время ожидания для каждого задания (по умолчанию: 300 с)
- Необязательная повторная попытка в случае ошибки (настраивается max_retries)
- Задания перезагружаются каждые 5 минут
- СОБСТВЕННЫЙ ПРОЦЕСС DAEMON (интервальный цикл Python)
- OneDrive приостанавливается во время работы демона (Windows).
- Предотвращает конфликты синхронизации во время файловых операций.
- Интеграция с повторяющимися задачами (проверка каждые 5 минут)

Необязательно: pip install croniter (для расширенных выражений cron)


ОПРЕДЕЛЕНИЕ: ТРИ СИСТЕМЫ ОБРАБОТЧИКОВ
--------------------------------

  ┌────────────────────────────────────────────────────────────────┐
  │ ОБСЛУЖИВАНИЕ │
  ├────────────────────────────────────────────────────────────────┤
  │ Выполняет команды оболочки/Python в выключенном состоянии │
  │ Управление по времени (хрон/интервал) │
  │ Без участия Клода │
  │ Обработчик: system/hub/daemon.py │
  │ Сервис: system/gui/daemon_service.py + DB │
  │ Графический интерфейс: /daemon (существующий) │
  │ Демон: ДА (собственный процесс) │
  └───────────────────────────────── ──────────────────────────────┘

  ┌────────────────────────────────────────────────────────────────┐
  │ ПОВТОРЯЮЩИЕСЯ │
  ├────────────────────────────────────────────────────────────────┤
  │ Создает ЗАДАЧИ в качестве напоминаний │
  │ Интервально (дни) │
  │ Для редактирования Клодом/Пользователем │
  │ Обработчик: system/hub/recurring.py │
  │ Сервис: system/hub/_services/recurring/ │
  │ Графический интерфейс: НЕТ (только CLI + интегрирован в /daemon) │
  │ Демон: НЕТ (проверять при вызове) │
  └──────────────────────────────── ────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
  │ ГЕНЕРАТОР ПОДСКАЗКИ │
  ├────────────────────────────────────────────────────────────────┤
  │ Отправляет запросы сеансам Клода │
  │ Ручной или автоматический │
  │ Система шаблонов с редактором │
  │ Обработчик: (в разработке) │
  │ Сервис: system/hub/_services/prompt_generator/ │
  │ Графический интерфейс: /prompt-generator (планируется) │
  │ Демон: ДА (session_daemon.py) │
  └───────────────────────────────── ──────────────────────────────┘

  Пример обслуживания: «Создание резервной копии Баха» каждый день в 3:00 ночи.
  Пример: «Срок самопроверки» -> Задача для Клода.
  Пример генератора подсказок: Отправка подсказки агенту ATI каждые 30 минут


СМОТРИТЕ ТАКЖЕ
----------

  bach gui start              Веб-панель с управлением заданиями
  bach --help backup          Система резервного копирования
  bach --help dirscan            Сканер каталогов
  bach --help recurring       Повторяющиеся задачи (без графического интерфейса пользователя)
  bach --help prompt-generator  Управление подсказками (графический интерфейс пользователя запланирован)
