Назначение
Удаление записи контактной информации пользователя. Удаляет UserContactEntity и публикует AfterUserUpdatedNotification через Outbox для формирования snapshot и публикации в Kafka.
Цели
- Удалить UserContactEntity по ContactId
- Обеспечить транзакционную целостность
- Публиковать полный snapshot пользователя в Kafka через Outbox
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| ContactId | Guid | Да | Идентификатор записи UserContactEntity для удаления |
| Поле | Тип | Обязательное | Описание |
|---|
| ContactId | Guid | Да | Идентификатор удалённой записи |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить UserContactEntity по ContactId через
userContactEntityRepository.FindById.
- Если не найден — ошибка «Контакт не найден».
- Сохранить UserId и TenantId контакта для уведомления.
- Удалить UserContactEntity через
userContactEntityRepository.Delete.
- Publish AfterUserUpdatedNotification (UserId, TenantId).
- Commit.
- Вернуть DeleteUserContactResult.
Альтернативные сценарии
- Контакт не найден: ошибка «Контакт не найден» с метаданными ContactId.
Диаграмма алгоритма
События
- AfterUserUpdatedNotification — handler формирует AfterUserUpdatedEvent и записывает в Outbox. Kafka-событие публикуется после commit.
Связанные сущности