- проверки больше не зовут ffprobe и не меняют рабочий каталог процесса; добавлены случаи на отказ чтения метаданных и на отсутствие поля audio - заведена спека intake на приём по HTTP, ADR о подставных адаптерах, запись в журнал ревью о проверке, которая не могла упасть - go test снят из объявленных долгов CLAUDE.md, послабление errcheck для _test.go в .golangci.yml убрано
3.5 KiB
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 изменение не касается.