Files
transcriber/tasks/items/records-list-screen.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

4.2 KiB

Сделать экран списка своих записей и чтения текста

  • Тип: feature
  • Категория: Очередь — Список и экран одной записи берутся после экрана загрузки
  • Зачем: Расшифровка сегодня доходит одним сообщением и теряется в переписке; вернуться к ней через неделю нечем.

Список своих записей открывается и листается, а готовый текст читается и копируется целиком.

Берётся после upload-and-status-screen.

Затрагивает

  • новый экран списка и экран одной записи;
  • постраничное чтение из контракта API;
  • подпись записи в строке списка: заголовок, а пока его нет — имя файла отправителя;
  • чтение текста отдельным адресом и показ его репликами со временем;
  • копирование текста в буфер обмена;
  • показ записи, которая ещё в работе, — тем же рубежом, что на экране загрузки.

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

  • Список показывает записи вошедшего, новые сверху, и листается дальше первой страницы. Оракул — тест экрана на подставном API с двумя страницами.
  • Строка списка подписана заголовком, а у записи без заголовка — именем файла отправителя. Оракул — тест на двух записях: с заголовком и без.
  • Текст готовой записи открывается целиком, без деления на части. Оракул — тест на записи с текстом в сотни килобайт: на экране весь текст.
  • Текст копируется одним действием. Оракул — тест: после действия в буфере обмена тот же текст.
  • Запись в работе показывается рубежом и доходит до текста без перезагрузки экрана. Оракул — тест: подставной API отвечает рубежом submitted, затем done; экран переходит к тексту сам.

Учесть от ревью 2026-08-12: имя файла в хранилище несёт хвост имени, данного отправителем, — расширение берётся из него дословно, и запись разговор.тайное-слово ложится на диск именем с этим хвостом. Выхода за каталог хранения при этом нет, проверено пятнадцатью враждебными именами. Наружу это имя не выходит и теперь: аудио отдаётся своим адресом по идентификатору записи, а не ссылкой хранилища, и имени файла в ней нет. На страницу попадает другое — имя, данное отправителем, своей колонкой записи, и попадает намеренно: по нему человек узнаёт свою запись. Отсюда обязанность экрана — показывать его текстом, а не разметкой.

Рамки

Поиска по тексту не делаем. Переименование записи, возврат её в работу и журнал событий — audiorecord-actions; удаление — delete-record, проигрывание — play-recording-in-app. Правки текста не делаем — это граница из паспорта: расшифровку отдаём как есть.