Контекст
Для улучшения процессов планирования и оценки скорости команды (Velocity) необходимо внедрить поддержку Story Points (SP). В отличие от временных оценок, SP позволяют абстрагироваться от конкретных часов и оценивать сложность, риски и объем работы. Это критически важная фича для перехода к полноценному Agile/Scrum процессу в таск-трекере.
Технические требования
- Локация логики:
models/task.model.ts, services/task-service, api/v1/tasks
- Инструменты: PostgreSQL, TypeScript, TypeORM/Prisma.
- Логика работы:
- Расширить модель
Task полем story_points (числовой тип, nullable).
- Реализовать валидацию входящих значений на бэкенде. Допустимые значения должны соответствовать шкале Фибоначчи:
0, 1, 2, 3, 5, 8, 13, 21 (или кастомный набор).
- Добавить логику агрегации: для сущностей
Board или Sprint возвращать сумму всех SP активных задач в метаданных.
- При изменении статуса задачи (например, в
Done) фиксировать затраченные SP в статистике производительности.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Использовать индексацию по
board_id и status, чтобы расчет суммы баллов не приводил к полному сканированию таблицы (Full Table Scan).
- Ошибки: Возвращать
400 Bad Request, если переданное значение SP не входит в разрешенный список/шкалу.
- Безопасность: Редактирование Story Points должно быть доступно только ролям с правами
WRITE или MANAGE на уровне конкретной доски (согласно CASL).
Контекст
Для улучшения процессов планирования и оценки скорости команды (Velocity) необходимо внедрить поддержку Story Points (SP). В отличие от временных оценок, SP позволяют абстрагироваться от конкретных часов и оценивать сложность, риски и объем работы. Это критически важная фича для перехода к полноценному Agile/Scrum процессу в таск-трекере.
Технические требования
models/task.model.ts,services/task-service,api/v1/tasksTaskполемstory_points(числовой тип, nullable).0, 1, 2, 3, 5, 8, 13, 21(или кастомный набор).BoardилиSprintвозвращать сумму всех SP активных задач в метаданных.Done) фиксировать затраченные SP в статистике производительности.Цель и критерии приемки (Definition of Done)
story_pointsв таблицуtasks.storyPoints.Важные указания
board_idиstatus, чтобы расчет суммы баллов не приводил к полному сканированию таблицы (Full Table Scan).400 Bad Request, если переданное значение SP не входит в разрешенный список/шкалу.WRITEилиMANAGEна уровне конкретной доски (согласно CASL).