Skip to the content.

🛠️ Руководство разработчика

← Назад на главную


Требования

Инструмент Версия
.NET SDK 8.0+
Node.js 20+
Docker 24+
Docker Compose 2.x+
PostgreSQL 16 (через Docker)

Локальный запуск

Вариант A — Docker Compose (все сервисы)

git clone https://github.com/barach6662001-bit/AgroPlatform.git
cd AgroPlatform
docker-compose up --build -d

Вариант B — Бэкенд локально + PostgreSQL в Docker

# 1. Поднять только PostgreSQL
docker-compose up -d postgres

# 2. Применить миграции EF Core
dotnet ef database update \
  -p src/AgroPlatform.Infrastructure \
  -s src/AgroPlatform.Api

# 3. Запустить API
dotnet run --project src/AgroPlatform.Api
# API:     http://localhost:5224
# Swagger: http://localhost:5224/swagger

Вариант C — Фронтенд отдельно

cd frontend

# Для разработки с локальным API (порт 5224):
# .env.development уже содержит VITE_API_URL=http://localhost:5224

# Для работы с Docker API (порт 8080):
echo "VITE_API_URL=http://localhost:8080" > .env.local

npm install
npm run dev
# http://localhost:3000

Переменные окружения

Скопируйте .env.example в .env и при необходимости измените значения:

cp .env.example .env

Миграции базы данных

Создать новую миграцию

dotnet ef migrations add <НазваниеМиграции> \
  -p src/AgroPlatform.Infrastructure \
  -s src/AgroPlatform.Api

Применить миграции

dotnet ef database update \
  -p src/AgroPlatform.Infrastructure \
  -s src/AgroPlatform.Api

Откатить миграцию

dotnet ef database update <ПредыдущаяМиграция> \
  -p src/AgroPlatform.Infrastructure \
  -s src/AgroPlatform.Api

Запуск тестов

Все тесты

dotnet test

Юнит-тесты

dotnet test tests/AgroPlatform.UnitTests

Интеграционные тесты

Требуется Docker (используются Testcontainers для PostgreSQL)

dotnet test tests/AgroPlatform.IntegrationTests

С покрытием кода

dotnet test --collect:"XPlat Code Coverage"

Сборка и публикация

Сборка (Release)

dotnet build --configuration Release

Публикация API

dotnet publish src/AgroPlatform.Api \
  --configuration Release \
  --output ./publish/api

Запуск из артефакта

dotnet publish/api/AgroPlatform.Api.dll

Разработка фронтенда

Запуск в режиме разработки

cd frontend
npm run dev

Линтинг

npm run lint

Проверка типов TypeScript

npm run type-check

Сборка для продакшена

npm run build

Запуск тестов фронтенда

npm run test

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

src/
├── AgroPlatform.Api/
│   ├── Controllers/       — REST контроллеры по модулям
│   ├── Middleware/        — TenantMiddleware, ExceptionMiddleware
│   └── Program.cs         — Точка входа, DI конфигурация
│
├── AgroPlatform.Application/
│   ├── Auth/              — Команды регистрации и входа
│   ├── Warehouses/        — CQRS для склада
│   ├── Fields/            — CQRS для полей
│   ├── AgroOperations/    — CQRS для агроопераций
│   ├── Machinery/         — CQRS для техники
│   ├── Economics/         — CQRS для экономики
│   └── Analytics/         — Запросы аналитики
│
├── AgroPlatform.Domain/
│   ├── Users/             — User, Tenant сущности
│   ├── Warehouses/        — Warehouse, WarehouseItem, WarehouseMove
│   ├── Fields/            — Field, CropHistory, RotationPlan
│   ├── AgroOperations/    — AgroOperation, OperationResource, OperationMachinery
│   ├── Machinery/         — Machinery, WorkLog, FuelLog
│   └── Economics/         — CostRecord
│
└── AgroPlatform.Infrastructure/
    ├── Persistence/
    │   ├── AppDbContext.cs
    │   ├── Configurations/ — EF Core entity configurations
    │   └── Interceptors/   — TenantInterceptor, AuditInterceptor
    └── Services/           — TenantService, JwtTokenService

frontend/src/
├── api/           — Axios клиент и методы API
├── components/    — Переиспользуемые UI компоненты
├── pages/         — Страницы (Dashboard, Warehouses, Fields, ...)
├── stores/        — Zustand stores
└── types/         — TypeScript типы и интерфейсы

Соглашения о коде


Внесение вклада

Смотрите CONTRIBUTING.md для получения информации о:


← Назад на главную