You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Feature] Модуль управления командами, ресурсного планирования и визуализации активности #68
Для эффективного управления разработкой необходимо расширить систему от простых задач до управления ресурсами команд. Внедрение логики команд позволит группировать пользователей, отслеживать их доступность (отпуска, больничные) и текущую нагрузку. Добавление визуализации активности (Activity Graph), аналогичного GitHub, обеспечит прозрачность рабочего процесса и поможет в выявлении «бутылочного горлышка» в распределении задач.
Технические требования
Локация логики:src/teams, src/analytics
Инструменты: PostgreSQL (TimeScaleDB или агрегатные таблицы), CASL (для прав внутри команды), библиотеки графиков (для фронтенда).
Логика работы:
Реализовать сущность Team и таблицу связей TeamMembers с ролями (Leader, Member).
Разработать модуль Presence: поля vacation_start, vacation_end, is_unavailable в профиле пользователя или отдельной таблице.
Создать агрегатор нагрузки (Workload): расчет соотношения активных задач (в статусе IN_PROGRESS) к общему числу Story Points пользователя.
Реализовать сервис ActivityLog: запись событий (commit-like events) при каждом изменении статуса задачи или создании комментария.
Подготовить API для отдачи данных в формате date: count для построения графика активности (Heatmap).
Цель и критерии приемки (Definition of Done)
База: Миграции для таблиц teams, team_members, user_presence и activity_logs.
Функционал: Эндпоинты получения состава команды с вложенными данными о статусе присутствия и проценте загрузки каждого участника.
Функционал: API для графика активности, возвращающее данные за последние 365 дней.
Лимиты/SLA: Запрос на получение графика активности должен быть оптимизирован через материализованные представления (Materialized Views) или кеширование (Redis), время ответа < 200мс.
Интеграция: Связать ActivityLog с существующими сервисами задач через Domain Events или Hooks.
Важные указания
Производительность: Лог активности может быстро расти; необходимо предусмотреть партиционирование таблицы activity_logs по датам.
Ошибки: При попытке назначить задачу на пользователя в отпуске возвращать Warning в теле ответа или блокировать операцию (в зависимости от настроек команды).
Безопасность: Данные об отпусках и личной активности должны быть доступны только внутри команды или администраторам согласно правилам CASL.
Activity