Files
transcriber/tasks/items/http-transport-nits.md
T
av 79ff12548f tasks: спроектирован контракт приложения и переставлена голова очереди
- json-api-for-spa: адреса приложения уехали в своё пространство /app/,
  приём стал POST /app/audiorecords, опрос /api/status/:id убран, заведены
  список, карточка, текст, /app/me и /app/config; имя файла отправителя
  легло своей колонкой рядом с заголовком
- три действия над записью — правка заголовка, возврат в работу и журнал
  событий — собраны задачей audiorecord-actions
- голова очереди: контракт, каркас, экран загрузки, список, действия
- в прежних задачах поправлены адреса, рубежи конвейера и остатки Telegram
2026-08-15 09:06:11 +03:00

47 lines
3.6 KiB
Markdown

# 🧹 Разобрать мелочи http-транспорта
- **Тип:** chore
- **Категория:** Очередь — Поднято до контракта API: маршруты объявлены дважды, и переименование пути проходит тесты зелёным — переписывать контроллер под слепыми проверками нельзя.
- **Зачем:** Маршруты зарегистрированы дважды, и переименование пути в main.go проходит проверки зелёным; обработчик пишет в журнал через стандартный log и дублирует запись, уже сделанную сервисом.
- **Теги:** review-2026-08-11
Два дефекта, найденные ревью change `2026-08-11-fix-http-handler-tests`. Оба в
`internal/controller/http`, мерджатся одним заходом.
**Маршруты зарегистрированы дважды.** `main.go` объявляет пути приёма и опроса,
и сборка теста объявляет их же своей копией. Проверки ходят по копии, поэтому
переименование пути в `main.go` их не роняет — а публичный контракт HTTP API
проект объявил необратимым. Проверено мутацией на прогоне триажа: замена
`api.POST("/audio", …)` на `api.POST("/upload", …)` оставляет тесты зелёными.
Нашёл проход `review-specs`.
**Обработчик пишет в журнал мимо `slog` и дублирует сервис.** `log.Printf("Err:
%v", err)` — стандартный `log`, тогда как весь проект пишет через `slog`; и эту
же ошибку строкой выше уже записал сервис. Типовой узел «Транспорт» в
[review.md](../../docs/review.md) прямо требует обратного: «не логирует ошибку,
которую уже залогировал доменный слой». Нашёл проход `review-code`.
## Затрагивает
- `internal/controller/http` и `main.go` — регистрация маршрутов приёма и
опроса, сегодня продублированная в обоих местах;
- `internal/controller/http/transcribe.go` — журнальная строка обработчика;
- `internal/controller/http/transcribe_test.go` — сборка теста, держащая свою
копию маршрутов.
## Критерии приёмки
- Пути и методы объявлены в одном месте, и переименование пути роняет проверки.
Оракул — мутация: заменить `/app/audiorecords` на `/app/uploads`, прогнать
`go test ./internal/controller/http/` и увидеть красное.
- Обработчик не пишет в журнал через стандартный `log`. Оракул —
`grep -rn 'log\.' internal/controller/http/*.go` без импорта `log/slog` пуст.
- Об одном отказе приёма в журнале одна запись, а не две. Оракул — прогон
отказа с перехваченным журналом: строк об этой ошибке ровно одна.
## Рамки
Форма ответа и коды не меняются — этим занимается
[json-api-for-spa](json-api-for-spa.md).