2025-05-07 00:25:34 +03:00
|
|
|
|
## Настройка и запуск
|
|
|
|
|
|
1. **Сборка и запуск сервисов (API Server и Worker):**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker-compose up --build
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Примеры API запросов (cURL)
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Отправка (POST /trades)
|
|
|
|
|
|
|
|
|
|
|
|
* **Успешный запрос:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X POST -H "Content-Type: application/json" -d '{
|
|
|
|
|
|
"account": "ACC001",
|
|
|
|
|
|
"symbol": "EURUSD",
|
|
|
|
|
|
"volume": 1.5,
|
|
|
|
|
|
"open": 1.0750,
|
|
|
|
|
|
"close": 1.0780,
|
|
|
|
|
|
"side": "buy"
|
|
|
|
|
|
}' http://localhost:8080/trades
|
|
|
|
|
|
```
|
|
|
|
|
|
Ожидаемый ответ: `HTTP/1.1 200 OK` (без тела ответа, если не изменено).
|
|
|
|
|
|
|
|
|
|
|
|
* **Запрос с ошибкой валидации (неверный формат symbol):**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X POST -H "Content-Type: application/json" -d '{
|
|
|
|
|
|
"account": "ACC002",
|
|
|
|
|
|
"symbol": "eurusd_invalid",
|
|
|
|
|
|
"volume": 0.5,
|
|
|
|
|
|
"open": 1.1200,
|
|
|
|
|
|
"close": 1.1250,
|
|
|
|
|
|
"side": "sell"
|
|
|
|
|
|
}' http://localhost:8080/trades
|
|
|
|
|
|
```
|
|
|
|
|
|
Ожидаемый ответ: `HTTP/1.1 400 Bad Request` (с телом ошибки, описывающим проблему валидации).
|
|
|
|
|
|
|
|
|
|
|
|
* **Запрос с отсутствующим обязательным полем (например, account):**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X POST -H "Content-Type: application/json" -d '{
|
|
|
|
|
|
"symbol": "GBPUSD",
|
|
|
|
|
|
"volume": 1.0,
|
|
|
|
|
|
"open": 1.2600,
|
|
|
|
|
|
"close": 1.2650,
|
|
|
|
|
|
"side": "buy"
|
|
|
|
|
|
}' http://localhost:8080/trades
|
|
|
|
|
|
```
|
|
|
|
|
|
Ожидаемый ответ: `HTTP/1.1 400 Bad Request`.
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Получение статистики (GET /stats/{acc})
|
|
|
|
|
|
|
|
|
|
|
|
* **Для существующего аккаунта (после обработки заявок Worker'ом):**
|
|
|
|
|
|
Замените `{ACC001}` на реальный ID аккаунта.
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X GET http://localhost:8080/stats/ACC001
|
|
|
|
|
|
```
|
|
|
|
|
|
Ожидаемый ответ (пример):
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"account": "ACC001",
|
|
|
|
|
|
"trades": 1,
|
|
|
|
|
|
"profit": 450.00
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* **Для несуществующего аккаунта или аккаунта без сделок:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X GET http://localhost:8080/stats/UNKNOWN_ACC
|
|
|
|
|
|
```
|
|
|
|
|
|
Ожидаемый ответ:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"account": "UNKNOWN_ACC",
|
|
|
|
|
|
"trades": 0,
|
|
|
|
|
|
"profit": 0
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. Проверка состояния сервиса (GET /healthz)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X GET http://localhost:8080/healthz
|
2025-05-05 22:58:06 +00:00
|
|
|
|
```
|
2025-05-07 00:25:34 +03:00
|
|
|
|
Ожидаемый ответ: `HTTP/1.1 200 OK` (тело ответа может быть пустым или содержать "OK").
|
2025-05-05 22:58:06 +00:00
|
|
|
|
|
|
|
|
|
|
|