@@ -1,6 +1,18 @@
|
|||||||
# Tnsu.ApprovalRoute
|
# 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 # централизованные версии пакетов
|
Directory.Packages.props # централизованные версии пакетов
|
||||||
Tnsu.ApprovalRoute.sln
|
Tnsu.ApprovalRoute.sln
|
||||||
src/
|
src/
|
||||||
Tnsu.ApprovalRoute.Domain/ # сущности домена (пусто)
|
Tnsu.ApprovalRoute.Domain/ # сущности и enum'ы домена
|
||||||
Tnsu.ApprovalRoute.Application/ # MediatR-хендлеры, DI-регистрация слоя
|
Tnsu.ApprovalRoute.Application/ # сервисы, DTO, валидаторы
|
||||||
Tnsu.ApprovalRoute.Infrastructure/ # EF Core DbContext, DI-регистрация слоя
|
Tnsu.ApprovalRoute.Infrastructure/ # EF Core DbContext, миграции, клиент tnsu-portal
|
||||||
Tnsu.ApprovalRoute.Api/ # ASP.NET Core Minimal API, Program.cs
|
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
|
```bash
|
||||||
@@ -25,6 +52,12 @@ dotnet run --project src/Tnsu.ApprovalRoute.Api
|
|||||||
|
|
||||||
Требуется PostgreSQL (строка подключения — `ConnectionStrings:Postgres` в `appsettings.json`).
|
Требуется PostgreSQL (строка подключения — `ConnectionStrings:Postgres` в `appsettings.json`).
|
||||||
|
|
||||||
|
Авторизация:
|
||||||
|
- Entra ID — задать `Entra:TenantId` и `Entra:Audience` в конфигурации
|
||||||
|
- Без Entra — используется dev-схема, текущий пользователь передаётся заголовком `X-Dev-User-Email`
|
||||||
|
|
||||||
|
После запуска документация API доступна на `/scalar`.
|
||||||
|
|
||||||
## Запуск через Docker Compose
|
## Запуск через Docker Compose
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -32,4 +65,17 @@ cp .env.example .env
|
|||||||
docker compose up --build
|
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
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
# approval-route-admin
|
|
||||||
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
Short summary on functionality and used technologies.
|
|
||||||
|
|
||||||
[picture of the solution in action, if possible]
|
|
||||||
|
|
||||||
## Used SharePoint Framework Version
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Applies to
|
|
||||||
|
|
||||||
- [SharePoint Framework](https://aka.ms/spfx)
|
|
||||||
- [Microsoft 365 tenant](https://docs.microsoft.com/sharepoint/dev/spfx/set-up-your-developer-tenant)
|
|
||||||
|
|
||||||
> Get your own free development tenant by subscribing to [Microsoft 365 developer program](http://aka.ms/o365devprogram)
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
> Any special pre-requisites?
|
|
||||||
|
|
||||||
## Solution
|
|
||||||
|
|
||||||
| Solution | Author(s) |
|
|
||||||
| ----------- | ------------------------------------------------------- |
|
|
||||||
| folder name | Author details (name, company, twitter alias with link) |
|
|
||||||
|
|
||||||
## Version history
|
|
||||||
|
|
||||||
| Version | Date | Comments |
|
|
||||||
| ------- | ---------------- | --------------- |
|
|
||||||
| 1.1 | March 10, 2021 | Update comment |
|
|
||||||
| 1.0 | January 29, 2021 | Initial release |
|
|
||||||
|
|
||||||
## Disclaimer
|
|
||||||
|
|
||||||
**THIS CODE IS PROVIDED _AS IS_ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Minimal Path to Awesome
|
|
||||||
|
|
||||||
- Clone this repository
|
|
||||||
- Ensure that you are at the solution folder
|
|
||||||
- in the command-line run:
|
|
||||||
- `npm install -g @rushstack/heft`
|
|
||||||
- `npm install`
|
|
||||||
- `heft start`
|
|
||||||
|
|
||||||
> Include any additional steps as needed.
|
|
||||||
|
|
||||||
Other build commands can be listed using `heft --help`.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
Description of the extension that expands upon high-level summary above.
|
|
||||||
|
|
||||||
This extension illustrates the following concepts:
|
|
||||||
|
|
||||||
- topic 1
|
|
||||||
- topic 2
|
|
||||||
- topic 3
|
|
||||||
|
|
||||||
> Notice that better pictures and documentation will increase the sample usage and the value you are providing for others. Thanks for your submissions advance.
|
|
||||||
|
|
||||||
> Share your web part with others through Microsoft 365 Patterns and Practices program to get visibility and exposure. More details on the community, open-source projects and other activities from http://aka.ms/m365pnp.
|
|
||||||
|
|
||||||
## References
|
|
||||||
|
|
||||||
- [Getting started with SharePoint Framework](https://docs.microsoft.com/sharepoint/dev/spfx/set-up-your-developer-tenant)
|
|
||||||
- [Building for Microsoft teams](https://docs.microsoft.com/sharepoint/dev/spfx/build-for-teams-overview)
|
|
||||||
- [Use Microsoft Graph in your solution](https://docs.microsoft.com/sharepoint/dev/spfx/web-parts/get-started/using-microsoft-graph-apis)
|
|
||||||
- [Publish SharePoint Framework applications to the Marketplace](https://docs.microsoft.com/sharepoint/dev/spfx/publish-to-marketplace-overview)
|
|
||||||
- [Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) - Guidance, tooling, samples and open-source controls for your Microsoft 365 development
|
|
||||||
- [Heft Documentation](https://heft.rushstack.io/)
|
|
||||||
Reference in New Issue
Block a user