Files
tnsu-approval-route/README.md
T
gorbenko.pavel 2e4873bb4b
Tests / test (push) Successful in 2m42s
поправлен README.md
2026-07-30 12:45:23 +05:00

82 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```