Skip to content

Current State Catalog

plutogr edited this page May 23, 2026 · 1 revision

Catalog

Обновлено: 2026-05-23

Назначение

Catalog сервис хранит и отдаёт:

  • туры
  • направления
  • прайс-периоды по турам

и предоставляет gRPC snapshot тура для Booking.

Структура проекта

  • TravelAgency.Catalog.API
  • TravelAgency.Catalog.Application
  • TravelAgency.Catalog.Domain
  • TravelAgency.Catalog.Infrastructure
  • TravelAgency.Catalog.UnitTests
  • TravelAgency.Catalog.IntegrationTests

REST API

Service routes: /catalog/*
Public routes via Gateway: /api/v1/catalog/*

Method Service route Public route Auth Request Response
GET /catalog/tours /api/v1/catalog/tours Anonymous ToursFilterDto (query) PagedResult<TourSummaryDto>
GET /catalog/tours/{id} /api/v1/catalog/tours/{id} Anonymous - TourDto
POST /catalog/tours /api/v1/catalog/tours ManagerOrAdmin CreateTourRequest TourDto (201)
PUT /catalog/tours/{id} /api/v1/catalog/tours/{id} ManagerOrAdmin UpdateTourRequest TourDto
PATCH /catalog/tours/{id}/prices /api/v1/catalog/tours/{id}/prices ManagerOrAdmin UpdateTourPricesRequest TourDto
DELETE /catalog/tours/{id} /api/v1/catalog/tours/{id} ManagerOrAdmin - 204
GET /catalog/directions /api/v1/catalog/directions Anonymous - List<DirectionDto>

DTO и объекты API

Основные request types

  • ToursFilterDto(country?, directionId?, dateFrom?, dateTo?, minPrice?, maxPrice?, tourType?, isActive?, sortBy, sortDirection, page, pageSize)
  • CreateTourRequest(title, description, tourType, country, durationDays, imageUrl?, directionId?)
  • UpdateTourRequest(title, description, tourType, country, durationDays, imageUrl?, directionId?)
  • UpdateTourPricesRequest(prices: List<TourPriceRequest>)
  • TourPriceRequest(validFrom, validTo, pricePerPerson, currency, availableSeats)

Основные response types

  • TourSummaryDto
  • TourDto
  • TourPriceDto
  • DirectionDto
  • PagedResult<T>

Доменная модель

Tour

Поля: Id, Title, Description, TourType, DirectionId, Country, DurationDays, ImageUrl, IsActive, CreatedAt, UpdatedAt, Prices
Поведение: Create, Update, SetPrices, Deactivate, Activate

TourPrice

Поля: Id, TourId, ValidFrom, ValidTo, PricePerPerson, Currency, AvailableSeats

Direction

Поля: Id, Name, Country, Description, IsActive, CreatedAt, UpdatedAt

TourType

  • Beach, Mountain, City, Cultural, Adventure, Cruise, Safari

Внутренние контракты (gRPC)

  • Service: CatalogService
  • RPC: GetTourSnapshot(GetTourSnapshotRequest) -> TourSnapshotResponse
  • Используется Booking сервисом

См. gRPC контракты.

Конфигурация

Критичные параметры:

  • ConnectionStrings__CatalogDb
  • JwtSettings__SigningKey, JwtSettings__Issuer, JwtSettings__Audience
  • GrpcSettings__InternalServiceToken

Health

Method Route
GET /health/live
GET /health/ready

Clone this wiki locally