Перейти до основного вмісту

Керівництво адмін інтерфейсу

Доступ до Менеджера 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
    • Професійні повідомлення