100 lines
3.4 KiB
Markdown
100 lines
3.4 KiB
Markdown
## Общие сведения
|
||
- **Название проекта:** Сервис сбора статистики
|
||
- **Описание проекта:** Микросервис на *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
|
||
}
|
||
```
|