Высокая сложностьВысокий уровень

Тестовое задание по Python от компании Python

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

В Контенте мы занимаемся агрегацией отелей поставщиков (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трогих сроков нет, но мы хотели бы получить от вас примерную оценку времени.

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

Источник задания