# Build 017.6 — Trading Service

**Engineering Build Document**

---

# Контроль документа

| Свойство | Значение |
|----------|-----------|
| Build | 017.6 |
| Название | Trading Service |
| Статус | **Accepted** |
| Подсистема | Trading |
| Layer | Trading |
| Тип | Architecture + Implementation |
| Версия | 1.0 |
| Язык | Русский |

---

# Цель Build

Создать единую публичную точку входа Trading Layer.

---

# Причина появления Build

После реализации компонентов:

- `TradingProtocol`;
- `TradingValidation`;
- `TradingRules`;

Trading Layer получил все необходимые внутренние элементы, однако отсутствовал компонент, объединяющий их в единый рабочий процесс.

Эту роль выполняет `TradingService`.

---

# Architecture

Создан компонент:

```text
TradingService
```

Он реализует официальный контракт:

```text
TradingProtocol
```

и обеспечивает последовательность выполнения:

```text
CoordinatorResult
        │
        ▼
TradingValidation
        │
        ▼
TradingRules
        │
        ▼
TradingDecision
```

---

# Architecture Review

Подтверждено:

- Service является единственной публичной точкой входа Trading Layer;
- Service принимает только `CoordinatorResult`;
- Service возвращает только `TradingDecision`;
- Service реализует `TradingProtocol`;
- Service делегирует проверку `TradingValidation`;
- Service делегирует формирование решения `TradingRules`;
- Service не содержит собственной торговой логики;
- Service не зависит от внутренних компонентов Runtime или Coordinator.

**Статус:** ✅ Passed

---

# ADR

Принято решение объединить внутренние компоненты Trading Layer через единый сервис.

`TradingService` становится единственной точкой взаимодействия внешних слоёв с Trading Layer.

Все внутренние компоненты Trading инкапсулируются внутри Service.

**Статус:** Accepted

---

# Implementation

Создан файл:

```text
app/src/trading/market_intelligence/trading/service.py
```

Реализован класс:

```text
TradingService
```

Публичный метод:

```python
decide(
    coordinator_result: CoordinatorResult,
) -> TradingDecision
```

Внутренние зависимости:

```text
TradingValidation
TradingRules
```

Последовательность работы:

```text
Validation
        ↓
Rules
        ↓
TradingDecision
```

---

# Compile Check

```bash
python -m compileall src/trading/market_intelligence
```

Результат:

```text
Passed
```

---

# Domain Review

Подтверждено:

- компонент является публичной точкой входа Trading Layer;
- принимает только `CoordinatorResult`;
- возвращает только `TradingDecision`;
- не содержит торговых правил;
- не изменяет `CoordinatorResult`;
- не обращается к Runtime / Coordinator internals;
- не работает с биржей;
- не исполняет сделки.

**Статус:** ✅ Passed

---

# Code Review

Проверка пройдена.

Подтверждено:

- `TradingService` реализует `TradingProtocol`;
- публичный метод только один;
- Validation и Rules не дублируются;
- отсутствуют лишние зависимости;
- отсутствует торговая логика.

Замечаний нет.

**Статус:** ✅ Passed

---

# Acceptance

Build завершён.

Выполнены:

- ✅ Development Strategy
- ✅ Architecture Design
- ✅ Architecture Review
- ✅ ADR
- ✅ Build Design
- ✅ Implementation
- ✅ Compile Check
- ✅ Domain Review
- ✅ Code Review
- ✅ Documentation

Статус Build:

```text
Accepted
```

---

# Итог Build

Build 017.6 завершает построение **Trading Foundation**.

Trading Layer полностью сформирован и включает:

```text
Trading

├── models
├── protocol
├── exceptions
├── validation
├── rules
└── service
```

Теперь Trading Layer обладает:

- единым публичным API;
- собственными моделями;
- собственным пространством исключений;
- механизмом предварительной проверки входных данных;
- базовыми правилами формирования торгового решения;
- сервисом-оркестратором.

Архитектурный фундамент Trading завершён.

---

# Следующий Build

```text
Build 018

Execution Layer Architecture
```