docs(agents): правка тела issue идёт через API, а не через tea

Зачем: тикнуть чекбокс в критериях приёмки нужно при закрытии каждой задачи,
а рецепта в доке не было. Наступили на это при закрытии #37: `tea issues edit
--description` требует тело целиком строкой, но взять её неоткуда — вывод
`tea issues <номер>` обёрнут и разрисован для терминала.

Что: раздел «Правка тела issue — только через API» с рабочим рецептом
(забрать сырой JSON, поправить body, вернуть через `-X PATCH -d @файл`) и
разбором флагов `tea api`. Оттуда же общее правило: CLI удобен, пока команда
создаёт объект или меняет его свойство, и мешает, как только надо изменить
уже написанный текст. Ссылка из раздела про автозакрытие и запись в «Что
проверено и когда».

Проверка: рецепт снят живыми запросами при закрытии #37 — так проставлены
чекбоксы тикета и пункт в чек-листе карты #4. `make config-test` зелёный.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-06 09:24:53 +03:00
co-authored by Claude Opus 5
parent c99e853fd3
commit dd6d117d49
+46 -1
View File
@@ -46,6 +46,45 @@
уже с сохранённым токеном, например
`tea api repos/ddmitry/clickstream-data-platform/issues/18`.
## Правка тела issue — только через API
Тикнуть чекбокс в критериях приёмки нужно при закрытии каждой задачи, и `tea`
для этого не годится. `tea issues edit --description` принимает тело **целиком
строкой**, а взять эту строку неоткуда: `tea issues <номер>` печатает текст
обёрнутым и разрисованным для терминала, обратно его не скормишь.
Рабочий путь — забрать сырое тело из API, поправить и вернуть:
```sh
# 1. сырой JSON тикета; тело — в поле body
tea api repos/{owner}/{repo}/issues/<n> > issue.json
# 2. правка тела любым удобным способом, например все чекбоксы разом
python3 -c "
import json
d = json.load(open('issue.json'))
json.dump({'body': d['body'].replace('- [ ]', '- [x]')},
open('patch.json', 'w'), ensure_ascii=False)
"
# 3. вернуть
tea api -X PATCH -d @patch.json repos/{owner}/{repo}/issues/<n>
```
Флаги `tea api`: `-X` — метод, `-d` — сырое тело JSON (`@файл` читает из файла,
`@-` из потока ввода), `-f` и `-F` — отдельные поля строкой и с типом. Флага
`--input` нет, хотя рука тянется написать именно его.
Тот же приём — для чек-листа родительской карты: пункт `- [ ] #NN` тикается
правкой её тела, автоматически Gitea этого не делает.
**Отсюда общее правило.** `tea` удобен там, где команда создаёт объект или
меняет его свойство: создать issue, добавить комментарий, повесить метку,
назначить исполнителя, закрыть. Как только нужно **изменить уже написанный
текст** — тело issue, тело PR, — CLI мешает: он умеет только заменить всё
целиком, а прочитать это «всё» в пригодном для правки виде не даёт. Такие
операции идут прямо в API.
## Слияние PR не закрывает issue
Gitea понимает только английские ключевые слова автозакрытия: `closes`,
@@ -59,7 +98,8 @@ PR #17, где issue #13 пришлось закрывать руками.
Если ключевого слова не было, порядок после слияния: закрыть задачу
(`tea issues close <номер>`) и тикнуть её пункт в чек-листе родительского
issue этапа — Gitea чек-листы сама не обновляет.
issue этапа — Gitea чек-листы сама не обновляет. Чем тикать — выше, в разделе
про правку тела.
## Спека — источник истины
@@ -119,6 +159,11 @@ issue этапа — Gitea чек-листы сама не обновляет.
## Что проверено и когда
2026-08-06: правка тела issue через `tea api -X PATCH -d @файл` снята живыми
запросами при закрытии #37 — так проставлены чекбоксы самого тикета и пункт
в чек-листе карты #4. Тогда же проверено, что `tea issues edit --description`
для этого непригоден, а флага `--input` у `tea api` нет.
2026-07-31: Gitea 1.27.0 (`tea api version`), `tea` 0.15.0. Живыми запросами по
этому репозиторию проверены `tea labels list` и `tea issues list`. Остальной
набор команд, флагов и приёмы с `tea api` перенесены из доки