# 🔮 Nashel — Backend API > **ASP.NET Core · Modular Monolith · PostgreSQL (PostGIS) · Docker** Серверная часть платформы **Nashel** — инновационного маркетплейса для поиска и найма профессиональных исполнителей. Бэкенд построен по принципу **Модульного Монолита**, что обеспечивает идеальный баланс между скоростью разработки и чистотой архитектуры с четкой доменной изоляцией. --- ## 🎯 Миссия Nashel Мы создаем прозрачную экосистему, где мастера получают профессиональный инструментарий для ведения бизнеса, а клиенты — надежный сервис поиска по геолокации, реальным отзывам и защищенным сделкам. **Ключевые преимущества:** - **Гео-центричность:** Поиск исполнителей в радиусе на карте. - **Интеллектуальный статус:** Проверка доступности мастера в реальном времени. - **Безопасность:** Проработанный жизненный цикл заказа с системой споров. - **Репутация:** Честная система отзывов, привязанная к реальным сделкам. --- ## 🧱 Архитектура и Технологии Проект реализован как **Modular Monolith**. Каждый модуль — это изолированная единица со своей логикой, данными и API, взаимодействующая с другими через контракты BuildingBlocks. ### Технологический стек - **Runtime:** .NET 8 / ASP.NET Core - **Database:** PostgreSQL + **PostGIS** (гео-запросы) - **ORM:** Entity Framework Core - **Messaging:** MediatR (In-process commands/queries) - **Security:** JWT Authentication, Role-based Access Control - **Spatial:** NetTopologySuite ### Структура модуля ``` Modules// ├── Domain/ # Сущности, Value Objects, Доменные события ├── Application/ # Use Cases (MediatR Handlers), DTOs, Mapping ├── Infrastructure/ # EF Core (Persistence), External Services └── Presentation/ # Minimal API Endpoints ``` --- ## 🚀 Реализованные Модули | Модуль | Статус | Функционал | |--------|--------|------------| | **Identity** | ✅ Ready | Auth (JWT), Профили, Аватары (Base64), Расписание, Статусы доступности | | **Catalog** | ✅ Ready | Управление услугами (CRUD), Multi-image (до 10 фото), Атрибуты | | **Search** | ✅ Ready | Full-text search, сортировка по Geo-дистанции и релевантности | | **Geo** | ✅ Ready | Расчет расстояний, Геозоны, Индексация координат | | **Order** | ✅ Ready | Заказы (Direct/Public), SLA таймеры, Система споров (Disputes), Отклики | | **Reputation** | ✅ Ready | Отзывы, Рейтинги (User/Offer), Дополнения к отзывам | | **Collaboration**| ✅ Ready | HR-инструментарий: Найм, Наложение вето на расписание, Проверки | --- ## ⚙️ Ключевая Логика ### 1. Умная доступность (Smart Status) Мастер может управлять своей доступностью двумя способами: - **Расписание:** Настройка рабочих дней и часов. - **Manual Toggle:** Ручное переключение статуса «Готов к заказу». Ручная активация имеет приоритет и действует до конца текущего дня, перекрывая стандартное расписание. ### 2. Жизненный цикл заказа (Order Flow) Реализована сложная машина состояний: 1. **Создание:** Прямой заказ мастеру или публикация заявки в общий доступ. 2. **SLA:** Для прямых заказов действует 60-минутный таймер на принятие. 3. **Исполнение:** Статусы "В работе", "Выполнено", "Подтверждено". 4. **Споры (Disputes):** Многоэтапный процесс разрешения конфликтов (Открытие -> Ответ мастера -> Возражение клиента -> Принятие условий). ### 3. Поиск и Геолокация - Поиск учитывает не только текст, но и **расстояние**. - В приоритете — конкретные услуги. Если мастер не имеет услуг, он показывается как специалист. - Интеграция с PostGIS позволяет делать сверхбыстрые выборки в радиусе. --- ## 🐳 Развертывание ### Docker (Рекомендуемо) ```bash docker-compose up -d --build ``` Это запустит: - Бэкенд (порт 5000) - PostgreSQL + PostGIS (порт 5432) ### Локальный запуск 1. Установите PostgreSQL и расширение PostGIS. 2. Обновите строку подключения в `appsettings.json`. 3. Примените миграции: ```bash dotnet ef database update -p src/Host -s src/Host ``` 4. Запустите Host: ```bash dotnet run --project src/Host ``` Swagger доступен по адресу: `http://localhost:5000/swagger` --- ## 🔮 Планы развития - [ ] **Real-time:** Интеграция WebSockets для чатов и уведомлений. - [ ] **Verification:** Модуль проверки документов исполнителей. - [ ] **Finances:** Интеграция платежных шлюзов. - [ ] **Analytics:** Сбор метрик просмотров и конверсий для мастеров. - [ ] **Mobile SDK:** API для нативных мобильных приложений. - [ ] **Notifications:** Push и Email уведомления о статусах заказов.