Andrey Epifancev dc71d4e025 Архив OpenSpec: projects (#61)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 23:04:05 +04:00

5.6 KiB
Raw Blame History

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