Модули системы¶
FuelProcessing состоит из нескольких модулей, каждый из которых отвечает за определённую функциональность.
Структура модулей¶
FuelProcessing/
├── FuelProcessing.Core/ # Domain Layer
├── FuelProcessing.Data/ # Data Access Layer
├── FuelProcessing.Web/ # MVC Web Interface
├── FuelProcessing.ClientApi/ # REST API
├── FuelProcessing.TransactionHandler/ # Background Processing
└── FuelProcessing.ReportGenerationHandler/ # Reports
Сравнение модулей¶
| Модуль | Тип | Назначение | Протокол |
|---|---|---|---|
| Core | Class Library | Доменная модель | — |
| Data | Class Library | Репозитории, API клиенты | — |
| Web | Web App | Пользовательский интерфейс | HTTP/MVC |
| ClientApi | Web API | Внешние интеграции | HTTP/REST |
| TransactionHandler | Console App | Фоновая обработка | Quartz.NET |
| ReportHandler | Web App | Генерация отчётов | RabbitMQ |
Зависимости между модулями¶
graph TD
CORE[FuelProcessing.Core<br/>Domain Layer]
DATA[FuelProcessing.Data<br/>Data Access Layer]
CORE --> DATA
WEB[FuelProcessing.Web<br/>MVC Interface]
API[FuelProcessing.ClientApi<br/>REST API]
TH[TransactionHandler<br/>Background Jobs]
RH[ReportHandler<br/>Report Generator]
WEB --> DATA
API --> DATA
TH --> DATA
RH --> DATA
Domain Layer (Core)¶
Библиотека доменной модели и бизнес-логики.
Ключевые сущности:
- Card — топливная карта
- DirectContract — прямой договор
- FinanceTransaction — транзакция
- Limit — лимиты на расход
- Company — компания
- User — пользователь
Статусы и перечисления:
- CardStatus — статусы карт
- BlockStatus — статусы блокировки
- VinkType — типы ВИНК
- OperationType — типы операций
Data Access Layer¶
Репозитории, API клиенты, сервисы данных.
Компоненты:
- DataContext — Entity Framework DbContext
- Репозитории (CardRepository, CompanyRepository, ...)
- API клиенты для 11 ВИНК
- Сервисы бизнес-логики
Web Interface¶
ASP.NET Core MVC веб-приложение.
Функциональность: - Управление пользователями и ролями - CRUD справочников - Управление картами и лимитами - Генерация отчётов - Карта АЗС
Контроллеры: 60+ контроллеров для различных функций
TerminalApi¶
REST API для терминалов на АЗС.
Назначение: - Авторизация операторов - Создание транзакций - Управление ценами на топливо - Офлайн режим работы
Endpoints:
- /api/terminal/account/auth — авторизация оператора
- /api/terminal/fuel/list — список видов топлива
- /api/terminal/transactions/create — создание транзакции
- /api/terminal/offlinetransaction/create — офлайн транзакции
ClientApi¶
REST API для внешних интеграций.
Версии: - v1 — базовая версия - v2 — улучшенная версия (рекомендуется)
Endpoints:
- /api/v2/account/authuser — авторизация
- /api/v2/card/cards — карты
- /api/v2/limit/setcardlimits — лимиты
- /api/v2/transaction/gettransactions — транзакции
TransactionHandler¶
Фоновый сервис обработки транзакций.
Функции: - Расчёт транзакций (каждые 5 минут) - Синхронизация с ВИНК - Расчёт балансов - Обработка лимитов
Технология: Quartz.NET Scheduler
ReportGenerationHandler¶
Микросервис генерации отчётов.
Типы отчётов: 15+ типов отчётов
Технология: MassTransit + RabbitMQ