Skip to content

YakovlevEgor/OMS

Repository files navigation

OMS (Order Management System)

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

OMS - это система управления заказами, построенная на архитектуре Clean Architecture с использованием .NET. Система предназначена для автоматизации процессов работы с заявками и заказами, интеграции с внешними системами и управления документооборотом.

Архитектура проекта

Проект построен по принципам Clean Architecture и состоит из следующих слоев:

🏗️ Структура проекта

OMS/
├── Domain/                     # Доменный слой
│   ├── Bid.cs                 # Заявка
│   ├── Order.cs               # Заказ
│   ├── SaleInfo.cs            # Базовый класс для продаж
│   ├── Item.cs                # Товарная позиция
│   └── ...
├── Application/               # Слой приложения
│   ├── Service/               # Бизнес-сервисы
│   ├── Converters/            # Конверторы данных
│   └── Models/                # Модели приложения
├── Infrastructure/            # Инфраструктурный слой
│   ├── Database/              # Работа с БД
│   ├── AgentPlus/             # Интеграция с AgentPlus
│   ├── Cheetah/               # Интеграция с Cheetah
│   ├── Kontur/                # Интеграция с Kontur EDI
│   ├── Advantage/             # Интеграция с Advantage
│   └── Email/                 # Email сервисы
└── OMS/                       # Веб API слой
    ├── Controllers/           # API контроллеры
    ├── Program.cs             # Точка входа
    └── appsettings.json       # Конфигурация

🎯 Основная функциональность

Управление заявками (Bids)

  • Создание заявок из EDI-сообщений
  • Обработка заявок от AgentPlus
  • Валидация и проверка данных
  • Отслеживание статусов обработки

Управление заказами (Orders)

  • Конвертация заявок в заказы
  • Генерация накладных
  • Интеграция с учетными системами
  • Печать документов

Интеграции

  • Kontur EDI - электронный документооборот
  • AgentPlus - система работы с агентами
  • Cheetah - каталог товаров и контрагентов
  • Advantage - учетная система
  • TMS - управление транспортом

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

  • .NET 6+ - основной фреймворк
  • ASP.NET Core - веб API
  • Entity Framework Core - ORM
  • SQLite - база данных
  • Serilog - логирование
  • JWT - аутентификация
  • Swagger - документация API

⚙️ Настройка и запуск

Требования

  • .NET 6 SDK или выше
  • SQLite

Установка

# Клонирование репозитория
git clone [repository-url]

# Переход в директорию проекта
cd OMS

# Восстановление зависимостей
dotnet restore

# Применение миграций
dotnet ef database update

# Запуск приложения
dotnet run --project OMS

Конфигурация

Основные настройки находятся в appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "DataSource=moms.db;Cache=Shared",
    "IdentityConnection": "DataSource=user.db;Cache=Shared"
  },
  "EdiSettings": {
    "keyDev": "...",
    "pathToEdi": "https://edi-api.kontur.ru/",
    "workBox": "..."
  },
  "Advantage": {
    "Base": "http://192.168.1.222:8079/Advantage/"
  }
  // ... другие настройки
}

📋 API Endpoints

Заявки (Bids)

  • GET /api/bid - получение списка заявок
  • POST /api/bid - создание заявки
  • PUT /api/bid/{id} - обновление заявки
  • DELETE /api/bid/{id} - удаление заявки

Заказы (Orders)

  • GET /api/order - получение списка заказов
  • POST /api/order - создание заказа
  • PUT /api/order/{id} - обновление заказа

EDI

  • GET /api/edi/inbox - получение входящих EDI сообщений
  • POST /api/edi/process - обработка EDI сообщений

Печать

  • POST /api/print/invoice - печать накладной
  • POST /api/print/report - печать отчета

🏢 Доменная модель

Основные сущности

Bid (Заявка)

public class Bid : SaleInfo<BidItem>
{
    public string? ProbableOperationType { get; set; }
    public bool isRegister { get; set; }
    public bool HasError { get; set; }
    public string ErrorDetails { get; set; }
    public string? DepartamentCode { get; set; }
    public string? TypeIdent { get; set; }
}

Order (Заказ)

public class Order : SaleInfo<OrderItem>
{
    public Guid BidId { get; set; }
    public string InvoiceNumber { get; set; }
    public string DepartamentId { get; set; }
    public string OperationType { get; set; }
    public uint EdiStatus { get; set; }
    public string? TypeIdent { get; set; }
}

SaleInfo (Базовый класс продаж)

  • Содержит общие поля для заявок и заказов
  • Автоматически вычисляет суммы и количества
  • Включает информацию о продавце, покупателе, плательщике

🔐 Безопасность

  • JWT-аутентификация
  • Ролевая модель доступа
  • Логирование действий пользователей
  • Валидация входных данных

📊 Мониторинг и логирование

  • Структурированное логирование через Serilog
  • Запись в файлы с ротацией
  • Отслеживание ошибок интеграций
  • Мониторинг производительности

🚀 Развертывание

Продакшн

  1. Настройка строк подключения к БД
  2. Конфигурация внешних сервисов
  3. Настройка логирования
  4. Настройка HTTPS и сертификатов

Docker (рекомендуется)

# Пример Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "OMS.dll"]

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

# Запуск тестов
dotnet test

# Запуск с покрытием кода
dotnet test --collect:"XPlat Code Coverage"

📞 Поддержка

При возникновении вопросов:

  1. Проверьте логи в папке Logs/
  2. Убедитесь в корректности настроек внешних сервисов
  3. Проверьте доступность сетевых ресурсов

📄 Лицензия

[Укажите лицензию проекта]


Документация актуальна на [текущая дата]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages