5.6 KiB
ADDED Requirements
Requirement: Доски проектов
Агент (с v12) SHALL брать доски Jira из параметров команд, а не из настроек: ensure_sprint — из board_id команды,
refresh — из boards ([{id, type}]). В refresh для каждой доски с type = null агент SHALL запросить
GET /rest/agile/1.0/board/{id} и вернуть в результате команды boards: {"<id>": "scrum" | "kanban" | null} (null —
доска не найдена, нет доступа или тип не scrum/kanban; причина — в лог агента; refresh продолжается). Имена
спринтов задач агент SHALL собирать со всех досок типа scrum (известного или только что определённого), доски типа
kanban и null пропускать; задача в спринтах двух досок получает последнее найденное имя (как в v11). Если доска, которую хаб передал как scrum, не отдала спринты, агент SHALL перепроверить её тип: стала kanban — доска пропускается, в результате boards: {"<id>": "kanban"} (хаб записывает тип и при прежнем scrum); иначе refresh — failed с текстом «доска : …» (агент v12, R-36). Команда без board_id/boards
(хаб до проектов) SHALL выполняться по settings.board_id, как в v11. ensure_sprint с board_id канбан-доски
агент не получает (хаб отказывает при постановке); если Jira всё же ответила, что у доски нет спринтов, — failed с
текстом Jira.
Scenario: Две доски, одна новая
- WHEN
refresh {jql: …, boards: [{id: 4216, type: "scrum"}, {id: 5120, type: null}]}, доска 5120 в Jira — kanban - THEN агент запрашивает
GET /board/5120один раз, спринты читает только с доски 4216; результат содержитboards: {"5120": "kanban"}
Scenario: Доска не найдена
- WHEN
refreshсboards: [{id: 9999, type: null}], Jira наGET /board/9999ответила 404 - THEN результат
refresh—doneсboards: {"9999": null}; в логе агента — доска 9999 и код ответа
Scenario: Старый хаб
- WHEN агент v12, хаб без проектов,
refresh {jql: …}безboards,settings.board_id = 4216 - THEN спринты читаются с доски 4216, результат без
boards
Scenario: Спринт по доске из команды
- WHEN
ensure_sprint {key: AURORA-1538, sprint: "Спринт 2", board_id: 4216} - THEN агент ищет «Спринт 2» среди активных и будущих спринтов доски 4216 и ставит задачу в него
MODIFIED Requirements
Requirement: Состав и настройки агента
Агент SHALL состоять из файла agent.py (Python ≥ 3.9, только стандартная библиотека), запускателя run.py (те же
ограничения) и файла agent.json: hub_url, hub_token, jira.base_url, jira.auth (basic с user/password
или bearer с token), verify_ssl, ca_bundle, timeout, poll_seconds, необязательный auto_update (по
умолчанию true). hub_url вида http://… или https://… SHALL означать HTTP-транспорт, вида
folder:<абсолютный путь> — транспорт через общую папку. Всё остальное (id полей, типы, карта переходов, типы связей,
темп) агент SHALL получать от хаба при старте и при изменении settings_version; доски Jira — в параметрах команд
(требование «Доски проектов»). Учётные данные Jira MUST NOT отправляться в хаб и MUST NOT попадать в журнал, логи и общую
папку. Команды agent.py: run (по умолчанию), check, selftest, prune.
Scenario: Проверка без записи
- WHEN
python3 agent.py check - THEN агент печатает доступность хаба (версия настроек) и Jira (
GET /myself), в Jira ничего не пишет
Scenario: Проверка через папку
- WHEN
hub_url = "folder:/Volumes/My Shared Files/RSHB/jira-bridge"и реле хаба работает - THEN
checkпечатает «хаб: доступен через папку /Volumes/My Shared Files/RSHB/jira-bridge, настройки v, проект »; если каталога нет или реле не ответило за 10 с — строка с «НЕДОСТУПЕН» и причиной, код выхода 1
Scenario: Самопроверка новой версии
- WHEN
python3 agent.py selftest, хаб и Jira доступны - THEN печатается «jira-agent v» и строки
check; код 0; блокировка журнала не берётся, в Jira ничего не пишется; если хаб или Jira недоступны — код 3