New tasks
This commit is contained in:
+3
-2
@@ -50,6 +50,7 @@
|
||||
### Service (`app/services/aggregator.py`)
|
||||
- `AggregatorService.get_all_prices(request: DeliveryRequest) -> list[DeliveryPrice]`
|
||||
- Распределяет запросы по всем зарегистрированным провайдерам через `asyncio.gather(..., return_exceptions=True)`
|
||||
- Принимает от каждого провайдера список тарифов и объединяет их в единый список
|
||||
- Фильтрует упавшие результаты
|
||||
- Сортирует тарифы по цене
|
||||
- `AggregatorService.create_order(request: OrderCreateRequest) -> OrderCreateResponse`
|
||||
@@ -74,11 +75,11 @@
|
||||
```python
|
||||
class DeliveryProvider(ABC):
|
||||
name: str
|
||||
async def get_price(self, request: DeliveryRequest) -> DeliveryPrice: ...
|
||||
async def get_prices(self, request: DeliveryRequest) -> list[DeliveryPrice]: ...
|
||||
```
|
||||
- `cdek/client.py` — HTTP-клиент (httpx AsyncClient), аутентификация, ретраи, таймаут (10с)
|
||||
- `cdek/auth.py` — управление OAuth2-токеном
|
||||
- `cdek/mapper.py` — ответ CDEK → `DeliveryPrice`
|
||||
- `cdek/mapper.py` — ответ CDEK → `list[DeliveryPrice]`
|
||||
- `cdek/order_mapper.py` — request/response mapping для регистрации заказа CDEK
|
||||
- Каждый адаптер владеет своей конфигурацией; наружу экспонирует только service-facing methods, необходимые соответствующему use-case
|
||||
|
||||
|
||||
Reference in New Issue
Block a user