- пять из урожая change 2026-08-11-fix-http-handler-tests, тег review-2026-08-11; утечка имени файла в журнал поставлена первой строкой очереди - опечатка transcibe дописана в json-api-for-spa: текст ошибки — часть необратимого контракта, и в одиночку он не правится
3.3 KiB
🧹 Разобрать мелочи http-транспорта
- Тип: chore
- Категория: Очередь
- Зачем: Маршруты зарегистрированы дважды, и переименование пути в 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 прямо требует обратного: «не логирует ошибку,
которую уже залогировал доменный слой». Нашёл проход review-code.
Затрагивает
internal/controller/httpиmain.go— регистрация маршрутов приёма и опроса, сегодня продублированная в обоих местах;internal/controller/http/transcribe.go— журнальная строка обработчика;internal/controller/http/transcribe_test.go— сборка теста, держащая свою копию маршрутов.
Критерии приёмки
- Пути и методы объявлены в одном месте, и переименование пути роняет проверки.
Оракул — мутация: заменить
/api/audioна/api/upload, прогнатьgo test ./internal/controller/http/и увидеть красное. - Обработчик не пишет в журнал через стандартный
log. Оракул —grep -rn 'log\.' internal/controller/http/*.goбез импортаlog/slogпуст. - Об одном отказе приёма в журнале одна запись, а не две. Оракул — прогон отказа с перехваченным журналом: строк об этой ошибке ровно одна.
Рамки
Форма ответа и коды не меняются — этим занимается json-api-for-spa.