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

47 lines
3.5 KiB
Markdown

## 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
изменение не касается.