@@ -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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user