- json-api-for-spa: адреса приложения уехали в своё пространство /app/, приём стал POST /app/audiorecords, опрос /api/status/:id убран, заведены список, карточка, текст, /app/me и /app/config; имя файла отправителя легло своей колонкой рядом с заголовком - три действия над записью — правка заголовка, возврат в работу и журнал событий — собраны задачей audiorecord-actions - голова очереди: контракт, каркас, экран загрузки, список, действия - в прежних задачах поправлены адреса, рубежи конвейера и остатки Telegram
3.3 KiB
3.3 KiB
✨ Сделать экран загрузки записи и её состояния
- Тип: feature
- Категория: Очередь — Первое, ради чего приложение открывают; требует каркаса и контракта, оба выше
- Зачем: Первое, ради чего приложение открывают: отдать файл и увидеть, что с ним происходит.
Экран принимает файл и заводит запись, а её рубеж обновляется сам, пока запись
не дошла до конечного рубежа done либо не встала признаком остановки.
Берётся после spa-skeleton и json-api-for-spa.
Затрагивает
- новый экран приложения: выбор файла, отправка, показ рубежа;
- опрос рубежа записи и его остановка;
- показ отказа человекочитаемым текстом из контракта API;
- предел размера записи на стороне приложения: экран берёт его из
GET /app/config, где сервер отдаёт своё же число; docs/database.md— частота опроса числом.
Критерии приёмки
- Выбранный файл уходит на сервер и заводит запись; экран сразу показывает её
рубеж. Оракул — тест экрана на подставном API: после отправки на экране
идентификатор записи и рубеж
uploaded. - Опрос сам прекращается, когда запись дошла до
doneлибо встала признаком остановки. Оракул — два теста: после ответа с рубежомdoneновых запросов к API нет; после ответа с признаком остановки — тоже. - Остановленная запись показывается человекочитаемым текстом, а не кодом и не сырой ошибкой; машинного текста отказа контракт не отдаёт вовсе, поэтому текст строится из причины остановки. Оракул — тест на ответе с признаком остановки и причиной.
- Файл больше предела отклоняется на экране до отправки, с названным числом, и
предел экран берёт из
GET /app/config, а не держит своей константой. Оракул — тест на файле сверх предела: запроса на загрузку нет, на экране предел числом, и другое число в ответеconfigменяет показанное.
Рамки
Записи звука в приложении не делаем — файл выбирают в системном диалоге. Список
прошлых записей не делаем, это records-list-screen.