Files
tnsu-approval-route/README.md
gorbenko.pavel d076f4e98d
Tests / backend-test (push) Successful in 1m50s
Tests / frontend-test (push) Successful in 49s
Sla (#11)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/11
2026-08-13 04:44:08 +00:00

95 lines
3.8 KiB
Markdown
Raw Permalink 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С) |
| Frontend | SPFx-веб-парт (React + FluentUI) — админка маршрутов согласования на портале SharePoint |
## Структура
```
backend/
Directory.Build.props # общие настройки таргета (net10.0, nullable, etc.)
Directory.Packages.props # централизованные версии пакетов
Tnsu.ApprovalRoute.sln
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/
frontend/
src/webparts/approvalAdmin/ # SPFx веб-парт «ApprovalAdmin» (React, FluentUI)
docker-compose.yml
```
## Frontend (SPFx)
Админка маршрутов согласования встраивается веб-частью SPFx на портал SharePoint (аналогично `tnsu-inventory`).
```bash
cd frontend
npm install
npm run start # heft start — локальный SharePoint Workbench
npm run build # heft test + package-solution --production
```
Свойства веб-части: `apiBaseUrl`, `useDevAuth`, `devUserEmail`, `aadResourceId`, `portalBaseUrl`.
## 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 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
```