Files
transcriber/openspec/changes/archive/2026-08-11-fix-http-handler-tests/proposal.md
T
av 6c04c801c9 http: тесты приёма переписаны на подставные адаптеры
- проверки больше не зовут ffprobe и не меняют рабочий каталог процесса;
  добавлены случаи на отказ чтения метаданных и на отсутствие поля audio
- заведена спека intake на приём по HTTP, ADR о подставных адаптерах,
  запись в журнал ревью о проверке, которая не могла упасть
- go test снят из объявленных долгов CLAUDE.md, послабление errcheck
  для _test.go в .golangci.yml убрано
2026-08-11 08:35:11 +03:00

3.5 KiB

Why

Тесты приёма записи по HTTP заведены давно и не проходили ни разу: один просит файл, которого в репозитории нет и по правилам быть не может, остальные скармливают строку «test audio content» настоящему ffprobe и ждут успеха. Из-за этого красный go test в проекте перестал что-либо значить — настоящий отказ приёма неотличим от привычного шума, и об ошибке в приёме записи мы узнаем не от машины, а от пользователя.

What Changes

  • Проверка приёма перестаёт зависеть от внешнего ffprobe и от записи, лежащей в репозитории: длительность в тестах даёт подставной источник метаданных. Проверяем свою логику приёма, а не чужую способность разобрать файл.
  • Появляется проверка отказа: источник метаданных не смог прочитать запись — приём отвечает отказом, а не успехом. Сегодня это поведение не проверено ничем.
  • Тесты перестают менять рабочий каталог всего процесса: каталог хранения задаётся приёму снаружи, каждому случаю свой временный.
  • Поведение приёма записывается требованиями: сегодня оно живёт только в коде, и спорить о том, что здесь правильно, не с чем.

Поведение самого приёма при этом не меняется — меняется только то, чем оно проверяется. Задача про проверки.

Capabilities

New Capabilities

  • intake: приём записи от внешней программы по HTTP и опрос готовности — что считается принятой записью, что возвращается в ответ и что происходит, когда запись не удалось прочитать. Приём из Telegram эта спека пока не описывает: его не трогает ни одна проверка этой задачи, а требование, написанное без проверки, — предположение.

Modified Capabilities

Нет: спек в проекте ещё не заведено.

Impact

  • internal/controller/http/transcribe_test.go — переписывается целиком;
  • сборка сервиса расшифровки в тестах: каталог хранения и источник метаданных подставляются, а не берутся из окружения;
  • .golangci.yml — послабление errcheck для тестов снимается, если после правок в тестах не остаётся непроверенных вызовов;
  • внешних границ, схемы базы, формата файлов на диске и контракта HTTP API изменение не касается.