Глоссарий
Port
Абстрактный интерфейс, через который core общается с внешним миром. Определяется потребителем, реализуется адаптером.
Port — центральное понятие Hexagonal Architecture.
Определение: интерфейс, объявленный внутри core (application или domain), реализуемый снаружи (infrastructure).
Ключевое свойство: Port принадлежит потребителю. Use case говорит «мне нужно уметь сохранить Order», Port OrderRepositoryPort — часть контракта use case. Infrastructure реализует. Это инверсия зависимостей на уровне архитектуры.
В Python — идиоматичное определение через Protocol (PEP 544):
class OrderRepositoryPort(Protocol):
async def find_by_id(self, order_id: OrderId) -> Order | None: ...
async def save(self, order: Order) -> None: ...
Реализация (PostgresOrderRepository) не обязана декларировать зависимость — structural subtyping удовлетворяет Port автоматически.