82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# Tnsu.ApprovalRoute
|
||
|
||
Сервис маршрутов согласования: типы заявок (`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С) |
|
||
|
||
## Структура
|
||
|
||
```
|
||
backend/
|
||
Directory.Build.props # общие настройки таргета (net10.0, nullable, etc.)
|
||
Directory.Packages.props # централизованные версии пакетов
|
||
Tnsu.ApprovalRoute.sln
|
||
src/
|
||
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
|
||
cd backend
|
||
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
|
||
cp .env.example .env
|
||
docker compose up --build
|
||
```
|
||
|
||
Поднимает `postgres` и `api`.
|
||
|
||
| Сервис | URL |
|
||
|--------|-----|
|
||
| API | http://localhost:8082 |
|
||
| API health | http://localhost:8082/health |
|
||
| Postgres | localhost:5435 |
|
||
|
||
## Тесты
|
||
|
||
```bash
|
||
cd backend
|
||
dotnet test
|
||
```
|