Добавлен провайдер доставки CSE: SOAP-адаптер (Calc + SaveDocuments), маршрутизация init-payment по провайдеру, обобщение tariff_code до строки, география CSE в cities_map
Deploy / deploy (push) Failing after 52s
Deploy / deploy (push) Failing after 52s
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
---
|
||||
id: 038
|
||||
title: Route init-payment validation and registration by provider
|
||||
status: TODO
|
||||
created: 2026-05-30
|
||||
---
|
||||
|
||||
## Context
|
||||
С появлением второго провайдера CSE `AggregatorService` должен выбирать адаптер
|
||||
валидации цены и регистрации заказа по провайдеру выбранного тарифа. Сейчас сервис
|
||||
жёстко использует единственный CDEK-адаптер. Поле `provider` уже присутствует в
|
||||
`DeliveryPrice`/`SystemDataTariff`. Регистрация заказа выполняется при уведомлении
|
||||
об оплате TBank. Поллинг статуса и email в этой задаче не затрагиваются.
|
||||
|
||||
## Goal
|
||||
Маршрутизировать валидацию цены и регистрацию заказа по
|
||||
`request.system_data.tariff.provider`, подключить `CSEProvider` в DI рядом с CDEK,
|
||||
сохранять выбранного провайдера и номер заказа CSE в persistence.
|
||||
|
||||
## Constraints
|
||||
- Controller вызывает Service без бизнес-ветвления.
|
||||
- Service не содержит чистых бизнес-правил; маршрутизация — оркестрация.
|
||||
- Не изменять контракт API, кроме уже обобщённого `tariff_code`.
|
||||
- Колонки `cdek_*` не изменять; добавить `provider` и `cse_order_number` миграцией.
|
||||
- Не изменять файлы в `spec/`.
|
||||
|
||||
## Acceptance criteria
|
||||
- `GET /api/v1/delivery/calculate` возвращает агрегированные тарифы CDEK и CSE.
|
||||
- `AggregatorService` выбирает адаптер валидации/регистрации по имени провайдера
|
||||
тарифа; общий тип результата регистрации не привязан к CDEK.
|
||||
- При оплате заказа с тарифом CSE регистрация выполняется через `CSEProvider`;
|
||||
в `orders` сохранены `provider` и `cse_order_number`.
|
||||
- DI в контроллере доставки инстанцирует и подключает `CSEProvider`.
|
||||
|
||||
## Definition of Done
|
||||
- [ ] `AggregatorService` маршрутизирует по провайдеру (mapping адаптеров).
|
||||
- [ ] Обобщён тип результата регистрации заказа.
|
||||
- [ ] Модель `Order` и репозиторий дополнены (`provider`, `cse_order_number`,
|
||||
`mark_cse_order_registered`); добавлена миграция.
|
||||
- [ ] DI контроллера подключает CDEK и CSE.
|
||||
- [ ] Тесты маршрутизации валидации/регистрации по провайдеру проходят.
|
||||
|
||||
## Tests
|
||||
- Service unit-тесты маршрутизации (моки CDEK/CSE адаптеров).
|
||||
- Тесты persistence для `provider`/`cse_order_number`.
|
||||
|
||||
## Commands
|
||||
- `poetry run pytest tests/services -q`
|
||||
Reference in New Issue
Block a user