- Зачем:
- навык wayfinder ожидает раздел про операции карты в документе трекера, а
в Gitea 1.27 нет подзадач, поэтому конвенции надо было зафиксировать явно.
- Что:
- описана принадлежность тикета карте через метку и ссылку в теле, поскольку
родительских связей в API нет.
- блокировки заведены на нативные зависимости Gitea, добавлены запросы фронтира.
- зафиксированы три особенности tea api: путь без ведущего слэша, обязательные
owner и repo в теле зависимости, нулевой код возврата при HTTP 404.
- Проверка:
- tea issues list --remote origin --labels wayfinder:map
- tea api --remote origin repos/ddmitry/local-transcriber/issues/14/dependencies
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
119 lines
5.4 KiB
Markdown
119 lines
5.4 KiB
Markdown
# Issue Tracker
|
||
|
||
Задачи проекта ведутся в Gitea-репозитории `ddmitry/local-transcriber`.
|
||
|
||
- Основной remote: `origin`
|
||
- Gitea: `https://git.dementev.space`
|
||
- CLI: `tea`
|
||
- Remote `github` является зеркалом и не используется для управления задачами
|
||
- Внешние pull request не входят в очередь triage
|
||
|
||
## Доступ
|
||
|
||
Перед операциями с задачами проверить наличие `tea`.
|
||
|
||
Если команда недоступна, остановиться и предложить пользователю установку:
|
||
|
||
```powershell
|
||
winget install --id Gitea.tea --exact
|
||
```
|
||
|
||
Не переключаться автоматически на GitHub Issues или локальные markdown-задачи.
|
||
|
||
Проверить настроенные подключения:
|
||
|
||
```powershell
|
||
tea login list
|
||
```
|
||
|
||
Если подходящего подключения нет, предложить пользователю настроить его через
|
||
`tea login add`. Не запрашивать и не выводить токены в переписке или логах.
|
||
|
||
## Прокси
|
||
|
||
Рабочее окружение использует корпоративный прокси (`HTTP_PROXY` и `HTTPS_PROXY`),
|
||
через который `git.dementev.space` недоступен: запрос к API завершается ошибкой
|
||
`EOF`. Хост нужно добавить в `NO_PROXY`.
|
||
|
||
Разделитель — **запятая**, не точка с запятой: `tea` написан на Go, а Go
|
||
разбирает `NO_PROXY` по запятым, и хост после `;` не распознаётся.
|
||
|
||
На текущую сессию:
|
||
|
||
```powershell
|
||
$env:NO_PROXY = "$env:NO_PROXY,git.dementev.space"
|
||
```
|
||
|
||
Постоянно, в пользовательских переменных окружения (значение подхватят только
|
||
новые процессы):
|
||
|
||
```powershell
|
||
[Environment]::SetEnvironmentVariable("NO_PROXY", "$env:NO_PROXY,git.dementev.space", "User")
|
||
```
|
||
|
||
## Работа с задачами
|
||
|
||
Из рабочего дерева использовать Gitea remote `origin`:
|
||
|
||
```powershell
|
||
tea issues list --remote origin
|
||
tea issues create --remote origin
|
||
tea issues edit <index> --remote origin
|
||
tea labels list --remote origin
|
||
```
|
||
|
||
За пределами рабочего дерева явно указывать репозиторий
|
||
`ddmitry/local-transcriber` и настроенный Gitea login.
|
||
|
||
## Wayfinding operations
|
||
|
||
Навык `wayfinder` ведёт карту как issue с меткой `wayfinder:map`, а её тикеты —
|
||
как отдельные issue с метками `wayfinder:research`, `wayfinder:prototype`,
|
||
`wayfinder:grilling` и `wayfinder:task`.
|
||
|
||
### Принадлежность карте
|
||
|
||
Gitea 1.27 не имеет подзадач в API: среди эндпоинтов `issues/{index}` есть
|
||
`dependencies` и `blocks`, но родительских связей нет. Поэтому принадлежность
|
||
тикета карте выражается двумя способами сразу: меткой `wayfinder:<тип>` и первой
|
||
строкой тела со ссылкой на карту.
|
||
|
||
```markdown
|
||
Часть карты: [<заголовок карты>](<url>) (#<номер>)
|
||
```
|
||
|
||
### Блокировки
|
||
|
||
Блокировки — нативные зависимости Gitea, они отображаются в интерфейсе. Тикет
|
||
разблокирован, когда закрыты все блокирующие его тикеты.
|
||
|
||
```powershell
|
||
tea api --remote origin -X POST `
|
||
repos/ddmitry/local-transcriber/issues/<блокируемый>/dependencies `
|
||
-d '{"index": <блокирующий>, "owner": "ddmitry", "repo": "local-transcriber"}'
|
||
```
|
||
|
||
### Запросы фронтира
|
||
|
||
Фронтир — открытые, разблокированные и никому не назначенные тикеты карты.
|
||
Заявка на тикет — назначение его на себя до начала работы.
|
||
|
||
```powershell
|
||
tea issues list --remote origin --labels wayfinder:map
|
||
tea issues list --remote origin --labels wayfinder:research,wayfinder:prototype,wayfinder:grilling,wayfinder:task
|
||
tea api --remote origin repos/ddmitry/local-transcriber/issues/<номер>/dependencies
|
||
```
|
||
|
||
### Особенности `tea api`
|
||
|
||
Три вещи, на которых легко потерять время:
|
||
|
||
- **Путь без ведущего слэша.** `repos/{owner}/{repo}/...` работает,
|
||
`/repos/...` возвращает `404 page not found`. Подстановка `{owner}` и `{repo}`
|
||
из контекста репозитория при этом не срабатывает — писать владельца и имя явно.
|
||
- **Тело зависимости требует `owner` и `repo`.** Только `{"index": N}` даёт
|
||
`repository does not exist [id: 0, uid: 0, owner_name: , name: ]`.
|
||
- **Код возврата не отражает HTTP-статус.** `tea api` завершается с нулевым
|
||
кодом даже на 404, поэтому скрипты должны запрашивать `-i` и разбирать строку
|
||
`HTTP/...` из stderr, иначе ошибки пройдут незамеченными.
|