Files
g2s-aggregator/spec/tasks/006_add_delivery_price_controller.md
T
Раис Юсупалиев 150675cc75 006 add controller
2026-03-07 23:54:40 +03:00

1.9 KiB
Raw Blame History

id, title, status, created
id title status created
006 Add delivery price controller endpoint DONE 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