gorbenko.pavel 58682e4e3e
Tests / backend-test (pull_request) Successful in 2m27s
Tests / frontend-test (pull_request) Successful in 3m56s
персистится вкладка
2026-08-19 17:56:42 +05:00
2026-08-13 04:44:08 +00:00
2026-08-19 16:22:50 +05:00
2026-08-13 04:44:08 +00:00
2026-08-13 04:44:08 +00:00

Tnsu.ApprovalRoute

Сервис маршрутов согласования: типы заявок (RequestType) и шаблонные маршруты согласования (TemplateRoute → TemplateRouteStep) с разрешением подходящего маршрута под конкретные параметры (проект, тип заявки, сумма и т.д.).

Архитектура повторяет 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).

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

Запуск локально

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

cp .env.example .env
docker compose up --build

Поднимает postgres и api.

Сервис URL
API http://localhost:8082
API health http://localhost:8082/health
Postgres localhost:5435

Тесты

cd backend
dotnet test
S
Description
No description provided
Readme 5.7 MiB
Languages
C# 57.2%
TypeScript 38.1%
SCSS 3.3%
PowerShell 1.2%