Skip to content

iamfifya/AccuratSystem

Repository files navigation

Accurat System — Комплексная SaaS-платформа управления сетью автомоек и сервисов

.NET Build License: MIT Last Commit Code Size

📝 Описание проекта

Accurat System — это мультитенантная (Multi-tenant SaaS) клиент-серверная экосистема для полной автоматизации бизнес-процессов сетей автомоек и автосервисов. Проект спроектирован по принципу монорепозитория (monorepo) и обеспечивает строгую изоляцию данных независимых компаний-клиентов внутри единого серверного ядра.

В состав комплекса входят:

  • Высокопроизводительный десктопный терминал администратора/кассира (WPF .NET Framework 4.8, паттерн MVVM).
  • Мобильное приложение для управляющих и владельцев (Кроссплатформенный .NET MAUI).
  • Централизованный отказоустойчивый сервер (ASP.NET Core REST API) с базой данных PostgreSQL.

📸 Скриншоты интерфейса

Главное окно на ПК:

MainWindow

Стол управляющего:

ManagerDeskOverlay

Интервальный отчет:

CustomReportWindow

Авторизация на смартфоне:

LoginPage

Главное окно на смартфоне:

OrdersPage

📐 Архитектура системы

Экосистема использует сквозную контекстную изоляцию. Клиентские приложения при аутентификации получают параметры тенанта, после чего статический пул HttpClient (Singleton) автоматически подмешивает во все запросы заголовок X-Company-Id.

Ключевые инженерные решения:

  • Server-side Filtering: Для предотвращения деградации производительности при росте базы данных (проблема «смерти от данных»), фильтрация заказов перенесена с клиента на сторону сервера.
  • Outbox Pattern: Реализована гарантированная доставка фоновых событий с механизмом контролируемых повторных попыток (Retry Limit), что обеспечивает стабильность системы при сбоях внешних сервисов.
  • Real-time Sync: Использование SignalR для мгновенного обновления состояния рабочих зон на всех терминалах сети.
graph TD
    A[WPF Admin Terminal] -->|REST + X-Company-Id Header| B(ASP.NET Core SaaS API)
    C[MAUI Mobile App] -->|REST + X-Company-Id Header| B
    B -->|EF Core / Tenant Isolation Filter| D[(PostgreSQL)]
    B --> E[Outbox Processor + Retry Logic]
    B --> F[SignalR WebSockets]
Loading

📂 Структура монорепозитория

  • AccuratPanelCarWashing/ — Десктопный клиент (WPF). Основное рабочее место кассира-администратора. Управление живой очередью боксов, проводка кассовых операций, расчет апселл-бонусов, синхронизация по WebSockets (SignalR) и локальный экспорт аналитики.
  • AccuratPanelCWM/ — Мобильный клиент (.NET MAUI). Оперативный кроссплатформенный пульт контроля с поддержкой динамической смены тем оформления и адаптивным дашбордом.
  • Accurat.WebAPI/ — Серверная часть (ASP.NET Core). Центральное REST API ядро системы. Инкапсулирует вычисления, финансовую математику, управление транзакциями и фоновые службы (Background Services).
  • AccuratSystem.Contracts/ — Библиотека контрактов. Общие скомпилированные модели данных (Order, User, Branch), DTO-объекты авторизации/смены статусов и перечисления (Enums). Обеспечивает строгую типизацию и контрактную целостность между API и клиентами.

🌟 Основные возможности

🔒 Безопасность и Мультитенантность (SaaS)

  • Enterprise Security: Внедрено одностороннее хэширование паролей с использованием алгоритма BCrypt, что исключает утечку реальных паролей даже при компрометации базы данных.
  • Аутентификация до авторизации: Двухшаговый вход в систему (LoginWindow). Список филиалов скрыт до проверки пароля.
  • Изоляция сущностей: Услуги (Service), клиенты (Client), статусы (OrderStatus), категории автомобилей и способы оплаты изолированы на уровне CompanyId.
  • Режим Бога (God Mode): Специализированная системная роль Разработчик (RoleId = 0), позволяющая администрировать всю сеть компаний.

💰 Финансовый модуль и Зарплатное ядро

  • Soft Split (Распределение ЗП): Связь "многие-к-многим" (OrderWashers) позволяет назначать на один заказ команду исполнителей с гибким распределением долей участия.
  • Точная аналитика по ролям: Дифференцированный расчет KPI: для линейного персонала (мойщики, сервис) — по факту выполненных работ; для руководства — по общему объему выручки смены.
  • Кассовый контроль и Авансирование: Раздельный real-time учет наличных, карт, переводов и СБП (QR-код). Именная выдача авансов с автоматическим пересчетом ведомости при закрытии смены.

📅 Операционный учет и CRM

  • Интерактивная доска: Мгновенный Drag-and-Drop перенос карточек заказов между боксами и департаментами (Мойка / Сервис).
  • Умный кассир (Upsell DLC): Алгоритм автоматического анализа состава заказа и выдачи подсказок для допродаж с геймификацией бонусов.
  • Умное расписание: Посекундный анализ хронологии статусов (OrderStatusHistory) для точной аналитики времени нахождения машины в боксе.

🚀 Roadmap (Планы развития)

  • Core SaaS System: Базовый учет, тенанты, сквозные заголовки контекста.
  • Security Hardening: Внедрение BCrypt хэширования паролей.
  • Scalability Fix: Перенос фильтрации данных на сторону API для работы с большими объемами.
  • Reliability Update: Оптимизация Outbox-процессора с лимитом попыток (Retry Limit).
  • Smart Cashier (DLC): Модуль умных подсказок (Upsell) и калькулятор апселл-бонусов.
  • Smart Staff Management: Обновленный модуль запуска смен.
  • Перестроить MAUI-проект под новую архитектуру: Обновленное мобильное приложение с чистыми контрактами.
  • Модуль управления филиалами сети: Интерактивная настройка параметров филиалов.
  • Reputation Management Module (DLC): Агрегатор отзывов (Яндекс, Google, 2ГИС) с ответами из терминала.
  • CRM-Marketing (DLC): Автоматическая SMS/Telegram рассылка триггерных уведомлений.
  • Storage Module (DLC): Складской учет автохимии, инвентаризация и расчет себестоимости.
  • Telegram Boss (DLC): Бот-агрегатор вечерних отчетов и P&L-метрик для владельцев.

🛠 Технологический стек

  • Backend: C# 13, .NET 10, ASP.NET Core, EF Core, PostgreSQL (Npgsql), SignalR, Scalar/Swagger.
  • Desktop Client: C# 7.3, WPF (.NET Framework 4.8), LiveCharts, ClosedXML, Newtonsoft.Json, SignalR Client.
  • Mobile Client: C# 13, .NET MAUI (.NET 10), MVVM Architecture.

⚙️ Требования к окружению и Запуск

1. Серверная часть (API)

  1. Установите .NET 10 SDK и СУБД PostgreSQL.
  2. Сконфигурируйте строку подключения в Accurat.WebAPI/appsettings.json.
  3. Примените миграции: dotnet ef database update.
  4. Запустите Web-сервер: dotnet run.

2. Клиентская часть

  1. Откройте решение AccuratSystem.sln в Visual Studio 2022.
  2. Проверьте базовый URL сервера в статическом пуле ApiService.
  3. Запустите проект AccuratPanelCarWashing (F5).

📄 Лицензия

Распространяется под лицензией MIT.

👤 Автор

Dima Kuraedov (@iamfifya)

Продукт спроектирован и разработан с использованием архитектурных рекомендаций больших языковых моделей ИИ.

About

Разработка панели управления и собственного API для Accurat. Отдельное спасибо DeepSeek, Qwen и Google Gemini и сервису symbl.cc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages