Возможности 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)