AfterChessboardProjectCreatedEvent (Consumer)
Назначение
Обработка события о создании проекта шахматной доски. Создаёт запись ChessboardProjectEntity в БД Panoramas.
Цель
Синхронизировать появление нового проекта из внешней системы в локальном хранилище для последующего создания очереди панорам и задач.
Входные данные (Payload)
Контракт сообщения определяется пакетом Talent.Chessboard.Events. Типичные поля:
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| ProjectId | long | Обязательное | Идентификатор проекта |
| TenantId | Guid | Обязательное | Идентификатор тенанта |
| Name | string | Обязательное | Название проекта |
| Version | long | Обязательное | Версия |
Бизнес-логика
- Получить payload из сообщения Kafka.
- Создать сущность ChessboardProjectEntity в таблице ChessboardProjectEntity: Id = ProjectId из payload, TenantId, Name, Version, RowVersion, UpdatedAt, CreatedAt.
- Сохранить в БД. При конфликте (уже существует) — обновить или проигнорировать в соответствии с правилами идемпотентности.
Топик
Имя топика задаётся в Talent.Chessboard.Events (например chessboard.projects.created или аналог).