1.9 KiB
1.9 KiB
id, title, status, created
| id | title | status | created |
|---|---|---|---|
| 006 | Add delivery price controller endpoint | TODO | 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принимает payloadDeliveryRequestи возвращает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