Add video as a media kind in photos: streaming upload with per-kind limits, ffprobe metadata, poster frame reusing the image variant pipeline, and a playback object (remux when web-compatible, else h264/yuv420p/aac transcode). Video jobs run on a separate pool with a long lease. Frontend gains a video viewer, grid badge/duration and video upload.
3.2 KiB
3.2 KiB
Spec Delta
MODIFIED Requirements
Requirement: Журнал объектов
Каждый физический объект SHALL иметь ровно одну запись в слое метаданных с ключом, MIME-типом, размером, габаритами и состоянием; фото SHALL ссылаться на объекты по ролям original, thumb, medium, preview и playback.
Scenario: Привязка ролей
- WHEN фото загружено и обработано
- THEN фото ссылается на объект-оригинал и, когда они готовы, на объекты thumb, medium и preview
Scenario: Оригинал без вариантов
- WHEN варианты ещё не сгенерированы
- THEN фото доступно с оригиналом, а thumb, medium и preview отсутствуют
Scenario: Привязка роли воспроизведения
- WHEN видео обработано
- THEN медиа ссылается на объект playback наряду с оригиналом и постером
Requirement: Генерация вариантов
Генерация вариантов SHALL выполняться через надёжную очередь заданий с однократным выполнением и повтором при сбое; готовый результат SHALL транслироваться подписчикам альбома. Очередь SHALL поддерживать настраиваемую пропускную способность, SHALL обрабатывать более свежие фото раньше остальных и SHALL различать короткие задания изображений и длительные задания видео.
Scenario: Повтор после рестарта
- WHEN процесс перезапускается с незавершёнными заданиями
- THEN генерация вариантов продолжается
Scenario: Событие после генерации
- WHEN варианты фото готовы
- THEN подписчикам альбома публикуется событие обновления этого фото
Scenario: Приоритет свежих фото
- WHEN в очереди есть готовые к обработке задания разного возраста
- THEN система обрабатывает более свежие фото раньше
Scenario: Настраиваемая пропускная способность
- WHEN задан уровень параллелизма генерации
- THEN система обрабатывает варианты с этим уровнем параллелизма
Scenario: Длительное задание видео
- WHEN выполняется длительная подготовка видео
- THEN задание удерживается на весь срок выполнения и не вытесняет генерацию вариантов изображений