# ✨ Проигрывать загруженную запись на экране записи - **Тип:** feature - **Категория:** Очередь - **Зачем:** Послушать загруженное приложение не даёт, а самой копии для этого у задачи нет: указатель на файл перезаписывается на каждом шаге конвейера и у готовой задачи ведёт на объект в Object Storage. - **Теги:** goal:web-access Двигает пункт 7 «Завершения» цели: запись слушается на её экране, а не скачивается файлом. Заметка владельца от 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/adr/ADR-2026-08-12-file-link-open-but-not-logged.md): ссылка на файл открыта знанием записи, и экран делает её видимой странице; - `docs/architecture.md` — какая копия считается проигрываемой. ## Критерии приёмки - Готовая запись проигрывается с её экрана, без скачивания файла. Оракул — тест экрана на подставном API: у проигрывателя есть источник, и он начинает играть. - Задача в `done` указывает на копию, пригодную для браузера. Оракул — тест конвейера: после полного прохода у задачи есть адрес местной копии, а не только ключ объекта. - Запись, ещё не дошедшую до текста, экран тоже даёт послушать. Оракул — тест на задаче в состоянии `transcribe`: проигрыватель на экране есть. - Копия отдаётся так, что её берёт проигрыватель браузера, и перемотка работает на записи длиннее часа. Оракул — два запроса к адресу копии: обычный отвечает типом и заголовком `Content-Disposition`, при которых элемент `audio` играет, а запрос с `Range` — кодом `206` и запрошенным куском. ## Рамки Скачивания файла, обрезки и синхронизации текста со звуком не делаем. Записи звука в приложении не делаем — это граница цели. Формат хранения и раскладку каталога данных не трогаем: они объявлены необратимыми, а шаг схемы, уехавший на сервер, не переписывается — изменение только новым файлом шага.