Giter Site home page Giter Site logo

lyuvolkova / avitotest-dynseg Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 53 KB

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

Dockerfile 1.12% Go 97.64% Makefile 1.24%

avitotest-dynseg's Introduction

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

Тестовое задание для Avito стажировки.

Запуск

Для запуска требуется установленные программы:

  • Docker и docker compose
  • Make
  • Curl

Команда для запуска сервиса:

docker compose up -d

Сервис будет доступен на порту 8080.

Описание методов можно найти в swagger.json файле.

Тесты

Перед запуском тестов необходимо запустить сервис.

make test

Примеры запросов

Для IDE Goland можно использовать примеры из папки examples.

Создание сегмента

curl -X 'POST' \
  'http://localhost:8080/segments' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "slug": "avito_discount_90"
}'

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

curl -X 'DELETE' \
  'http://localhost:8080/segments/avito_discount_70' \
  -H 'accept: application/json'

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

curl -X 'PATCH' \
  'http://localhost:8080/users/89/segments' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "add_slug": [
    "avito_discount_70",
    "avito_discount_90"
  ],
  "delete_slug": [
    "avito_discount_30"
  ]
}'

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

curl -X 'GET' \
  'http://localhost:8080/users/89/segments' \
  -H 'accept: application/json'

Особенности работы сервиса

  1. Если сегмент не существует, то при добавлении/удалении пользователя в сегмент, сервис не вернет ошибку и не добавит/удалит его в этот сегмент.
  2. Тест в начале и конце работы очищает сегменты и пользователей в них для чистого прогона.
  3. Client для тестов сгенерирован с помощью go-swagger. В сгенерированном коде есть ошибки с полем Error. Если запускать команду make swagger, client будет перезаписан с ошибками и их необходимо исправить вручную.

avitotest-dynseg's People

Contributors

lyuvolkova avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.