Возможности TASKFLOW CRM

Реализованные возможности

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

  • Создание, редактирование, удаление задач (мягкое и жёсткое)
  • Перемещение задач по колонкам канбан-доски
  • Назначение исполнителя
  • Приоритеты задач (критический, высокий, средний, низкий)
  • Срок выполнения (due date)
  • Плановое время (planned start / planned end)
  • Подзадачи (иерархия)
  • Отслеживание просрочки (overdue)

Канбан-доски (Kanban / Boards)

  • Проекты содержат несколько досок
  • Гибкие колонки (статусы) с настройкой названия, цвета, порядка
  • Флаги is_active (активная колонка) и is_final (финальная, завершающая)
  • Переупорядочивание колонок

Комментарии

  • Добавление, редактирование, удаление комментариев к задачам
  • Только автор может редактировать/удалять

Учёт времени (Time tracking)

  • Ручной ввод интервалов
  • Таймер с автоматической остановкой при переходе в финальную колонку
  • Автоматическое создание таймера при назначении исполнителя и переходе в активную колонку
  • Ежедневная агрегированная таблица task_daily_time_summary для оптимизации диаграмм занятости
  • Диаграмма занятости пользователя (BusyChart) с разной детализацией (минута, 10 минут, час) и режимами (слияние, разделение, пересечение)

Стикеры (теги)

  • Системные стикеры (глобальные)
  • Пользовательские стикеры (в рамках проекта)
  • Прикрепление стикеров к задачам

Проекты (Projects)

  • Типы проектов: personal (личный, создаётся автоматически при первом входе), collaborative (совместный), corporate (корпоративный)
  • Управление участниками с ролями admin и member
  • Персональный проект не допускает участников и имеет одну фиксированную доску

Интеграция с User Service (Passport)

  • JWT-аутентификация через внешний сервис
  • Локальная таблица user для синхронизации email и даты первого входа
  • Событие UserFirstLoginEvent для создания личного проекта

Real-time уведомления (SSE)

  • Поток событий (Server-Sent Events) через /events с токеном /events/token
  • Push-уведомления через Redis (канал user:{userId})
  • Email-уведомления через Symfony Mailer (настроен DSN)

Событийная шина (EventBus)

  • Синхронная реализация (GlobalEventDispatcher + ModuleEventDispatcher)
  • Доменные события (TaskCreatedEvent, ProjectCreatedEvent, UserFirstLoginEvent и др.)
  • Возможность форвардить события из модулей в глобальную шину
  • Обработчики: логирование, уведомления, трекинг времени, авто-таймер

Центральный узел уведомлений (NotificationHub)

  • Абстракция INotification
  • Каналы: EmailChannel, PushChannel, TelegramChannel, SmsChannel (заглушка)
  • Push через Redis (publish/subscribe)
  • Email через Symfony Mailer (DSN)
  • BaseNotificationListener для удобного создания слушателей, отправляющих уведомления

Кэширование через Redis

  • Компонент Yii2 cache может работать через yii\redis\Cache
  • Используется в PassportUserRepository для кэширования данных пользователя (TTL 3600 сек)
  • Планируется перевести весь кэш приложения с файлового на Redis

Swagger документация

  • Swagger UI доступен по /docs/swagger
  • Автоматическая генерация из PHP-атрибутов (OpenApi)

Используемые технологии и компоненты

ТехнологияНазначение
PHP 8.1+Язык разработки
Yii2 (2.0.54)Фреймворк
PostgreSQLОсновная БД (через PDO)
RedisКэширование (планируется), push-уведомления, очереди (в перспективе)
JWT (firebase/php-jwt)Аутентификация
Yii2 RedisКомпонент для работы с Redis (требует ext-redis или predis)
Symfony MailerОтправка email
Swagger PHP (zircote/swagger-php)Генерация OpenAPI-спецификации
CodeceptionТестирование
PHPStanСтатический анализ (level 8)

Планируемые возможности (из ТЗ)

  • Аналитика и отчёты (модуль analytics)
  • Управление клиентами (модуль clients)
  • Файловое хранилище (модуль files) с S3-совместимым хранилищем (Yandex Object Storage)
  • Журнал событий (аудит)
  • Веб-сокеты для более оперативных уведомлений
  • Переход на асинхронную обработку событий через Redis Streams
  • Микросервисная декомпозиция (выделение US, Files, Analytics, Notifications)