поправлен README.md
Tests / test (push) Successful in 2m42s

This commit is contained in:
gorbenko.pavel
2026-07-30 12:45:23 +05:00
parent da158cfd84
commit 2e4873bb4b
2 changed files with 52 additions and 83 deletions
+52 -6
View File
@@ -1,6 +1,18 @@
# Tnsu.ApprovalRoute
Каркас проекта на .NET 10, повторяющий архитектуру [tnsu-inventory](../tnsu-inventory): 4 слоя (Api / Application / Domain / Infrastructure), MediatR, EF Core + PostgreSQL. Бизнес-логика не реализована — только структура решения и минимальная точка входа.
Сервис маршрутов согласования: типы заявок (`RequestType`) и шаблонные маршруты согласования (`TemplateRoute` → `TemplateRouteStep`) с разрешением подходящего маршрута под конкретные параметры (проект, тип заявки, сумма и т.д.).
Архитектура повторяет [tnsu-inventory](../tnsu-inventory): 4 слоя (Api / Application / Domain / Infrastructure), MediatR-стиль сервисов, EF Core + PostgreSQL.
## Стек
| Компонент | Технология |
|-----------|------------|
| Backend | .NET 10, ASP.NET Core (MVC controllers), EF Core |
| БД | PostgreSQL |
| Авторизация | Entra ID (JWT Bearer) либо dev-схема (`X-Dev-User-Email`) при отсутствии конфигурации Entra |
| API-документация | Scalar (`/scalar`) на основе OpenAPI |
| Интеграция | `api.tnsu.kz` (портал 1С) |
## Структура
@@ -10,12 +22,27 @@ backend/
Directory.Packages.props # централизованные версии пакетов
Tnsu.ApprovalRoute.sln
src/
Tnsu.ApprovalRoute.Domain/ # сущности домена (пусто)
Tnsu.ApprovalRoute.Application/ # MediatR-хендлеры, DI-регистрация слоя
Tnsu.ApprovalRoute.Infrastructure/ # EF Core DbContext, DI-регистрация слоя
Tnsu.ApprovalRoute.Api/ # ASP.NET Core Minimal API, Program.cs
Tnsu.ApprovalRoute.Domain/ # сущности и enum'ы домена
Tnsu.ApprovalRoute.Application/ # сервисы, DTO, валидаторы
Tnsu.ApprovalRoute.Infrastructure/ # EF Core DbContext, миграции, клиент tnsu-portal
Tnsu.ApprovalRoute.Api/ # ASP.NET Core Controllers, Program.cs, авторизация
tests/
Tnsu.ApprovalRoute.IntegrationTests/
docker-compose.yml
```
Отдельного frontend в этом репозитории нет — сервис предоставляет только backend API.
## API
| Метод | Путь | Описание |
|-------|------|----------|
| CRUD | `/api/request-types` | Типы заявок |
| CRUD | `/api/template-routes` | Шаблонные маршруты согласования |
| GET | `/api/template-routes/resolve` | Подбор подходящего маршрута по параметрам |
| CRUD | `/api/template-routes/{routeId}/steps` | Шаги шаблонного маршрута |
| GET | `/health` | Health-check |
## Запуск локально
```bash
@@ -25,6 +52,12 @@ dotnet run --project src/Tnsu.ApprovalRoute.Api
Требуется PostgreSQL (строка подключения — `ConnectionStrings:Postgres` в `appsettings.json`).
Авторизация:
- Entra ID — задать `Entra:TenantId` и `Entra:Audience` в конфигурации
- Без Entra — используется dev-схема, текущий пользователь передаётся заголовком `X-Dev-User-Email`
После запуска документация API доступна на `/scalar`.
## Запуск через Docker Compose
```bash
@@ -32,4 +65,17 @@ cp .env.example .env
docker compose up --build
```
Поднимает `postgres` и `api` (health-check на `/health`).
Поднимает `postgres` и `api`.
| Сервис | URL |
|--------|-----|
| API | http://localhost:8082 |
| API health | http://localhost:8082/health |
| Postgres | localhost:5435 |
## Тесты
```bash
cd backend
dotnet test
```