--- id: 006 title: Add delivery price controller endpoint status: DONE created: 2026-03-07 --- ## Context API contract требует endpoint `POST /api/v1/delivery/price` с DTO validation и HTTP error mapping, при этом Controller должен вызывать ровно один метод Service. ## Goal Реализовать request/response schemas и endpoint в `app/controllers/v1/delivery.py`, который валидирует входные данные, делегирует в `AggregatorService.get_all_prices()` и маппит service exceptions в HTTP responses. ## Constraints - Controller не должен содержать business logic или provider-specific branching. - На каждый запрос Controller должен вызывать ровно один метод Service. - Validation должна использовать Pydantic models из schema layer. - Не изменять файлы в `spec/`. ## Acceptance criteria - `POST /api/v1/delivery/price` принимает payload `DeliveryRequest` и возвращает `list[DeliveryPrice]`. - Невалидный input возвращает validation error response. - Controller делегирует обработку в `AggregatorService.get_all_prices()`. - Service exceptions маппятся в детерминированные HTTP responses. ## Definition of Done - [ ] Реализованы request и response schemas. - [ ] Controller endpoint подключён в FastAPI router. - [ ] Path и HTTP method endpoint соответствуют specification. - [ ] API tests покрывают успешный ответ, validation failure и mapped service error. ## Tests - Добавить controller tests для поведения route и делегирования в service. - Добавить API-level tests для валидации request schema и response schema. ## Commands - `poetry run pytest tests/controllers/v1/test_delivery.py -q`