Skip to content

DmitriiKumancev/backendAv-assignment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание для стажёра Backend

Сервис динамического сегментирования пользователей

Проблема

В Авито часто проводятся различные эксперименты — тесты новых продуктов, тесты интерфейса, скидочные и многие другие. На архитектурном комитете приняли решение централизовать работу с проводимыми экспериментами и вынести этот функционал в отдельный сервис.

Задача

Требуется реализовать сервис, хранящий пользователя и сегменты, в которых он состоит (создание, изменение, удаление сегментов, а также добавление и удаление пользователей в сегмент)

Запуск приложения

make build
make run

Если приложение запускается впервые, то необходимо применить миграции к базе данных:

make migrate-up

Описание методов

Добавление сегмента

Пример запроса:

image

Пример ответа:

image

Удаление сегмента

Пример запроса:

image

Пример ответа:

image

Добавление и удаление сегментов для пользователя

Пример запроса:

image

Пример ответа:

image

Получение сегментов пользователя

Пример запроса:

image

Пример ответа:

image

Swagger

Swagger файл описан в директории docs

При работающем приложении можно посмотреть здесь

Схема бд

Схема бд описана в файле первой миграции

Неопределённости по тз

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

Решение:

  • В методах добавления и удаления сегментов поля обязательные
  • В остальных методах обязательным является только поле user_id

Что делать, если в методах добавления и удаления сегментов для пользователя не все имена сегментов возможно добавить или удалить

Может быть несколько сценариев, почему сегмент не может быть добавлен пользователю или удалён у пользователя:

  • Сегмента с такими именем не существует
  • Пользователь уже находится в сегменте, который мы хотели добавить
  • Пользователь не содержится в сегменте, который мы хотели удалить

Решение: Все невалидные сегменты игнорируются, и запрос проходит. В ответе запроса содержатся названия только тех сегментов, которые были успешно добавлены/удалены

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published