vortex-task/README.md
2024-06-30 19:01:49 +03:00

3.4 KiB
Raw Blame History

Общие сведения

  • Название проекта: Сервис сбора статистики
  • Описание проекта: Микросервис на golang для сбора статистики
  • Цель проекта: Создать сервис с возможностью хранения статистики в базе данных

Требования к функциональности

Должно быть 4 api ручки: GetOrderBook(exchange_name, pair string) ([]*DepthOrder, error) SaveOrderBook(exchange_name, pair string, orderBook []*DepthOrder) error GetOrderHistory(client *Client) ([]*HistoryOrder, error) SaveOrder(client *Client, order *HistoryOrder) error

Технические требования

  • Язык программирования: Go 1.22
  • Библиотеки и фреймворки: Любые на ваш выбор
  • Архитектура: REST API
  • База данных: Лучше реализовать ClickHouse, но можно и Postgres

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

  • Производительность: Время отклика сервера не более 200 мс
  • Rps: до 200 на запись, до 100 на чтение

Тестирование

Тестирование: Unit-тесты для всех основных функций

Требования к документации

  • Документация кода: Комментарии к основным модулям и функциям
  • Пользовательская документация: Руководство пользователя

Детали реализации:

  • Таблица order_book
Столбец Тип данных
id int64
exchange string
pair string
asks []depthOrder
bids []depthOrder
  • Структура DepthOrder
type DepthOrder struct{
    Price   float64
    BaseQty float64
}
  • Таблица order_history
Столбец Тип данных
client_name string
exchange_name string
label string
pair string
side string
type string
base_qty float64
price float64
algorithm_name_placed string
lowest_sell_prc float64
highest_buy_prc float64
commission_quote_qty float64
time_placed time.Time
  • Структура HistoryOrder
type HistoryOrder struct{
    client_name             string
    exchange_name           string
    label                   string
    pair                    string
    side                    string
    type                    string
    base_qty                float64
    price                   float64
    algorithm_name_placed   string
    lowest_sell_prc         float64
    highest_buy_prc         float64
    commission_quote_qty    float64
    time_placed             time.Time
}
  • Структура Client
type Client struct{
    client_name     string
    exchange_name   string
    label           string
    pair            string
}