5.6 KiB
5.6 KiB
Context
Основа — main af70ba8 (после sprints-backlog #108, схема v9, агент v15). Issue #113, ветка
feat/113-sp-estimation-board. Агент — jira-agent#53, ветка feat/53-v16-sp-estimation, design-only change
agent-v16-sp-estimation.
Что есть сейчас:
- агент v15 пишет
story_pointsвPUT /rest/api/2/issue/{key}вместе с остальными полями (do_ensure_fields); - Jira банка 25.10.2026 отклонила запись: поле оценки не на экране редактирования;
- хаб дописывает
board_idтолько вensure_sprint(по проекту задачи,hooks._assign_boards) и в команды спринта (по проекту пакета,hooks._assign_project_board);retry_paramsснимает его у этих типов; - живые данные: доска 4216 (
AWPCA, scrum), поле оценки доскиcustomfield_15852=field_ids.story_pointsхаба.
Goals / Non-Goals
Goals: оценки из чата ставятся в Jira банка; повтор без изменений — без записи; контракт ensure_fields для
остальных полей не меняется.
Non-Goals: см. proposal.
Decisions
- Оценка — через ресурс оценки доски
/rest/agile/1.0/issue/{key}/estimation?boardId=…(владелец, 25.10.2026: «давай» на предложенную схему после проверки ресурса в браузере). Так ставит оценку бэклог Scrum; экран редактирования не нужен. - Доска — по проекту задачи, как у
ensure_sprint(владелец, 25.10.2026). Те же 422; текст для канбана — свой: «у проекта P канбан-доска, оценка — только на scrum-доске»; задача вне проектов — «… доску для оценки не определить». board_idтолько приstory_pointsв параметрах.ensure_fieldsбез оценки проверок доски не проходит — задачи вне проектов правятся, как раньше.- Повтор (
command_retry) снимаетboard_idуensure_fields— доска определяется заново, как уensure_sprint. - Подтверждение по зеркалу не меняется:
story_pointsв зеркале — то же полеcustomfield_15852.
Risks / Trade-offs
- Формат
valueвPUT …/estimation. Документация Atlassian показывает строку ("8.5"), Jira отдаёт число (1.0). Агент шлёт число; если Jira банка не примет — правка агента после живой проверки на одной задаче (до пакета). - Частичная запись. Остальные поля
PUT /issueпишутся до оценки; ошибка оценки —failed, повтор команды остальные поля не меняет (уже совпадают).
Decisions made without discussion
| Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|
| 25.10.2026 | R-1. Без board_id в команде агент v16 ставит оценку через PUT /issue, как v15 |
совместимость с хабом до этого change; агент выкатывается после хаба, но порядок не гарантирован | нет: без доски поведение то же, что сейчас |
| 25.10.2026 | R-2. Порядок в агенте: сначала PUT /issue с остальными полями, затем оценка |
оценка — новый путь с риском ошибки; остальные поля не должны зависеть от неё | частичная запись при ошибке оценки — повтор безопасен |
| 25.10.2026 | R-3. GET /issue не делается, если в команде только оценка |
пакет оценок — 64 команды; минус один вызов Jira на команду | нет |
| 25.10.2026 | R-4. Текст 422 для канбана у ensure_fields — отдельный |
«спринтов нет» вводит в заблуждение для оценки | косметика |
| 25.10.2026 | R-5. value в PUT …/estimation — число (null — очистить) |
Jira отдаёт значение числом; проверяется вживую до пакета | одна правка агента |
| 25.10.2026 | I-1 (финальное ревью): между PUT /issue и PUT …/estimation одной команды — зазор ensure_fields |
политика темпа: зазор между записями внутри команды | пакет «оценка + поля» идёт медленнее |
| 25.10.2026 | I-2 (финальное ревью): fieldId оценки доски сверяется с field_ids.story_points (если задан), расхождение — failed без записи |
иначе число уйдёт в чужое поле доски другого проекта | лишний отказ, если поле настроено неверно — правится настройкой |