ТЗ прикреплено в отдельном файле.
Необходимо создать панель управления блокировки видео-потоков по географическому признаку с серверов CDN
<!--[if !vml]-->Принцип работы приложения состоит в создании расписания заданий по блокировке.
Channel - Здесь производится выбор канала, для которого будет применяться правило. На изображении не показано. Может быть реализовано виде списка, закладок или любом другом удобном представлении.
Данные о каналах берутся из файла конфигурации.
Policy
Может быть три типа блокировок которые переключаются радио-кнопками:
Запретить все, кроме Азербайджана (по умолчанию). При выборе этого пункта, секция Countries должна перейти в неактивное состояние.
Разрешить только (множественный выбор из стран). AZ выбрано всегда по умолчанию.
Запретить только (множественный выбор из стран).
Countries - список с множественным выбором.
Time interval. Содержит поля задания даты и точного времени отрезка времени для которого будет действовать правило. Должна быть проверка на End date > Start date.
Значение по умолчанию для данных полей:
Start date -- текущая дата и время.
End date = Start date + 60 min
При выборе time interval секция EPG Event должна быть неактивной.
EPG Event
При выборе EPG Event секция time interval должна быть неактивной.
Значение по умолчанию -- текущая дата.
При нажатии кнопки Load Events должна появиться таблица с расписанием телеперадач на выбранный день. При чем, если дата совпадает с текущей, то таблица должна содержать только текущую и следующие за ней передачи, начало которых попадает на указанный день.
В таблице птичками можно выбрать передачи, для которых будет действовать правило.
Программа телепередач должна быть загружена из файла XMLTV, который будет заранее загружен на сервер. Если файла с расписанием на выбранные даты нет, то должно появиться сообщение об ошибке “No schedule!!!”.
При нажатии на кнопку “Add task” задание должно добавиться в таблицу. При этом, если были выбраны программы из EPG, то они должны отображаться отдельными строками.
При добавлении заданий должна осуществляться проверка, нет ли перекрытия по времени с уже существующими заданиями. Если таково имеется, то необходимо вывести сообщение “Overlap with existing task!”
Данные в таблице должны быть отсортированы по времени.
Current tasks -- таблица, содержащая список заданий.
Должна быть возможность выбирать птичками задания и при помощи кнопки “Delete selected” удалять их из списка и из системы.
На верху столбца с птичками должна быть главная птичка “Select all”.
2. Backend
Бэкэнд может быть реализован на любом из широко распространенных языков: PHP, Python, Node.js, JSP, ASP. Точно так же, как и база данных может быть выбрана произвольно: MySQL, MariaDB, SQLlite, PostgreSQL.
Основой для работы бэкенда должен быть файл конфигурации, в котором будут прописаны:
Данные для авторизации пользователей панели
IP-адреса стримеров Flussonic
логин/пароль для API
логин/пароль для БД
Список каналов с их алиасами, путями к файлам xmltv
Предположительно для составления расписания будет использоваться cron. Но также может использовать любой другой скедьюлер, на усмотрение разработчика.