Руководство админ интерфейса
Доступ к Менеджеру sTask
После установки, получите доступ к админ интерфейсу sTask через:
Менеджер → Инструменты → Менеджер Задач
Интерфейс состоит из трех основных разделов:
- Панель - Обзор задач и статистики
- Воркеры - Управление воркерами и обнаружение
- Статистика - Детальная аналитика и отчеты
Вкладка Панель

Виджеты обзора
Панель отображает пять ключевых метрик:
- Ожидающие задачи - Задачи ожидающие выполнения
- Выполняющиеся задачи - Задачи обрабатываемые сейчас
- Завершенные задачи - Успешно завершенные задачи
- Неудачные задачи - Задачи с ошибками
- Всего задач - Все задачи в системе
Таблица последних задач
Показывает 10 самых свежих задач с:
- ID задачи - Уникальный идентификатор
- Воркер - Идентификатор и scope воркера
- Действие - Выполняемое действие
- Статус - Текущий статус с цветовым кодированием
- Синий - Ожидает
- Желтый - Выполняется
- Зеленый - Завершено
- Красный - Неудачно
- Серый - Отменено
- Прогресс - Визуальная шкала прогресса (0-100%)
- Создано - Временная метка создания
- Действия - Кнопки быстрых действий
Действия панели
Кнопка Обработать Задачи:
- Обрабатывает все ожидающие задачи немедленно
- Показывает уведомление с количеством обработанных задач
- Обновляет страницу после завершения
Кнопка Очистить Старые Задачи:
- Удаляет завершенные задачи старше 30 дней
- Очищает файлы логов старше 30 дней
- Показывает уведомление с результатами очистки
Вкладка Воркеры

Список воркеров
Отображает всех зарегистрированных воркеров с:
- Иконка - Визуальный идентификатор воркера
- Идентификатор - Уникальный ID воркера
- Название - Понятное название
- Scope - Модуль/пакет к которому принадлежит воркер
- Описание - Детальное описание функциональности воркера
- Статус - Индикатор Активный/Неактивный
- Количество задач - Количество задач созданных этим воркером
- Действия - Переключатель Активировать/Деактивировать
Действия управления воркерами
Кнопка Найти Воркеры:
- Сканирует все установленные Composer пакеты
- Находит классы реализующие
TaskInterface - Регистрирует новые воркеры автоматически
- Показывает уведомление с результатами обнаружения
Кнопка Пересканировать Воркеры:
- Обновляет метаданные для существующих воркеров
- Полезно после обновлений кода воркеров
- Показывает уведомление с количеством обновленных
Кнопка Очистить Orphaned:
- Удаляет воркеры, классы которых больше не существуют
- Полезно после удаления пакетов
- Показывает уведомление с количеством удаленных
Статус воркера
Активные воркеры (Зеленые):
- Доступны для создания задач
- Будут обрабатывать назначенные задачи
- Видимы в выборе воркеров
Неактивные воркеры (Серые):
- Недоступны для новых задач
- Существующие задачи могут завершиться
- Скрыты в выборе воркеров
Активация/деактивация воркеров
Нажмите кнопку переключателя рядом с воркером чтобы:
- Активировать - Включить воркер для создания задач
- Деактивировать - Временно отключить воркер
Настройки воркеров
Каждый воркер может иметь свою конфигурацию, доступную через страницу настроек. Нажмите на воркер для доступа:
Настройки расписания (для автоматизированных воркеров):
- По требованию - Только ручное выполнение (без автоматического запуска)
- Один раз - Выполнить один раз в указанную дату и время
- Периодически - Выполнять периодически (ежечасно/ежедневно/еженедельно) в указанное время
- Регулярно - Выполнять регулярно в временном периоде (например, ежечасно с 5:00 до 23:00)
Кастомные настройки (специфичные для воркера):
- API endpoints
- Данные аутентификации
- Пар аметры обработки
- Другие специфичные параметры
Пример конфигурации:
Для воркера синхронизации с 1С:
- Тип расписания: Регулярно
- Временной период: 05:00 - 23:00
- Интервал: Ежечасно
- Endpoint:
https://api.1c.com/categories
Настройки сохраняются в таблице s_workers как JSON и сохраняются между сессиями.
Создание задач
Из админ интерфейса
В настоящее время задачи создаются программно. Будущие версии будут включать форму создания задач в админ интерфейсе.
Из кода
use Seiger\sTask\Facades\sTask;
$task = sTask::create(
identifier: 'product',
action: 'import',
data: ['file' => 'products.csv'],
priority: 'high',
userId: evo()->getLoginUserID()
);
Мониторинг выполнения задач
Прогресс в реальном времени
Прогресс задачи отслеживается в реальном времени через:
- Шкала прогресса - Визуальный индикатор (0-100%)
- Обновления статуса - Бейджи статуса с цветовым кодированием
- Обновления сообщений - Описание текущей операции
Детали задачи
Нажмите на задачу чтобы просмотреть:
- Полные логи выполнения
- Историю прогресса
- Сообщения об ошибках
- Метаданные задачи
- Файлы результатов
Система отслеживания прогресса
sTask использует файловую систему отслеживания прогресса:
Формат хранения:
- Расположение:
storage/stask/{task_id}.log - Формат: Структурированные значения разделенные вертикальной чертой
- Структура:
status|progress|processed|total|eta|message
Пример записи лога:
running|45|150|325|2m 15s|Обработка товаров...
completed|100|325|325|0s|**Задача выполнена успешно (5.2s)**
Преимущества:
- Только добавление - Нет конфликтов блокировки файлов
- Полная история - Полный лог выполнения задачи
- Быстрое чтение - Последняя строка для текущего состояния
- Реальное время - Обновления видны мгновенно
Просмотр логов
Каждая задача поддерживает пол ный лог выполнения:
- Обновления прогресса - Все изменения статуса
- Сообщения обработки - Пошаговое выполнение
- Сообщения об ошибках - Детальная информация об ошибках
- Данные тайминга - Процент прогресса, ETA, длительность
Отображение в реальном времени:
- Шкала прогресса обновляется динамически
- Сообщения лога появляются постепенно (как в чате)
- Не требуется обновление страницы
- Адаптивный опрос (25мс-25с в зависимости от активности)
Загрузка логов
Логи задач доступны для загрузки:
- Полная история выполнения
- Структурированный формат для парсинга
- Полезно для отладки
- Можно анализировать стандартными инструментами
Действия с задачами
Выполнить задачу
Вручную запустить выполнение задачи:
- Нажмите кнопку Выполнить
- Статус задачи меняется на "выполняется"
- Прогресс обновляется в реальном времени
- Показывается уведомление о завершении
Отменить задачу
Остановить выполняющуюся или ожидающую задачу:
- Нажмите кнопку Отменить
- Статус задачи меняется на "отменено"
- Задача не будет обработана
- Можно перезапустить позже
Повторить задачу
Повторить неудачную задачу:
- Нажмите кнопку Повторить
- Статус задачи сбрасывается на "ожидает"
- Будет обработана в следующем пакете
- Счетчик попыток увеличивается
Просмотреть детали
Открыть детальный просмотр задачи:
- Нажмите кнопку Детали или строку задачи
- Показывает полную информацию о задаче
- Отображает логи выполнения
- Показывает историю прогресса
Вкладка Статистика
Статистика обзора
Комплексные метрики включая:
- Всего задач - Вс е задачи в системе
- Уровень успешности - Процент завершенных задач
- Уровень неудач - Процент неудачных задач
- Средняя длительность - Среднее время выполнения задачи
- Задачи по статусу - Диаграмма распределения
Статистика воркеров
Метрики по воркерам:
- Созданные задачи - Всего задач для каждого воркера
- Соотношение успех/неудача - Надежность воркера
- Среднее время выполнения - Метрики производительности
- Последнее выполнение - Самая свежая задача
Статистика по времени
Активность задач во времени:
- Сегодня - Задачи созданные/завершенные сегодня
- На этой неделе - Недельная активность
- В этом месяце - Месячная активность
- Собственный диапазон - Выбрать диапазон дат
Лучшие практики
Управление задачами
-
Регулярно очищайте старые задачи
- Используйте кнопку "Очистить Старые Задачи"
- Или планируйте автоматическую очистку
- Предотвращает раздувание базы данных
-
Мониторьте неудачные задачи
- Проверяйте неудачные задачи ежедневно
- Исследуйте паттерны ошибок
- Исправляйте основные проблемы
-
Используйте соответствующие приоритеты
high- Критичные операцииnormal- Стандартные задачиlow- Фоновые операции
Управление воркерами
-
Активируйте только нужные воркеры
- Деактивируйте неиспользуемые воркеры
- Уменьшает беспорядок
- Улучшает производительность
-
Регулярное обнаружение воркеров
- Запускайте после обновлений пакетов
- Гарантирует регистрацию новых воркеров
- Обновляет метаданные воркеров
-
Очищайте orphaned воркеры
- Запускайте после удаления пакетов
- Предотвращает беспорядок в базе данных
- Поддерживает чистоту системы
Оптимизация производительности
-
Пакетная обработка
- Обрабатывайте задачи пакетами
- Используйте соответствующие размеры пакетов
- Балансируйте производительность и ресурсы
-
Обновления прогресса
- Обновляйте прогресс периодически (не каждый элемент)
- Уменьшает накладные расходы файлового I/O
- Улучшает общую производительность
-
Управление логами
- Регулярно очищайте старые логи
- Используйте соответствующие уровни логов
- Избегайте чрезмерного логирования
Горячие клавиши
| Комбинация | Действие |
|---|---|
R | Обновить текущий вид |
D | Перейти к Панели |
W | Перейти к Воркерам |
S | Перейти к Статистике |
? | Показать помощь |
Решение проблем
Задачи застряли в статусе "Выполняется"
Если задача застряла в статусе выполнения:
- Проверьте не сломался ли процесс воркера
- Просмотрите логи задачи на ошибки
- Вручную отмените задачу
- Перезапустите task worker
// Сбросить застрявшие задачи
\Seiger\sTask\Models\sTaskModel::where('status', 20)
->where('updated_at', '<', now()->subHours(1))
->update(['status' => 40, 'message' => 'Таймаут задачи']);
Воркеры не появляются
Если воркеры не появляются в списке:
- Нажмите "Найти Воркеры"
- Проверьте реализует ли воркер
TaskInterface - Проверьте находится ли воркер в Composer пакете
- Проверьте логи приложения на ошибки
Ошибки прав доступа
Если вы видите ошибки прав доступа:
- Проверьте права директории storage:
chmod -R 755 storage/stask
- Проверьте владельца пользователя веб-сервера:
chown -R www-data:www-data storage/stask
- Проверьте права создания файлов PHP
Настройка админ интерфейса
Собственный брендинг
Логотип и брендинг sTask можно настроить:
- Замените файл логотипа:
public/assets/site/stask.svg - Обновите цвета в CSS:
public/assets/site/stask.min.css - Измените пункт меню в
sTaskPlugin.php
Собственные стили
Добавьте собственные стили к виджетам ваших воркеров:
public function renderWidget(): string
{
return view('mypackage::widgets.worker', [
'worker' => $this,
'customClass' => 'my-custom-style'
])->render();
}
Локализация
sTask поддерживает несколько языков:
- Английский (
en) - Украинский (
uk) - Русский (
ru)
Добавьте собственные переводы в lang/{locale}/global.php
Соображения безопасности
Контроль доступа
Админ интерфейс sTask защищен:
- Аутентификацией Evolution CMS
- Требованиями роли менеджера
- Валидацией сессии
Права задач
Задачи отслеживают какой пользователь их создал:
$task->started_by // ID пользователя который создал задачу
Реализуйте собственные проверки прав:
if ($task->started_by !== evo()->getLoginUserID() && !evo()->hasPermission('admin')) {
throw new \Exception('Не авторизовано');
}
Чувствительные данные
Избегайте хранения чувствительных данных в метаданных задачи:
- Не храните пароли
- Не храните API ключи
- Используйте настройки воркера для учетных данных
- Санитизируйте ввод пользователя
// ПЛОХО
$task = sTask::create('api', 'sync', [
'api_key' => 'secret123' // Не делайте так!
]);
// ХОРОШО
class ApiWorker extends BaseWorker
{
public function settings(): array
{
return [
'api_key' => config('services.api.key') // Храните в config
];
}
}
Интеграция с другими модулями
sCommerce Integration
Используйте sTask для операций sCommerce:
// Импорт товаров
$task = sTask::create(
identifier: 'product',
action: 'import',
data: ['file' => 'products.csv']
);
// Синхронизация остатков
$task = sTask::create(
identifier: 'product',
action: 'sync_stock',
data: ['source' => '1c']
);
Custom Module Integration
Создайте воркеры для ваших модулей:
class MyModuleWorker extends BaseWorker
{
public function scope(): string
{
return 'mymodule'; // Ваш модуль
}
// Ваши действия
public function taskProcess(sTaskModel $task, array $options = []): void
{
// Логика обработки
}
}
Советы и подсказки
Производительность
-
Используйте пакетную обработку
DB::table('items')->chunk(100, function($items) {
foreach ($items as $item) {
$this->process($item);
}
}); -
Обновляйте прогресс разумно
if ($i % 100 === 0) { // Каждые 100 элементов
$this->pushProgress($task, [...]);
} -
Используйте индексы базы данных
- Добавьте индексы на часто запрашиваемые поля
- Оптимизируйте запросы в методах task*
Надежность
-
Обрабатывайте ошибки правильно
try {
$this->process();
$this->markFinished($task);
} catch (\Exception $e) {
$this->markFailed($task, $e->getMessage());
} -
Логируйте важные события
sTask::log($task, 'info', 'Важное событие', $context); -
Валидируйте входные данные
if (empty($options['required_field'])) {
$this->markFailed($task, 'Отсутствует обязательное поле');
return;
}
Поддержка
-
Добавляйте детальные сообщения
$this->markFinished($task, null, "Обработано {$count} элементов за {$duration}с"); -
Логируйте контекст
sTask::log($task, 'error', 'Ошибка', [
'file' => $e->getFile(),
'line' => $e->getLine()
]); -
Используйте осмысленные названия
- Описательные identifier
- Понятные action names
- Профессиональные сообщения