Спека agent: вложение без имени тоже отбрасывается (R-50 агента). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
Why
Тестировщики прикладывают к ошибкам AURORA файлы: скриншоты, выгрузки в Excel (ОСВ), иногда PDF и JSON. Владелец
разбирает ошибки в чате с Claude, и Claude должен сам открыть эти файлы. Сейчас мост файлы из Jira не забирает совсем:
зеркало не знает даже, что у задачи есть вложения (агент умеет только загружать файл в Jira — ensure_attachment,
change bug-and-attachments).
Решения владельца 22.10.2026 (brainstorming, jira-hub#83, jira-agent#43):
- при синхронизации — только список вложений (имя, размер, автор, дата), сами файлы автоматически не тянутся;
- файл — по запросу: агент скачивает нужное вложение из Jira и отдаёт хабу;
- где: в MCP (Claude получает путь к локальному файлу и открывает его) и в веб-приложении (кнопка «Скачать»);
- из комментария: файлы, на которые ссылается комментарий тестировщика, видны и скачиваются прямо у комментария —
в карточке, в MCP
issueиcomment, а не только в общем списке задачи; - предел 10 МБ на файл, как у загрузки; крупнее — скачивать в Jira руками;
- превью скриншотов в карточке не делаем: для него файлы пришлось бы качать заранее.
What Changes
- Список вложений в зеркале. Агент v14 в
refreshдобавляет полеattachmentкsearchи шлёт у каждой задачиattachments(id, имя, размер, тип, автор, дата) без содержимого. Хаб хранит их в новой таблицеissue_attachment(схема v6), заменяя список задачи целиком, как комментарии. - Ссылки из текста. Хаб находит в описании и комментариях вики-ссылки на вложения (
!имя!,!имя|…!,[^имя]) и отдаёт у комментарияattachment_ids, у задачи —description_attachment_ids. - Команда
fetch_attachment. Хаб ставит её по запросу интерфейса отдельным пакетом без хвостовогоrefresh; агент читает вложение в Jira, скачивает содержимое и отдаёт хабу новым маршрутомPOST /agent/files; хаб кладёт файл в хранилищеfiles/(то же, что для загрузки; уборка через 30 дней) и запоминает вattachment_file. - API.
GET /attachments/{id}(с состояниемnone/fetching/ready/failed),POST /attachments/{id}/fetch(одна команда на вложение, сколько бы раз ни просили),GET /attachments/{id}/content(файл с исходным именем).GET /issues/{key}отдаёт вложения и ссылки на них. - MCP.
issueиcommentпоказывают вложения; новый инструментattachmentскачивает файл (ждёт агента доwait_seconds) и отвечает путём к локальной копии с исходным именем в<данные хаба>/downloads/<id>/. - Веб. В карточке раздел «Вложения (N)», плашки файлов под комментарием, ссылки на вложения в отрендеренном тексте — все скачивают файл одной кнопкой; «Загружается…», пока агент везёт файл.
Non-Goals
- Превью картинок в карточке и показ
!картинка!картинкой. - Скачивание файлов больше 10 МБ — только ссылка на Jira.
- Автоматическая подкачка файлов (заранее, при синхронизации, по подписке).
- Удаление и переименование вложений в Jira из моста.
- Привязка файла к комментарию по автору и времени — только по ссылке в тексте.
Anti-Goals
- Синхронизация стала тяжелее: при
refreshагент качает содержимое вложений или делает лишние вызовы Jira на задачу. - Учётные данные Jira уходят на адрес не из
base_urlагента (адресcontentиз ответа Jira). - Повторные нажатия и параллельные запросы из веба и MCP ставят несколько одинаковых скачиваний.
- Claude получает файл без имени и расширения и не может его открыть.
- Старый агент (≤ v13) или старый хаб ломают синхронизацию.