# 🕐 Интеллектуальная Cron-система Интеллектуальная система планирования задач для Telegram CLI Bot. ## 📋 Особенности В отличие от классического cron, задачи выполняются не как команды, а как **промпты для ИИ-агента**. ### Структура задачи ```python CronJob: - id: int # Уникальный ID - name: str # Название задачи - prompt: str # Промпт для ИИ-агента - schedule: str # Расписание (@hourly, @daily, */5 * * * *) - user_id: int # ID пользователя Telegram - enabled: bool # Включена ли задача - notify: bool # Уведомлять пользователя в Telegram - log_results: bool # Сохранять результат в лог-файл - last_run: datetime # Последнее выполнение - next_run: datetime # Следующее выполнение - created_at: datetime # Дата создания ``` ## 🔄 Процесс выполнения ``` ┌─────────────────────────────────────────────────────────┐ │ Cron Scheduler (проверяет каждую минуту) │ │ ↓ (если время пришло) │ │ Отправляет промпт ИИ-агенту │ │ ↓ │ │ ИИ-агент (Рик) анализирует промпт: │ │ - Решает какой инструмент использовать │ │ - Выполняет инструмент (поиск, SSH, RSS) │ │ ↓ │ │ Если notify=True → отправка уведомления в Telegram │ │ Если log_results=True → сохранение в лог-файл │ └─────────────────────────────────────────────────────────┘ ``` ## 📝 Команды управления ### `/cron list` - Показать все задачи ``` /cron list ``` **Пример вывода:** ``` ⏰ Ваши задачи: ✅ Проверка диска (ID: 1) 🔔📝 Промпт: Проверить свободное место на сервере... Расписание: @daily Следующий запуск: 2026-02-26 00:00:00 Последний запуск: 2026-02-25 00:00:00 ``` ### `/cron add` - Добавить задачу ``` /cron add ``` **Параметры:** - `name` - название задачи - `schedule` - расписание: - `@hourly` - каждый час - `@daily` - каждый день - `@weekly` - каждую неделю - `*/5 * * * *` - каждые 5 минут (cron format) - `prompt` - промпт для ИИ-агента **Примеры:** ```bash # Ежедневная проверка диска /cron add check_disk @daily Проверить свободное место на сервере home # Ежечасные новости /cron add tech_news @hourly Что нового в Linux сегодня # Каждые 5 минут мониторинг /cron add monitor */5 * * * * Проверить нагрузку на сервер ``` ### `/cron run` - Выполнить задачу немедленно ``` /cron run ``` **Пример:** ``` /cron run 1 ``` ### `/cron remove` - Удалить задачу ``` /cron remove ``` ### `/cron toggle` - Включить/выключить задачу ``` /cron toggle ``` ## 🛠️ Инструменты ИИ-агента При выполнении задачи ИИ-агент может использовать: | Инструмент | Назначение | Триггеры | |------------|------------|----------| | `ddgs_tool` | Поиск в интернете | "найди", "поиск", "узнай" | | `rss_tool` | Чтение RSS лент | "новости", "почитай", "лента" | | `ssh_tool` | SSH-команды | "проверь сервер", "выполни команду" | | `cron_tool` | Управление задачами | "напомни", "запланируй" | ## 📂 Логирование Результаты выполнения задач сохраняются в: ``` cron_logs/ cron_job_1_check_disk.log cron_job_2_tech_news.log ... ``` **Формат лога:** ``` ============================================================ [2026-02-25 10:30:00] Задача: Проверка диска (ID: 1) ============================================================ Промпт: Проверить свободное место на сервере home Результат: Задача 'Проверка диска' выполнена. Использован инструмент: ssh_tool Результат: Filesystem Size Used Avail Use% Mounted on ... ``` ## 🔔 Уведомления Если `notify=True`, бот отправляет уведомление в Telegram: ``` ✅ Задача 'Проверка диска' выполнена. Использован инструмент: ssh_tool Результат: Свободно 45GB на /dev/sda1 ``` ## 💡 Примеры использования ### 1. Ежедневный мониторинг диска ```bash /cron add disk_daily @daily Проверить свободное место на сервере home. Если меньше 10GB - предупредить ``` ### 2. Ежечасные новости IT ```bash /cron add it_news @hourly Найти свежие новости про Python и Linux за последний час ``` ### 3. Мониторинг нагрузки каждые 5 минут ```bash /cron add load_monitor */5 * * * * Проверить нагрузку CPU и RAM на сервере ``` ### 4. Еженедельный поиск уязвимостей ```bash /cron add security_scan @weekly Найти информацию о новых уязвимостях в Linux за неделю ``` ## 🚀 Архитектура ``` bot/ tools/ cron_tool.py # Инструмент управления задачами services/ cron_scheduler.py # Планировщик (проверка каждую минуту) handlers/ commands.py # Обработчик команды /cron ``` ## ⚙️ Технические детали - **Проверка задач:** каждую минуту (60 секунд) - **Хранение:** SQLite (`cron.db`) - **Логи:** текстовые файлы (`cron_logs/`) - **Формат расписания:** cron format или специальные (@hourly, @daily, @weekly) ## 🎯 Отличия от классического cron | Классический cron | Интеллектуальный cron | |-------------------|----------------------| | Выполняет команды | Выполняет промпты для ИИ | | Жёсткая логика | Гибкое решение через ИИ | | Вывод в stdout/email | Уведомления в Telegram + логи | | Нет контекста | ИИ использует контекст и память | --- *Версия: 0.5.3* *Интеллектуальная cron-система с AI-агентом*