Прорешать вместе тестовое задание dJango + drf + (celery???)

5 000 руб. за проект
03 марта 2023, 16:31 • 4 отклика • 123 просмотра
Нам нужно определить API для нашей медиаплатформы, которая позволяет нам отображать содержимое следуя иерархической структуре.
Контент может содержать файлы (такие как видео, pdf или текст), набор произвольных метаданных(json field как я понял)
связанных с ним (, авторы, жанр и т.д.) и рейтинг
значение, которое представляет собой десятичное число от 0 до 10.

Мы организуем содержимое платформы с помощью каналов. Канал
хранит иерархическую структуру и имеет название, язык и изображение.
Канал может содержать ссылки либо на другие каналы, либо на контент.
Если канал имеет подканалы, он не может иметь под собой содержимое, и наоборот, если канал имеет
содержимое, то под ним не может находиться ни один подканал.
Канал должен иметь по крайней мереодно содержимое или один подканал.
Подканалы канала могут также иметь больше подканалов(вот тут я понял что нужно дерево)

Рейтинг канала является средним значением рейтингов всех каналов, находящихся под ним, если
канал не имеет подканалов, его рейтинг является средним из рейтингов его содержимого. Если
канал не имеет содержимого, он не влияет на рейтинг своего родителя, так как его значение
не определено.
Каналы не могут хранить этот рейтинг напрямую (потому что структура может измениться в любой момент),
поэтому нам нужен способ вычислить его из структуры содержимого, лежащего в их основе.

Требования, которые мы предъявляем к этому тесту, следующие:
● Создайте проект Django и DRF для определения API
● Определить модели для представления структуры, описанной выше
● Предоставить способ эффективного подсчета рейтингов каждого канала и экспортировать их в csv файл, отсортированный по рейтингу. (т.е. каналы с самым высоким рейтингом сверху).
Файл csv содержит два столбца: <название канала>, <средний рейтинг>.
● Создайте конечные точки для получения каналов, их подканалов и их содержимого.
● Добавьте модульные тесты для тестирования алгоритма рейтинга каналов
● Используйте контейнеры для запуска сервисов.
Получите бонусные баллы за:
● Добавление групп к каналам. Учитывая, что каждый канал может принадлежать
нескольким группам.
○ Разрешить фильтрацию по группам в Channels API.
Примечание: Учитывайте, что набор групп любого канала должен быть включен в набор групп его
набор групп его родителя
-Высокое тестовое покрытие с помощью модульных тестов
-Добавление аннотаций типов (бонус за прохождение строгой проверки типов в mypy)
-Добавление CI/CD (предпочтительнее Gitlab CI, но вы можете использовать все, что захотите)
-Использование базы данных, отличной от SQLite.
-Вы можете использовать любые библиотеки, СУБД или инструменты, необходимые вам для выполнения задачи.