fix order form
This commit is contained in:
+8
-3
@@ -97,6 +97,9 @@
|
||||
- Для расчёта тарифа CDEK adapter принимает city identifiers из `DeliveryCalculationRequest`, находит запись в `cities_map`, берёт `cdek.code` и передаёт его в CDEK API
|
||||
|
||||
Для сценария создания заказа CDEK adapter принимает валидированную order model, отправляет контракт `Регистрация заказа (тип "доставка", до двери)` из `http-client.http` и возвращает внутреннюю response model без утечки HTTP-деталей в Service.
|
||||
Во внутреннем order flow `sender` и `recipient` содержат ровно одно поле `phone`, а CDEK adapter сериализует его в provider payload `phones` с одним элементом.
|
||||
Поле `services` в order flow является необязательным; при отсутствии значения adapter не отправляет `services` в CDEK payload.
|
||||
Поле `packages[*].weight` во входном order request задаётся в килограммах, а CDEK adapter конвертирует его в граммы перед отправкой в provider API.
|
||||
|
||||
### Adapter (`app/adapters/address_suggestions`)
|
||||
- `base.py` — абстрактный интерфейс `AddressSuggestionProvider`:
|
||||
@@ -173,11 +176,11 @@ comment: str | None
|
||||
sender:
|
||||
name: str
|
||||
email: str
|
||||
phones: list[{number: str}]
|
||||
phone: {number: str}
|
||||
recipient:
|
||||
name: str
|
||||
email: str
|
||||
phones: list[{number: str}]
|
||||
phone: {number: str}
|
||||
from_location:
|
||||
address: str
|
||||
city: str
|
||||
@@ -186,11 +189,13 @@ to_location:
|
||||
address: str
|
||||
city: str
|
||||
country_code: str
|
||||
services: list[{code: str, parameter: str}]
|
||||
services: list[{code: str, parameter: str}] | None
|
||||
packages: list[{number: str, weight: int, length: int, width: int, height: int, comment: str | None}]
|
||||
```
|
||||
|
||||
`from_location.address` и `to_location.address` должны содержать точные значения адреса, выбранные клиентом; order flow не выполняет address suggestion lookup.
|
||||
`sender.phone` и `recipient.phone` представляют единственный телефон для соответствующей стороны заказа; передача нескольких телефонов во входном API не поддерживается.
|
||||
`packages[*].weight` в `OrderCreateRequest` задаётся в килограммах, а в payload CDEK должен передаваться в граммах.
|
||||
|
||||
### Выходная: `OrderCreateResponse`
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user