Не вказано
40 ставок
ТЕХНІЧНЕ ЗАВДАННЯРозробка системи Digital Signage для мережі рекламних екранів1. Загальний опис системиСистема призначена для віддаленого керування медіаконтентом (відео, зображення) на мережі телевізорів під управлінням Android TV.
Архітектура:Backend / Панель керування (Адмінка): PHP (Laravel / Yii2 або pure PHP) + MySQL.Frontend (Плеєр на ТВ): HTML5 / JavaScript (Single Page Application), який запускається на ТВ у повноекранному режимі через додаток Fully Kiosk Browser.2. Функціональні вимоги: Панель керування (Адмінка на PHP)2.1. Керування екранами (Телевізорами)Можливість додавання/видалення екранів у системі.Кожному екрану присвоюється: Назва (гео-точка), унікальний ID (device_token) та статус (Онлайн/Офлайн).Моніторинг (Пінг): Відображення статусу ТВ у реальному часі. Якщо ТВ не надсилав запитів більше ніж 5 хвилин, фарбувати його статус у червоний колір (Офлайн).
2.2. Керування контентом (Медіатека)Завантаження файлів (відео, зображення) на сервер.Видалення файлів (з автоматичним видаленням фізичного файлу з сервера).Можливість переглядати (та змінювати), на яких екранах транслюється кожний окремий медіафайл.Налаштування порядку відтворення файлів.
2.3. Серверне API (для зв'язку з ТВ)Реалізувати REST API (JSON):POST /api/ping — приймає від ТВ його ID, фіксує час останньої активності (для статусу Онлайн) та повертає поточну версію плейлиста.GET /api/file/device_token — віддає актуальний JSON-масив із посиланнями на медіафайли, їхнім порядком та налаштуваннями часу показу.3. Функціональні вимоги: Клієнтський плеєр (HTML5/JS на ТВ)Плеєр є вебсторінкою, яка відкрита на ТВ. Головне завдання клієнта — автономність.3.1. Кешування та синхронізація (Робота без інтернету)При старті плеєр запитує плейлист через API.Локальне сховище: Усі файли з плейлиста (відео/зображення) JS повинен завантажувати у внутрішню пам'ять браузера (використовуючи Cache API або IndexedDB). Стрімінг (програвання напряму з інтернету) заборонений.Синхронізація: Якщо на сервері додано новий контент, плеєр завантажує його у фоновому режимі, не перериваючи поточний показ. Після завершення завантаження — додає дотрансляції. Якщо контент видалено на сервері, плеєр має видалити його з локального кешу ТВ, щоб не забивати пам'ять пристрою.Офлайн-режим: При повному зникненні інтернету плеєр нескінченно крутить по колу останній успішно завантажений плейлист.
3.2. Відтворення та ротаціяЦиклічне відтворення контентутазгідно із заданим в адмінці порядком.Для зображень має налаштовуватися тривалість відображення у секундах (за замовчуванням 10 сек).Переходи між роликами мають бути плавними, без чорних екранів та помітного перезавантаження сторінки.
3.3. Логування та контроль помилок (Захист від збоїв)Обробка пошкоджених файлів: Якщо відеофайл пошкоджений і не може відтворитися, плеєр повинен пропустити його та увімкнути наступний за порядком, а не зависати на чорному екрані.Логи показів (Аналітика): Плеєр повинен записувати в локальну пам'ять факт кожного успішного відтворення ролика. При появі інтернету ці дані пачкою відправляються на сервер (POST /api/logs), щоб в адмінці можна було побачити статистику: "Ролик А на ТВ №3 був показаний 450 разів за добута 2365 разів всього".4. Вимоги до оптимізації під Android TVІнтерфейс плеєра не повинен містити жодних елементів керування (курсори, смуги прокручування, кнопки). Тільки чистий контент на весь екран.JS-код має бути оптимізований за пам'яттю (вчасно очищати невикористовувані DOM-елементи та об'єктні URL), оскільки бюджетні телевізори мають жорсткі обмеження щодо оперативної пам'яті і можуть аварійно закривати вкладку при витоку пам'яті через 12-24 години безперервної роботи.