Files
g2s-aggregator/spec/tasks/003_add_cdek_provider_adapter.md
T
Раис Юсупалиев ff319170a2 Init
2026-03-07 13:20:53 +03:00

2.0 KiB
Raw Blame History

id, title, status, created
id title status created
003 Add CDEK provider adapter TODO 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.

Constraints

  • Только Adapter layer; без business decisions и sorting logic.
  • Внешний IO должен оставаться внутри adapter modules.
  • Timeout для CDEK должен быть 10 секунд согласно specification.
  • Не изменять файлы в 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.

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.
  • Для внешних HTTP взаимодействий использовать stubs/mocks.

Commands

  • poetry run pytest tests/adapters/delivery_providers/cdek -q