Новая задача на правки
This commit is contained in:
@@ -4,3 +4,4 @@
|
|||||||
__pycache__
|
__pycache__
|
||||||
http-client.private.env.json
|
http-client.private.env.json
|
||||||
scripts
|
scripts
|
||||||
|
.codex
|
||||||
|
|||||||
+4
-3
@@ -25,15 +25,16 @@
|
|||||||
| 016 | DONE | 2026-03-14 | Add CDEK order registration adapter | `spec/tasks/016_add_cdek_order_registration_adapter.md` |
|
| 016 | DONE | 2026-03-14 | Add CDEK order registration adapter | `spec/tasks/016_add_cdek_order_registration_adapter.md` |
|
||||||
| 017 | DONE | 2026-03-14 | Return all tariffs from CDEK price calculation | `spec/tasks/017_return_all_cdek_tariffs.md` |
|
| 017 | DONE | 2026-03-14 | Return all tariffs from CDEK price calculation | `spec/tasks/017_return_all_cdek_tariffs.md` |
|
||||||
| 018 | DONE | 2026-03-16 | Add optional parcel type filter to price request | `spec/tasks/018_add_optional_parcel_type_filter_to_price_request.md` |
|
| 018 | DONE | 2026-03-16 | Add optional parcel type filter to price request | `spec/tasks/018_add_optional_parcel_type_filter_to_price_request.md` |
|
||||||
| 019 | TODO | 2026-03-14 | Add CDEK order creation endpoint | `spec/tasks/019_add_cdek_order_creation_endpoint.md` |
|
| 019 | DONE | 2026-03-14 | Add CDEK order creation endpoint | `spec/tasks/019_add_cdek_order_creation_endpoint.md` |
|
||||||
| 020 | DONE | 2026-03-21 | Rename price request model and use cities_map for CDEK codes | `spec/tasks/020_rename_price_request_model_and_use_cities_map_for_cdek_codes.md` |
|
| 020 | DONE | 2026-03-21 | Rename price request model and use cities_map for CDEK codes | `spec/tasks/020_rename_price_request_model_and_use_cities_map_for_cdek_codes.md` |
|
||||||
| 021 | DONE | 2026-03-25 | Add address suggestion adapter and country provider mapping | `spec/tasks/021_add_address_suggestion_adapter_and_country_mapping.md` |
|
| 021 | DONE | 2026-03-25 | Add address suggestion adapter and country provider mapping | `spec/tasks/021_add_address_suggestion_adapter_and_country_mapping.md` |
|
||||||
| 022 | DONE | 2026-03-25 | Add address suggestion endpoint | `spec/tasks/022_add_address_suggestion_endpoint.md` |
|
| 022 | DONE | 2026-03-25 | Add address suggestion endpoint | `spec/tasks/022_add_address_suggestion_endpoint.md` |
|
||||||
| 023 | DONE | 2026-03-29 | Add Yandex Geosuggest address suggestion adapter and CIS routing | `spec/tasks/023_add_yandex_geosuggest_address_suggestion_adapter.md` |
|
| 023 | DONE | 2026-03-29 | Add Yandex Geosuggest address suggestion adapter and CIS routing | `spec/tasks/023_add_yandex_geosuggest_address_suggestion_adapter.md` |
|
||||||
| 024 | DONE | 2026-03-29 | Add TomTom address suggestion adapter and Europe routing | `spec/tasks/024_add_tomtom_address_suggestion_adapter.md` |
|
| 024 | DONE | 2026-03-29 | Add TomTom address suggestion adapter and Europe routing | `spec/tasks/024_add_tomtom_address_suggestion_adapter.md` |
|
||||||
|
| 025 | TODO | 2026-04-03 | Remove company from Create Delivery Order parties | `spec/tasks/025_remove_company_from_create_delivery_order.md` |
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
- Total: **25**
|
- Total: **26**
|
||||||
- TODO: **1**
|
- TODO: **1**
|
||||||
- DONE: **24**
|
- DONE: **25**
|
||||||
|
|||||||
@@ -171,7 +171,6 @@ type: Literal[2]
|
|||||||
tariff_code: Literal[535]
|
tariff_code: Literal[535]
|
||||||
comment: str | None
|
comment: str | None
|
||||||
sender:
|
sender:
|
||||||
company: str | None
|
|
||||||
name: str
|
name: str
|
||||||
email: str
|
email: str
|
||||||
phones: list[{number: str}]
|
phones: list[{number: str}]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: 019
|
id: 019
|
||||||
title: Add CDEK order creation endpoint
|
title: Add CDEK order creation endpoint
|
||||||
status: TODO
|
status: DONE
|
||||||
created: 2026-03-14
|
created: 2026-03-14
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
id: 025
|
||||||
|
title: Remove company from Create Delivery Order parties
|
||||||
|
status: TODO
|
||||||
|
created: 2026-04-03
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
Текущий контракт `POST /api/v1/delivery/order` допускает поле `company` в `sender`, потому что order party schema используется и для `sender`, и для `recipient`. Новый сценарий требует упростить Create Delivery Order payload: поля `sender.company` и `recipient.company` больше не должны приниматься и не должны отправляться в CDEK.
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
Удалить `company` из request contract Create Delivery Order на уровне schema validation, controller/API contract и CDEK order registration payload без изменения endpoint path, service orchestration и response model.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
- Изменения ограничены существующими модулями order flow: `app/schemas/order.py`, `app/controllers/v1/delivery.py`, `app/services/aggregator.py`, `app/adapters/delivery_providers/cdek/` и связанными тестами; не создавать новые controller/service модули.
|
||||||
|
- `POST /api/v1/delivery/order` должен оставаться в существующем controller и по-прежнему вызывать ровно один метод Service: `AggregatorService.create_order()`.
|
||||||
|
- Service не должен получать новую business logic; orchestration order flow должна остаться прежней.
|
||||||
|
- Поля `sender.company` и `recipient.company` должны отсутствовать в публичном request contract и не должны сериализоваться в payload, отправляемый в CDEK.
|
||||||
|
- Payload, содержащий `sender.company` или `recipient.company`, должен считаться невалидным и отклоняться schema validation с HTTP 422.
|
||||||
|
- `from_location.address` и `to_location.address` остаются opaque input strings; не добавлять address suggestion lookup, нормализацию адреса или иные изменения order flow.
|
||||||
|
- Scope задачи не включает изменение response contract, price flow, address suggestion flow, provider routing, кеширование, новые провайдеры и расширение поддерживаемых `type`/`tariff_code`.
|
||||||
|
- Обновить пример контракта Create Delivery Order в `http-client.http`, чтобы он не содержал `company`.
|
||||||
|
- Не изменять файлы в `spec/`.
|
||||||
|
|
||||||
|
## Acceptance criteria
|
||||||
|
- `OrderCreateRequest` больше не содержит поле `company` ни для `sender`, ни для `recipient`.
|
||||||
|
- `POST /api/v1/delivery/order` успешно принимает прежний payload без `company` и не требует никаких новых полей.
|
||||||
|
- Если request payload содержит `sender.company` или `recipient.company`, endpoint возвращает 422 на уровне schema validation.
|
||||||
|
- `AggregatorService.create_order()` продолжает только оркестрировать вызов injected order adapter без новой business logic.
|
||||||
|
- CDEK adapter отправляет JSON payload для регистрации заказа без поля `company`.
|
||||||
|
- `http-client.http` содержит актуальный пример регистрации заказа без `company`.
|
||||||
|
- Service, controller/API и adapter tests покрывают success case после удаления поля и rejection scenario для `company`.
|
||||||
|
|
||||||
|
## Definition of Done
|
||||||
|
- [ ] Обновлён order request contract без поля `company` для `sender` и `recipient`.
|
||||||
|
- [ ] Schema validation отклоняет `sender.company` и `recipient.company`.
|
||||||
|
- [ ] CDEK order registration payload больше не содержит `company`.
|
||||||
|
- [ ] Обновлены order flow tests для service, controller/API и adapter layers.
|
||||||
|
- [ ] Обновлён пример Create Delivery Order в `http-client.http`.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- Обновить `tests/services/test_order.py`, убрав `company` из валидных fixture payloads и сохранив проверку service orchestration.
|
||||||
|
- Обновить `tests/controllers/v1/test_order.py` для success case без `company` и добавить сценарий 422 при передаче `sender.company` и `recipient.company`.
|
||||||
|
- Обновить `tests/adapters/delivery_providers/cdek/test_order_client.py`, чтобы проверить отсутствие `company` в отправляемом CDEK payload.
|
||||||
|
- При необходимости обновить другие order-related tests, завязанные на старый request contract.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
- `poetry run pytest tests/services/test_order.py -q`
|
||||||
|
- `poetry run pytest tests/controllers/v1/test_order.py -q`
|
||||||
|
- `poetry run pytest tests/adapters/delivery_providers/cdek/test_order_client.py -q`
|
||||||
|
- `python3 spec/gen_spec_index.py --check`
|
||||||
Reference in New Issue
Block a user