3.2 KiB
3.2 KiB
agent-v14-attachment-fetch — решения агента
Спека и дизайн изменения — в jira-hub/openspec/changes/attachment-fetch/ (issue aep/jira-hub#83, aep/jira-agent#43).
Агентская часть — решения 1, 4–6, 8, 17, 18 дизайна хаба; требования agent «Чтение состояния» (MODIFIED: поле
attachments в состоянии, attachment в search) и «Скачивание вложения» (ADDED); контракт команды — commands
«Скачивание вложения по запросу» (fetch_attachment); отправка файла — hub-api «Маршруты агента»
(POST /agent/files). Версия агента — 14.
Decisions made without discussion
Решения хаба записаны в jira-hub/openspec/changes/attachment-fetch/design.md (раздел «Decisions made without
discussion»); здесь — только решения агентской части, принятые при исполнении.
| Маркер | Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|---|
| R-50 | 2026-10-22 | Вложение без filename в ответе Jira отбрасывается с логом, как без id |
Хаб требует непустой filename (hub-api), иначе 422 на всю пачку состояния |
Такое вложение не видно в мосту |
| R-51 | 2026-10-22 | size вложения не целое, отрицательное или bool — передаётся null |
Хаб принимает только неотрицательное целое или null |
Нет |
| R-52 | 2026-10-22 | Отправка файла хабу — HubClient.upload_file (в плане — put_file) |
У FakeHub уже есть хелпер put_file; одно имя на разные действия путает |
Нет |
| R-53 | 2026-10-22 | Тесты upload_file через папку — в tests/test_folder.py |
Там фикстура реле | Нет |
| R-54 | 2026-10-22 | По M-4 финального ревью: запрет перенаправлений на другой адрес — для всех запросов агента (Http.send и fetch_bytes через _opener), а не только для скачивания; отказ в JSON-вызове — HttpError 302 «перенаправление на <хост> отклонено» |
Design хаба #6: учётные данные уходят только на base_url; urllib переносил Authorization на чужой хост в любом вызове |
Если Jira банка штатно перенаправляет API на другой хост — вызовы падают с понятной ошибкой, видно на живой проверке |
| R-55 | 2026-10-22 | По M-1: при неизвестном размере тело короче Content-Length — ConnectionError (повтор), а не файл |
Иначе битый файл становится «скачанным» у хаба | Нет |