28 lines
2.8 KiB
Markdown
28 lines
2.8 KiB
Markdown
## ADDED Requirements
|
||
|
||
### Requirement: Спринты, ранг и оценки
|
||
Агент v15 SHALL в каждом `refresh` (по JQL и по ключам) для каждой доски из `boards` команды с типом `scrum` или
|
||
`kanban` (известным или только что определённым) прочитать настройки доски (`GET /rest/agile/1.0/board/{id}/configuration`:
|
||
колонки и их статусы — по именам статусов; признак kanban-бэклога, если Jira его отдаёт, иначе `null`) и, у `scrum`,
|
||
все спринты доски любого состояния (`GET /rest/agile/1.0/board/{id}/sprint` постранично) и приложить к первой пачке
|
||
состояния `boards` (см. `hub-api`, «Приём досок и спринтов»). Ошибка чтения настроек или спринтов доски — доска с
|
||
`columns: null` и прежними правилами для спринтов (v12), причина в лог; `refresh` продолжается.
|
||
|
||
Каждая задача в состоянии (с v15) SHALL нести `rank` — значение поля ранга Jira (поле типа LexoRank), `story_points` —
|
||
значение поля оценки (`field_ids.story_points`, если задано, иначе поле Jira с именем «Story Points»; поля нет —
|
||
`null`), и `sprint_ids` — id всех спринтов задачи из поля спринта Jira (любого состояния). Поле не найдено — значение
|
||
`null` у всех задач и запись в лог один раз за `refresh`.
|
||
|
||
Агент v15 SHALL выполнять `ensure_sprint_meta`, `ensure_sprint_state`, `ensure_rank` и `story_points` в
|
||
`ensure_fields` по контракту `commands`; сравнение — до записи, повтор без изменений — `done` без записи.
|
||
|
||
#### Scenario: Доска с закрытыми спринтами
|
||
- **WHEN** `refresh {jql: …, boards: [{id: 4216, type: "scrum"}]}`, у доски закрытые спринты 1–2, активный 3, будущий 4
|
||
- **THEN** первая пачка состояния несёт `boards` с доской 4216, четырьмя спринтами и колонками; у задачи спринта 2,
|
||
перенесённой в 3, — `sprint_ids: [2, 3]`
|
||
|
||
#### Scenario: Нет поля оценки
|
||
- **WHEN** в Jira нет поля «Story Points», `field_ids.story_points` не задан
|
||
- **THEN** у всех задач `story_points: null`; `ensure_fields {key: X, story_points: 3}` — `failed` «поле оценки не найдено
|
||
в Jira: задайте field_ids.story_points»
|