diff --git a/README.md b/README.md index 8d10abd..c797cfd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,18 @@ # 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 # централизованные версии пакетов Tnsu.ApprovalRoute.sln src/ - Tnsu.ApprovalRoute.Domain/ # сущности домена (пусто) - Tnsu.ApprovalRoute.Application/ # MediatR-хендлеры, DI-регистрация слоя - Tnsu.ApprovalRoute.Infrastructure/ # EF Core DbContext, DI-регистрация слоя - Tnsu.ApprovalRoute.Api/ # ASP.NET Core Minimal API, Program.cs + 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 @@ -25,6 +52,12 @@ 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 @@ -32,4 +65,17 @@ cp .env.example .env 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 +``` diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index 4527f75..0000000 --- a/frontend/README.md +++ /dev/null @@ -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 - -![version](https://img.shields.io/badge/version-1.22.1-green.svg) - -## 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/) \ No newline at end of file