Files
transcriber/tasks/items/reject-oversized-recording.md
T
av 79ff12548f tasks: спроектирован контракт приложения и переставлена голова очереди
- json-api-for-spa: адреса приложения уехали в своё пространство /app/,
  приём стал POST /app/audiorecords, опрос /api/status/:id убран, заведены
  список, карточка, текст, /app/me и /app/config; имя файла отправителя
  легло своей колонкой рядом с заголовком
- три действия над записью — правка заголовка, возврат в работу и журнал
  событий — собраны задачей audiorecord-actions
- голова очереди: контракт, каркас, экран загрузки, список, действия
- в прежних задачах поправлены адреса, рубежи конвейера и остатки Telegram
2026-08-15 09:06:11 +03:00

3.2 KiB

Отклонять на приёме запись сверх потолка

  • Тип: feature
  • Категория: Очередь — Отклонять сверх потолка можно, когда потолок замерен.
  • Зачем: Запись сверх потолка принимается молча и висит в конвейере до истечения часового захвата, а человек всё это время ждёт текста.

Запись длиннее потолка отклоняется на приёме понятным текстом, а не отказом через час.

Потолок задаётся конфигурацией, а не зашивается в код: числа приходят из разведок intake-limits-measure и speechkit-limits, и меняются они без сборки.

Затрагивает

  • TranscribeService.createRecord — проверка длительности и веса до записи файла в хранилище;
  • контракт POST /app/audiorecords: код и тело ответа на запись сверх потолка;
  • GET /app/config — потолок длительности рядом с потолком размера, чтобы экран отклонял такую запись до отправки;
  • секция конфигурации: потолок длительности и потолок веса;
  • docs/database.md — настройки с числовым значением.

Критерии приёмки

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

Рамки

Берётся после intake-limits-measure: до неё потолок брать неоткуда. Длительность известна из ffprobe — значит, проверка идёт после чтения метаданных, но до записи в базу. Предел размера на стороне сервера уже есть — entity.MaxRecordSize стоит и у поля файла, и у тела запроса приёма, — и он не отменяется, а дополняется потолком длительности.