tasks: заведены три задачи под незакрытые пункты цели о долгих записях
- intake-limits-measure меряет четыре звена, которых не берёт speechkit-limits: приём из Telegram и по HTTP, конвертацию и заливку в Object Storage; - reject-oversized-recording отклоняет запись сверх потолка на приёме, long-text-delivery отдаёт текст в сотни килобайт файлом вместо сотни сообщений Telegram; - все шесть пунктов «Завершения» цели теперь закрыты задачами.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# ✨ Отклонять на приёме запись сверх потолка
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Очередь
|
||||
- **Зачем:** Запись сверх потолка принимается молча и висит в конвейере до истечения часового захвата, а человек всё это время ждёт текста.
|
||||
- **Теги:** goal:long-recordings
|
||||
|
||||
Двигает пункт 2 «Завершения» цели: запись длиннее потолка отклоняется на приёме
|
||||
понятным текстом, а не отказом через час.
|
||||
|
||||
Потолок задаётся конфигурацией, а не зашивается в код: числа приходят из
|
||||
разведок `intake-limits-measure` и `speechkit-limits`, и меняются они без сборки.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- `TranscribeService.createTranscribeJob` — проверка длительности и веса до
|
||||
записи файла на диск;
|
||||
- контракт `POST /api/audio`: код и тело ответа на запись сверх потолка;
|
||||
- ответ бота на слишком длинную запись;
|
||||
- секция конфигурации: потолок длительности и потолок веса;
|
||||
- `docs/database.md` — настройки с числовым значением.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- Запись длиннее потолка отклоняется на приёме: задача не заводится, файл на
|
||||
диске не остаётся. Оракул — тест приёма на записи сверх потолка: задач ноль,
|
||||
каталог хранения пуст.
|
||||
- Отправитель видит человекочитаемый текст с названным пределом, а не код
|
||||
ошибки. Оракул — тест: в теле ответа предел числом, текста внутренней ошибки
|
||||
нет.
|
||||
- Запись в пределах потолка принимается по-прежнему. Оракул — существующие
|
||||
тесты приёма по HTTP.
|
||||
- Потолок меняется конфигурацией без пересборки. Оракул — тест разбора
|
||||
конфигурации с двумя разными значениями.
|
||||
|
||||
## Рамки
|
||||
|
||||
Берётся после `intake-limits-measure`: до неё потолок брать неоткуда. Длительность
|
||||
известна из `ffprobe` — значит, проверка идёт после чтения метаданных, но до
|
||||
записи в базу. Предел веса на стороне сервера уже есть
|
||||
(`router.MaxMultipartMemory`), и он не отменяется, а дополняется.
|
||||
Reference in New Issue
Block a user