2.7 KiB
2.7 KiB
id, title, status, created
| id | title | status | created |
|---|---|---|---|
| 003 | Add CDEK provider adapter | DONE | 2026-03-07 |
Context
Phase 1 в spec/overview.md требует поддержку provider CDEK с OAuth2 authentication и маппингом расчёта тарифа.
Goal
Реализовать adapter interfaces и модули CDEK adapter: provider contract, OAuth2 token handling, HTTP client behavior, преобразование ответа в DeliveryPrice и чтение параметров CDEK из секции adapter YAML-конфига.
Constraints
- Только Adapter layer; без business decisions и sorting logic.
- Внешний IO должен оставаться внутри adapter modules.
- Timeout для CDEK должен быть 10 секунд согласно specification.
- Параметры CDEK (
base_url, OAuth2 credentials, retry policy, timeout, cache TTL) должны приходить из секцииadapterв.yamlконфиге. - Запрещён хардкод credentials и runtime-параметров адаптера.
- Не изменять файлы в
spec/.
Acceptance criteria
- Существует интерфейс
DeliveryProviderсо стабильным контрактомget_price(). - Модуль CDEK auth получает OAuth2 token через client credentials и переиспользует валидный token до истечения.
- CDEK client выполняет tariff request с timeout и retry behavior.
- CDEK mapper преобразует provider response в унифицированную schema
DeliveryPrice. - Adapter наружу предоставляет только provider-facing API, необходимый Service.
- Адаптер использует значения из секции
adapterYAML-конфига, включаяtimeout_seconds=10иcache_ttl_seconds=900по умолчанию.
Definition of Done
- Реализован base provider interface.
- Реализованы модули CDEK auth/client/mapper.
- CDEK adapter возвращает унифицированную price model при успешном ответе.
- Adapter tests покрывают auth refresh, timeout/retry и mapping cases.
Tests
- Добавить adapter unit tests для token lifecycle behavior.
- Добавить adapter tests для response mapping и HTTP error handling.
- Добавить tests, проверяющие применение параметров CDEK из секции
adapterYAML-конфига. - Для внешних HTTP взаимодействий использовать stubs/mocks.
Commands
poetry run pytest tests/adapters/delivery_providers/cdek -q