- 11 записей типа goal закрыты с причиной, называющей задачи-наследники; ROADMAP.md удалён, индекс остался один — BACKLOG.md; - 33 записи переписаны: ссылка «Двигает пункты N «Завершения» цели» уступила место прямому утверждению — без целей номера пунктов вели в никуда; - шапка BACKLOG.md размечена парой <!-- стадия -->, порядок строк теперь объявлен зависимостью, а не важностью.
4.4 KiB
✨ Проигрывать загруженную запись на экране записи
- Тип: feature
- Категория: Очередь — Проигрывание живёт на экране записи, которого до списка нет.
- Зачем: Послушать загруженное приложение не даёт, а самой копии для этого у задачи нет: указатель на файл перезаписывается на каждом шаге конвейера и у готовой задачи ведёт на объект в Object Storage.
Запись слушается на её экране, а не скачивается файлом.
Заметка владельца от 2026-08-12. Копии на диске остаются все три — исходник,
ogg после конвертации и запись об объекте, — но job.FileID на каждом шаге
указывает на последнюю: у задачи в done он ведёт на объект Object Storage, а
местные копии не связаны с задачей ничем. Значит, задача не только про экран:
проигрываемую копию сперва нужно к записи привязать.
Берётся после records-list-screen — экран одной записи делает она.
Затрагивает
- связь задачи с копией: сегодня
transcribe_jobs.file— одно поле на одну копию, и шаг схемы придётся добавлять; - контракт HTTP API из
json-api-for-spa— адрес проигрываемой копии в ответе о записи; - экран одной записи из
records-list-screen; - отдачу файла хранилищем:
/api/files/...отвечает наRangeсам, ноaudio/oggне входит в перечень типов, которые хранилище отдаёт сContent-Disposition: inline, — ogg-копия уходит вложением; - периметр из ADR-2026-08-12: ссылка на файл открыта знанием записи, и экран делает её видимой странице;
docs/architecture.md— какая копия считается проигрываемой.
Критерии приёмки
- Готовая запись проигрывается с её экрана, без скачивания файла. Оракул — тест экрана на подставном API: у проигрывателя есть источник, и он начинает играть.
- Задача в
doneуказывает на копию, пригодную для браузера. Оракул — тест конвейера: после полного прохода у задачи есть адрес местной копии, а не только ключ объекта. - Запись, ещё не дошедшую до текста, экран тоже даёт послушать. Оракул — тест на
задаче в состоянии
transcribe: проигрыватель на экране есть. - Копия отдаётся так, что её берёт проигрыватель браузера, и перемотка работает
на записи длиннее часа. Оракул — два запроса к адресу копии: обычный отвечает
типом и заголовком
Content-Disposition, при которых элементaudioиграет, а запрос сRange— кодом206и запрошенным куском.
Рамки
Скачивания файла, обрезки и синхронизации текста со звуком не делаем. Записи звука в приложении не делаем — это граница из паспорта. Формат хранения и раскладку каталога данных не трогаем: они объявлены необратимыми, а шаг схемы, уехавший на сервер, не переписывается — изменение только новым файлом шага.