gofavorites

module
v0.0.0-...-aef14cd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2024 License: Unlicense

README

Техническое задание

Микро-сервис по работе с выбранными биржевыми инструментами GoFavorites

Общие требования

GoFavorites представляет собой микро-сервис, позволяющую пользователю надёжно и безопасно хранить выбранные биржевые инструменты и прочую приватную информацию.

Сервер должен реализовывать следующую бизнес-логику:
  • обращение к внешнему микро-сервису для получения информации о зарегистрированных, аутентифицированных и авторизированных пользователях;
  • хранение приватных данных;
  • синхронизация данных между несколькими шардами (блоками) автоматизированной системы мобильных инвестиций для одного владельца;
  • передача приватных данных владельцу по запросу.
Функции, реализация которых остаётся на усмотрение исполнителя:
  • создание, редактирование и удаление данных на стороне сервера;
  • формат работы с внешним микро-сервисом по регистрации аутентификация и авторизация пользователей;
  • выбор хранилища и формат хранения данных;
  • обеспечение безопасности передачи и хранения данных;
  • протокол взаимодействия клиента и сервера;
  • механизмы аутентификации пользователя и авторизации доступа к информации.
Дополнительные требования:
  • сервер должен распространяться в виде docker-приложения с возможностью запуска на платформах Linux и Mac OS;
  • сервер должен давать пользователю возможность получить информацию о версии и дате сборки бинарного файла клиента.
Типы хранимой информации
  • глобальный идентификатор пользователя (является персональными данными);
  • произвольные текстовые данные;
  • данные об биржевых инструментах.

Для любых данных должна быть возможность хранения произвольной текстовой метаинформации (принадлежность данных к веб-сайту, личности или банку, списки одноразовых кодов активации и прочее).

Абстрактная схема взаимодействия с системой

Ниже описаны базовые сценарии взаимодействия пользователя с системой. Они не являются исчерпывающими — решение отдельных сценариев (например, разрешение конфликтов данных на сервере) остаётся на усмотрение исполнителя.

Для нового выбранного биржевого инструмента пользователя:
  1. Пользователь проходит процедуру первичной регистрации и аутентификации на внешнем микро-сервисе.
  2. Пользователь проходит процедуру авторизации на микро-сервисе GoFavorites.
  3. Пользователь имеет возможность добавить новый биржевой инструмент на микро-сервисе GoFavorites.
  4. Добавленный инструмент сохранятся как на текущем шарде (блоке) так и во внешнюю систему синхронизации между шардами ( блоками).
  5. Для обеспечения синхронизации информации о биржевых инструментах пользователя необходимо предусмотреть версионирование данных.
Для существующего биржевого инструмента пользователя:
  1. Пользователь проходит процедуру первичной аутентификации на внешнем микро-сервисе.
  2. Пользователь проходит процедуру авторизации на микро-сервисе GoFavorites.
  3. При перемещении пользователя между шардами (блоками) необходимо синхронизировать биржевые инструменты пользователя по версии с помощью микро-сервиса GoFavorites и внешней системы синхронизации.
  4. Пользователь имеет возможность получить актуальную информацию о своих биржевых инструментах на микро-сервисе GoFavorites.
  5. Пользователь имеет возможность удалить биржевые инструменты.
Тестирование и документация

Код всей системы должен быть покрыт юнит-тестами не менее чем на 80%. Каждая экспортированная функция, тип, переменная, а также пакет системы должны содержать исчерпывающую документацию.

Необязательные функции

Перечисленные ниже функции необязательны к имплементации, однако позволяют лучше оценить степень экспертизы исполнителя. Исполнитель может реализовать любое количество из представленных ниже функций на свой выбор:

  • поддержка данных типа OTP (one time password);
  • использование бинарного протокола;
  • наличие функциональных и/или интеграционных тестов;
  • описание протокола взаимодействия клиента и сервера в формате Swagger.

«GoFavorites»

Directories

Path Synopsis
cmd
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal
alog
Package alog кастомизация slog логгера.
Package alog кастомизация slog логгера.
controllers
Package controllers REST-ful (endpoints) конечные точки REST веб-сервиса.
Package controllers REST-ful (endpoints) конечные точки REST веб-сервиса.
controllers/dto
Package dto TODO.
Package dto TODO.
domain
Package domain TODO.
Package domain TODO.
domain/batch
Package batch TODO.
Package batch TODO.
domain/entity
Package entity TODO.
Package entity TODO.
domain/memory
Package memory Is a copy of the storage memory from the external storage packet as a purpose to test the behavior in the unittests when using a storages from these packets
Package memory Is a copy of the storage memory from the external storage packet as a purpose to test the behavior in the unittests when using a storages from these packets
domain/mongo
Package mongo TODO.
Package mongo TODO.
domain/repo
Package repo TODO.
Package repo TODO.
env
Package env работа с настройками и окружением.
Package env работа с настройками и окружением.
interceptors
Package interceptors TODO.
Package interceptors TODO.
jwt
Package jwt TODO.
Package jwt TODO.
services
Package services сервисы бизнес логики.
Package services сервисы бизнес логики.
tool
Package tool TODO.
Package tool TODO.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL