vortex-task/README.md

101 lines
3.4 KiB
Markdown
Raw Normal View History

2024-06-30 16:01:49 +00:00
## Общие сведения
- **Название проекта:** Сервис сбора статистики
- **Описание проекта:** Микросервис на *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
}
```