89 lines
3.2 KiB
Markdown
89 lines
3.2 KiB
Markdown
|
|
# Задачи (SprintTask)
|
||
|
|
|
||
|
|
← [Сводка API](README.md)
|
||
|
|
|
||
|
|
Сущность **SprintTask** — задача, закрытая в [спринте](sprints.md). Содержит метрики по отдельной задаче.
|
||
|
|
|
||
|
|
## Связанные сущности
|
||
|
|
|
||
|
|
- [Спринты](sprints.md) — родительская сущность (`sprint_id` в БД, не возвращается в ответе)
|
||
|
|
- [Конфигурация](config.md) — `jira_url` для формирования ссылки на задачу в Jira
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Модель данных
|
||
|
|
|
||
|
|
### SprintTask
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": 101,
|
||
|
|
"task_type": "backend",
|
||
|
|
"task_key": "TS-1234",
|
||
|
|
"task_title": "Пример задачи",
|
||
|
|
"employee_name": "Иван Иванов",
|
||
|
|
"employee_role": "backend",
|
||
|
|
"estimate_seconds": 28800,
|
||
|
|
"total_time_seconds": 32400,
|
||
|
|
"take_in_work_datetime": "2026-01-14 10:00:00+04",
|
||
|
|
"resolution_datetime": "2026-01-20 16:30:00+04",
|
||
|
|
"lead_time_days": 5,
|
||
|
|
"recast_percentage": 12.5,
|
||
|
|
"efficiency_percentage": 45.0,
|
||
|
|
"review_count": 2,
|
||
|
|
"test_count": 1
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
| Поле | Тип | Описание |
|
||
|
|
|------|-----|----------|
|
||
|
|
| `id` | `integer` | Идентификатор записи в БД |
|
||
|
|
| `task_type` | `string` | Тип задачи |
|
||
|
|
| `task_key` | `string` | Ключ задачи в Jira |
|
||
|
|
| `task_title` | `string` | Заголовок задачи |
|
||
|
|
| `employee_name` | `string \| null` | ФИО исполнителя |
|
||
|
|
| `employee_role` | `string \| null` | Роль исполнителя |
|
||
|
|
| `estimate_seconds` | `integer` | Оценка в секундах |
|
||
|
|
| `total_time_seconds` | `integer` | Фактически затраченное время в секундах |
|
||
|
|
| `take_in_work_datetime` | `string \| null` | Дата и время взятия в работу |
|
||
|
|
| `resolution_datetime` | `string \| null` | Дата и время закрытия |
|
||
|
|
| `lead_time_days` | `integer \| null` | System Lead Time в рабочих днях |
|
||
|
|
| `recast_percentage` | `number \| null` | Переработка относительно оценки, % |
|
||
|
|
| `efficiency_percentage` | `number \| null` | КПД (Flow Efficiency), % |
|
||
|
|
| `review_count` | `integer` | Количество заходов на ревью |
|
||
|
|
| `test_count` | `integer` | Количество заходов на тестирование |
|
||
|
|
|
||
|
|
### Роли исполнителей (`employee_role`)
|
||
|
|
|
||
|
|
`analytic`, `backend`, `designer`, `frontend`, `qa`, `project`
|
||
|
|
|
||
|
|
### Ссылка на задачу в Jira
|
||
|
|
|
||
|
|
```
|
||
|
|
{jira_url}/browse/{task_key}
|
||
|
|
```
|
||
|
|
|
||
|
|
`jira_url` получается из [конфигурации](config.md): `GET /api/config`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Эндпоинты
|
||
|
|
|
||
|
|
### `GET /api/sprints/{sprintId}/tasks`
|
||
|
|
|
||
|
|
Возвращает [задачи](tasks.md), закрытые в указанном [спринте](sprints.md).
|
||
|
|
|
||
|
|
**Параметры пути**
|
||
|
|
|
||
|
|
| Параметр | Тип | Описание |
|
||
|
|
|----------|-----|----------|
|
||
|
|
| `sprintId` | `integer` | Идентификатор спринта |
|
||
|
|
|
||
|
|
**Ответ:** `200` — массив `SprintTask[]`, отсортированный по дате закрытия, затем по ключу задачи
|
||
|
|
|
||
|
|
**Пример**
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl http://localhost/api/sprints/42/tasks
|
||
|
|
```
|