# ✨ Сделать экран загрузки записи и её состояния - **Тип:** feature - **Категория:** Ядро - **Зачем:** Первое, ради чего приложение открывают: отдать файл и увидеть, что с ним происходит. - **Теги:** goal:web-access Двигает пункты 1 и 2 «Завершения» цели: экран принимает файл и заводит задачу, а её состояние обновляется само, пока задача не дошла до `done` или `failed`. Берётся после `spa-skeleton` и `json-api-for-spa`. ## Затрагивает - новый экран приложения: выбор файла, отправка, показ состояния; - опрос состояния задачи и его остановка; - показ отказа человекочитаемым текстом из контракта API; - предел размера загружаемого файла на стороне приложения и на стороне сервера (`router.MaxMultipartMemory`, сегодня 32 МиБ); - `docs/database.md` — частота опроса числом. ## Критерии приёмки - Выбранный файл уходит на сервер и заводит задачу; экран сразу показывает её состояние. Оракул — тест экрана на подставном API: после отправки на экране идентификатор задачи и состояние `created`. - Опрос сам прекращается, когда задача дошла до `done` или `failed`. Оракул — тест: после ответа `done` новых запросов к API нет. - Отказ задачи показывается человекочитаемым текстом, а не кодом и не сырой ошибкой. Оракул — тест на ответе с состоянием `failed`. - Файл больше предела отклоняется на экране до отправки, с названным числом. Оракул — тест на файле сверх предела: запроса к API нет, на экране предел числом. ## Рамки Записи звука в приложении не делаем — файл выбирают в системном диалоге. Список прошлых записей не делаем, это `records-list-screen`.