Перейти к основному содержимому

Руководство админ интерфейса

Доступ к Менеджеру sTask

После установки, получите доступ к админ интерфейсу sTask через:

Менеджер → Инструменты → Менеджер Задач

Интерфейс состоит из трех основных разделов:

  • Панель - Обзор задач и статистики
  • Воркеры - Управление воркерами и обнаружение
  • Статистика - Детальная аналитика и отчеты

Вкладка Панель

sTask Dashboard

Виджеты обзора

Панель отображает пять ключевых метрик:

  1. Ожидающие задачи - Задачи ожидающие выполнения
  2. Выполняющиеся задачи - Задачи обрабатываемые сейчас
  3. Завершенные задачи - Успешно завершенные задачи
  4. Неудачные задачи - Задачи с ошибками
  5. Всего задач - Все задачи в системе

Таблица последних задач

Показывает 10 самых свежих задач с:

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

Действия панели

Кнопка Обработать Задачи:

  • Обрабатывает все ожидающие задачи немедленно
  • Показывает уведомление с количеством обработанных задач
  • Обновляет страницу после завершения

Кнопка Очистить Старые Задачи:

  • Удаляет завершенные задачи старше 30 дней
  • Очищает файлы логов старше 30 дней
  • Показывает уведомление с результатами очистки

Вкладка Воркеры

sTask Workers

Список воркеров

Отображает всех зарегистрированных воркеров с:

  • Иконка - Визуальный идентификатор воркера
  • Идентификатор - Уникальный ID воркера
  • Название - Понятное название
  • Scope - Модуль/пакет к которому принадлежит воркер
  • Описание - Детальное описание функциональности воркера
  • Статус - Индикатор Активный/Неактивный
  • Количество задач - Количество задач созданных этим воркером
  • Действия - Переключатель Активировать/Деактивировать

Действия управления воркерами

Кнопка Найти Воркеры:

  • Сканирует все установленные Composer пакеты
  • Находит классы реализующие TaskInterface
  • Регистрирует новые воркеры автоматически
  • Показывает уведомление с результатами обнаружения

Кнопка Пересканировать Воркеры:

  • Обновляет метаданные для существующих воркеров
  • Полезно после обновлений кода воркеров
  • Показывает уведомление с количеством обновленных

Кнопка Очистить Orphaned:

  • Удаляет воркеры, классы которых больше не существуют
  • Полезно после удаления пакетов
  • Показывает уведомление с количеством удаленных

Статус воркера

Активные воркеры (Зеленые):

  • Доступны для создания задач
  • Будут обрабатывать назначенные задачи
  • Видимы в выборе воркеров

Неактивные воркеры (Серые):

  • Недоступны для новых задач
  • Существующие задачи могут завершиться
  • Скрыты в выборе воркеров

Активация/деактивация воркеров

Нажмите кнопку переключателя рядом с воркером чтобы:

  • Активировать - Включить воркер для создания задач
  • Деактивировать - Временно отключить воркер

Создание задач

Из админ интерфейса

В настоящее время задачи создаются программно. Будущие версии будут включать форму создания задач в админ интерфейсе.

Из кода

use Seiger\sTask\Facades\sTask;

$task = sTask::create(
identifier: 'product',
action: 'import',
data: ['file' => 'products.csv'],
priority: 'high',
userId: evo()->getLoginUserID()
);

Мониторинг выполнения задач

Прогресс в реальном времени

Прогресс задачи отслеживается в реальном времени через:

  • Шкала прогресса - Визуальный индикатор (0-100%)
  • Обновления статуса - Бейджи статуса с цветовым кодированием
  • Обновления сообщений - Описание текущей операции

Детали задачи

Нажмите на задачу чтобы просмотреть:

  • Полные логи выполнения
  • Историю прогресса
  • Сообщения об ошибках
  • Метаданные задачи
  • Файлы результатов

Просмотр логов

Каждая задача имеет детальные логи показывающие:

  • Временная метка - Когда создана запись лога
  • Уровень - info, warning или error
  • Сообщение - Сообщение лога
  • Контекст - Дополнительные данные (JSON)

Фильтруйте логи по уровню:

  • Все - Показать все записи логов
  • Info - Информационные сообщения
  • Warning - Некритичные проблемы
  • Error - Критичные ошибки

Загрузка логов

Нажмите кнопку Скачать Логи чтобы:

  • Экспортировать логи задачи как .log файл
  • Полезно для отладки
  • Поделиться с командой поддержки

Действия с задачами

Выполнить задачу

Вручную запустить выполнение задачи:

  • Нажмите кнопку Выполнить
  • Статус задачи меняется на "выполняется"
  • Прогресс обновляется в реальном времени
  • Показывается уведомление о завершении

Отменить задачу

Остановить выполняющуюся или ожидающую задачу:

  • Нажмите кнопку Отменить
  • Статус задачи меняется на "отменено"
  • Задача не будет обработана
  • Можно перезапустить позже

Повторить задачу

Повторить неудачную задачу:

  • Нажмите кнопку Повторить
  • Статус задачи сбрасывается на "ожидает"
  • Будет обработана в следующем пакете
  • Счетчик попыток увеличивается

Просмотреть детали

Открыть детальный просмотр задачи:

  • Нажмите кнопку Детали или строку задачи
  • Показывает полную информацию о задаче
  • Отображает логи выполнения
  • Показывает историю прогресса

Вкладка Статистика

Статистика обзора

Комплексные метрики включая:

  • Всего задач - Все задачи в системе
  • Уровень успешности - Процент завершенных задач
  • Уровень неудач - Процент неудачных задач
  • Средняя длительность - Среднее время выполнения задачи
  • Задачи по статусу - Диаграмма распределения

Статистика воркеров

Метрики по воркерам:

  • Созданные задачи - Всего задач для каждого воркера
  • Соотношение успех/неудача - Надежность воркера
  • Среднее время выполнения - Метрики производительности
  • Последнее выполнение - Самая свежая задача

Статистика по времени

Активность задач во времени:

  • Сегодня - Задачи созданные/завершенные сегодня
  • На этой неделе - Недельная активность
  • В этом месяце - Месячная активность
  • Собственный диапазон - Выбрать диапазон дат

Лучшие практики

Управление задачами

  1. Регулярно очищайте старые задачи

    • Используйте кнопку "Очистить Старые Задачи"
    • Или планируйте автоматическую очистку
    • Предотвращает раздувание базы данных
  2. Мониторьте неудачные задачи

    • Проверяйте неудачные задачи ежедневно
    • Исследуйте паттерны ошибок
    • Исправляйте основные проблемы
  3. Используйте соответствующие приоритеты

    • high - Критичные операции
    • normal - Стандартные задачи
    • low - Фоновые операции

Управление воркерами

  1. Активируйте только нужные воркеры

    • Деактивируйте неиспользуемые воркеры
    • Уменьшает беспорядок
    • Улучшает производительность
  2. Регулярное обнаружение воркеров

    • Запускайте после обновлений пакетов
    • Гарантирует регистрацию новых воркеров
    • Обновляет метаданные воркеров
  3. Очищайте orphaned воркеры

    • Запускайте после удаления пакетов
    • Предотвращает беспорядок в базе данных
    • Поддерживает чистоту системы

Оптимизация производительности

  1. Пакетная обработка

    • Обрабатывайте задачи пакетами
    • Используйте соответствующие размеры пакетов
    • Балансируйте производительность и ресурсы
  2. Обновления прогресса

    • Обновляйте прогресс периодически (не каждый элемент)
    • Уменьшает накладные расходы файлового I/O
    • Улучшает общую производительность
  3. Управление логами

    • Регулярно очищайте старые логи
    • Используйте соответствующие уровни логов
    • Избегайте чрезмерного логирования

Горячие клавиши

КомбинацияДействие
RОбновить текущий вид
DПерейти к Панели
WПерейти к Воркерам
SПерейти к Статистике
?Показать помощь

Решение проблем

Задачи застряли в статусе "Выполняется"

Если задача застряла в статусе выполнения:

  1. Проверьте не сломался ли процесс воркера
  2. Просмотрите логи задачи на ошибки
  3. Вручную отмените задачу
  4. Перезапустите task worker
// Сбросить застрявшие задачи
\Seiger\sTask\Models\sTaskModel::where('status', 20)
->where('updated_at', '<', now()->subHours(1))
->update(['status' => 40, 'message' => 'Таймаут задачи']);

Воркеры не появляются

Если воркеры не появляются в списке:

  1. Нажмите "Найти Воркеры"
  2. Проверьте реализует ли воркер TaskInterface
  3. Проверьте находится ли воркер в Composer пакете
  4. Проверьте логи приложения на ошибки

Ошибки прав доступа

Если вы видите ошибки прав доступа:

  1. Проверьте права директории storage:
chmod -R 755 storage/stask
  1. Проверьте владельца пользователя веб-сервера:
chown -R www-data:www-data storage/stask
  1. Проверьте права создания файлов PHP

Настройка админ интерфейса

Собственный брендинг

Логотип и брендинг sTask можно настроить:

  1. Замените файл логотипа: public/assets/site/stask.svg
  2. Обновите цвета в CSS: public/assets/site/stask.min.css
  3. Измените пункт меню в 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
{
// Логика обработки
}
}

Советы и подсказки

Производительность

  1. Используйте пакетную обработку

    DB::table('items')->chunk(100, function($items) {
    foreach ($items as $item) {
    $this->process($item);
    }
    });
  2. Обновляйте прогресс разумно

    if ($i % 100 === 0) { // Каждые 100 элементов
    $this->pushProgress($task, [...]);
    }
  3. Используйте индексы базы данных

    • Добавьте индексы на часто запрашиваемые поля
    • Оптимизируйте запросы в методах task*

Надежность

  1. Обрабатывайте ошибки правильно

    try {
    $this->process();
    $this->markFinished($task);
    } catch (\Exception $e) {
    $this->markFailed($task, $e->getMessage());
    }
  2. Логируйте важные события

    sTask::log($task, 'info', 'Важное событие', $context);
  3. Валидируйте входные данные

    if (empty($options['required_field'])) {
    $this->markFailed($task, 'Отсутствует обязательное поле');
    return;
    }

Поддержка

  1. Добавляйте детальные сообщения

    $this->markFinished($task, null, "Обработано {$count} элементов за {$duration}с");
  2. Логируйте контекст

    sTask::log($task, 'error', 'Ошибка', [
    'file' => $e->getFile(),
    'line' => $e->getLine()
    ]);
  3. Используйте осмысленные названия

    • Описательные identifier
    • Понятные action names
    • Профессиональные сообщения