# ✨ Принимать до десяти файлов одной загрузкой

- **Тип:** feature
- **Категория:** Очередь — Пачка файлов заводится на готовом экране загрузки и готовой дедупликации.
- **Зачем:** Приём берёт один файл в запросе, а с телефона выбирают пачку сразу: десять записей значат десять заходов на экран загрузки.

Пачка файлов уходит одной загрузкой, и отказ одного не отменяет остальные.

## Затрагивает

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

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

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

## Рамки

Публичный контракт `POST /app/audiorecords` меняется, а это необратимо. Форма
ответа при этом заново не согласуется: она сведена списком с местом под признак
повтора задачей `json-api-for-spa` — решением владельца от 2026-08-12 — как раз
для того, чтобы эта задача её не переписывала. Меняется число файлов в запросе,
не форма ответа. Загрузка частями сюда не входит: это `chunked-upload-choice`.
