Skip to content

Latest commit

 

History

History
73 lines (52 loc) · 3.66 KB

django-hotels-api.md

File metadata and controls

73 lines (52 loc) · 3.66 KB

Тестовое задание в Контент

В Контенте мы занимаемся агрегацией отелей поставщиков (supplier), объединяя одинаковые отели от разных поставщиков в единую сущность (мета-отель).

В этом задании мы предлагаем реализовать базовый сервис (API) для работы с отелями. Для дополнительного контекста и перспективы, представьте что это ключевой сервис в вашем тревел стартапе.

Функциональность

Список API, которые должны быть покрыты в этом задании:

  • Создать отель поставщика
  • Объединить 1 и более отелей поставщиков в один мета-отель
  • Получить список мета-отелей и входящих в них отелей
  • Перепривязать отель к другому мета-отелю
  • Получить историю привязки отеля (к каким мета-отелям в какой момент времени он был привязан)

Требования и ограничения

  • Авторизация/аутентификация не нужна
  • Отель может быть привязан только к одному мета-отелю в один момент времени
  • В мета-отеле должен быть минимум один отель
  • Отель можно отвязать от мета-отеля и привязать к другому

Пример данных

Мета-отель:

id: mercure_pattaya

id: windways

Отель:

id: 1
name: Mercure Pattaya
supplier_id: AAA

id: 2
name: Mercure Pattaya
supplier_id: BBB

id: 3
name: Windways Hotel
supplier_id: AAA

Оценка

Цель этого тестового задания - увидеть ваш лучший/самый идиоматичный код на Python/Django.

Мы ожидаем увидеть:

  • Документацию API
  • README с описанием как запустить проект, запустить тесты и т.д
  • Чистую архитектуру, с корректной связанностью кода (decoupling), complexity isolation
  • Аккуратный, понятный, поддерживаемый код, с наличием комментариев к коду (если нужны)
  • Код на публичной платформе (github/gitlab/bitbucket)
  • Отсутствие "мертвого" кода (т.е пустые модули, неиспользуемые функции и параметры и т.д)
  • Тесты (доказательство работоспособности кода)
  • Реализация на Django + любой REST или RPC фреймворк, с которым вам комфортно
  • PostgreSQL в качестве БД (помните про блокировки, транзакции, race conditions)
  • Сервис корректно работает, если запущен в нескольких экземплярах (инстансах)
  • Проект должен запускаться через docker-compose

Вопросы и сроки

Cтрогих сроков нет, но мы хотели бы получить от вас примерную оценку времени.

Не стесняйтесь задавать вопросы по заданию, если таковые возникнут.