Skip to content

AnnaVerh04/enterprise-development

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Разработка корпоративных приложений

Таблица с успеваемостью

Задание "Риэлторское агенство"

В агентстве хранится информация об объектах недвижимости, контрагентах и заявках от них.

Объект недвижимости характеризуется типом, назначением, кадастровым номером, адресом, этажностью, общей площадью, числом комнат, высотой потолков, этажом расположения, наличием обременений. Тип объекта недвижимости является перечислением. Назначение объекта недвижимости является перечислением.

Контрагент характеризуется ФИО, номером паспорта, контактным телефоном.

Заявка содержит информацию о контрагенте, объекте недвижимости, типе заявки- покупка/продажа, денежной сумме. Используется в качестве контракта.

Функциональные возможности

  • PropertyPurpose - Назначение недвижимости
  • PropertyType - Тип объекта
  • RequestType - Тип заявки
  • Counterparty - Клиент агентства
  • RealEstateProperty - Объект недвижимости с полным описанием характеристик
  • Request - Заявка на операцию с недвижимостью

Тестирование

  • GetSellersInPeriodReturnsCorrectSellers() - Поиск продавцов за указанный период
  • Top5ClientsByRequestCountReturnsSeparateTop5() - Топ-5 клиентов по количеству заявок (покупка/продажа отдельно)
  • RequestCountByPropertyTypeReturnsCorrectStatistics() - Статистика заявок по типам недвижимости
  • ClientsWithMinAmountAreFoundCorrectly() - Клиенты с заявками минимальной стоимости
  • ClientsSeekingPropertyTypeAreReturnedOrdered() - Поиск клиентов по типу недвижимости с сортировкой

Структура решения

  • RealEstateAgency.AppHost/ - .NET Aspire оркестратор
  • RealEstateAgency.WebApi/ - ASP.NET Core API с NATS Subscriber Service
  • RealEstateAgency.Generator/ - Сервис генерации тестовых данных с отправкой через NATS
  • RealEstateAgency.Application/ - Бизнес-логика и сервисы
  • RealEstateAgency.Contracts/ - DTO и интерфейсы сервисов
  • RealEstateAgency.Domain/ - Сущности и интерфейсы репозиториев
  • RealEstateAgency.Infrastructure/ - Репозитории и контекст БД (MongoDB)
  • RealEstateAgency.ServiceDefaults/ - Общие настройки Aspire
  • RealEstateAgency.Generator.Tests/ - Тесты генератора данных
  • RealEstateAgency.WebApi.Tests/ - Интеграционные тесты

Функциональные возможности

CRUD операции

  • Полное управление контрагентами, объектами недвижимости и заявками
  • Валидация связанных сущностей при создании/обновлении заявок
  • Асинхронное получение данных через NATS

Аналитические запросы

  • Продавцы за указанный период
  • Топ-5 клиентов по количеству заявок (покупка и продажа отдельно)
  • Статистика заявок по типам недвижимости
  • Клиенты с минимальной суммой заявок
  • Поиск клиентов по интересующему типу недвижимости

Особенности реализации

  • Двойные репозитории: InMemory для тестов, MongoDB для продакшена
  • Автоматическое заполнение БД: 12 контрагентов, 13 объектов, 15 заявок при первом запуске
  • Умная конфигурация: Автоматическое переключение между MongoDB и InMemory режимами
  • Асинхронная обработка: NATS Subscriber Service для фонового получения сообщений
  • Docker-оркестрация: Полная контейнеризация через .NET Aspire AppHost

Распределенные возможности

  • Потоковая передача данных: Generator → NATS → WebAPI → MongoDB
  • Мониторинг: Визуализация работы системы через Aspire Dashboard
  • Масштабируемость: Независимое развертывание компонентов

Асинхронная коммуникация через NATS

  • Generator публикует сообщения в топики:
  • realestate.counterparty.created - создание контрагента
  • realestate.property.created - создание объекта недвижимости
  • WebAPI подписывается на сообщения и сохраняет данные в MongoDB
  • Пакетная отправка: Generator отправляет данные пачками по 10 записей каждые 5 секунд

Мониторинг через .NET Aspire

  • Aspire Dashboard: Визуальный мониторинг состояния всех сервисов
  • Логирование операций: Детальное логирование всех операций с MongoDB
  • Health checks: Проверка здоровья всех компонентов системы

About

Разработка корпоративных приложений. 4 курс

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%