{% extends "base.html" %} {% from "_macros.html" import icon %} {% from "_macros_ui.html" import empty_state, task_status_badge, task_status_text %} {% block title %}Планировщик — TG Agent{% endblock %} {% block content %}
Статус: {{ "Запущен" if is_running else "Остановлен" }}
Почему сейчас не собираем: веб-процесс принимает задачи и пишет их в БД, но Telegram-коннекты держит отдельный воркер-процесс — он сейчас не запущен (нет свежего heartbeat в runtime_snapshots). Задачи из collection_tasks копятся в статусе pending, но никто их не исполняет.
Как починить: запустите воркер во втором терминале — он подхватит все накопившиеся задачи автоматически:
python -m src.main worker
{% endif %}
{% if collector_health.flooded_accounts %}
Почему сейчас не собираем: доступных аккаунтов нет или их недостаточно. Flood Wait активен для:
{% for item in collector_health.flooded_accounts %}
{{ item.phone }}{% if not loop.last %}, {% endif %}
{% endfor %}
Что делать:
Последние причины недоступности:
| Вкл. | Джоб | Интервал | Следующий запуск |
|---|---|---|---|
| {{ j.label }} | {% if j.interval_editable and j.interval_minutes is not none %} {% elif j.interval_minutes %} {{ j.interval_minutes }} мин. {% else %} — {% endif %} | {% if j.next_run %} {{ j.next_run|local_dt("time") }} {% elif is_running and j.enabled %} — {% elif not j.enabled %} отключён {% else %} остановлен {% endif %} |
| Запрос | Аккаунт | Результатов | Дата |
|---|---|---|---|
| {{ entry.query }} | {{ entry.phone }} | {{ entry.results_count }} | {{ entry.created_at|local_dt }} |
Все задачи: сбор каналов, статистика, фото.
{% if tasks %}| Тип | Канал / Описание | Статус | {{ result_column_title }} | Создана | Завершена | Действие |
|---|---|---|---|---|---|---|
| {{ task_type_label(t) }} |
{{ t.channel_title or t.channel_id or '—' }}
{% if t.channel_username %}
@{{ t.channel_username }} {% endif %} |
{{ task_status_text(t) }} | {% set pipeline_meta = pipeline_result_meta.get(t.id) if pipeline_result_meta else None %} {% if t.task_type == 'stats_all' and t.payload and t.payload.channel_ids %} {{ t.messages_collected }}/{{ t.payload.channel_ids|length }} {% elif t.task_type.value == 'pipeline_run' and pipeline_meta %} {{ pipeline_meta.label }} {{ pipeline_meta.count }} {% if pipeline_meta.errors_count %} ⚠ {{ pipeline_meta.errors_count }} {% endif %} {% else %} {{ t.messages_collected }} {% endif %} | {{ t.created_at|local_dt }} | {{ t.completed_at|local_dt }} | {% if t.status == 'running' %} {% elif t.status == 'pending' %} {% endif %} |