## Настройка и запуск 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 ``` Ожидаемый ответ: `HTTP/1.1 200 OK` (тело ответа может быть пустым или содержать "OK").