This commit is contained in:
2026-06-04 18:09:06 +03:00
parent e353e9e7f9
commit 4a1ad01a13

73
README.md Normal file
View File

@@ -0,0 +1,73 @@
# SMS Task One
Тестовое задание SMS (Middle C#): REST/gRPC API сервера и консольное приложение с PostgreSQL.
## Требования
- [.NET 10 SDK](https://dotnet.microsoft.com/download)
- Docker (для PostgreSQL) или свой экземпляр Postgres 16+
## Структура
| Проект | Назначение |
|--------|------------|
| `Domain` | Доменные модели |
| `Contracts` | DTO, JSON, gRPC proto |
| `ApiServer` | ASP.NET Core: HTTP API + gRPC |
| `ApiClient` | HTTP и gRPC клиенты |
| `Console` | Консоль (часть 3 ТЗ): меню, заказ, БД |
## Сборка
```bash
dotnet build
```
## База данных
Запуск Postgres в Docker (сброс данных):
```bash
./scripts/restart-db.sh
```
Параметры: `localhost:5432`, БД `sms_task`, пользователь/поль `sms` / `sms`.
Подключение через `psql`:
```bash
psql -h localhost -p 5432 -U sms -d sms_task
```
Пароль: `sms`. Вариант с URI:
```bash
psql "postgresql://sms:sms@localhost:5432/sms_task"
```
## ApiServer
```bash
dotnet run --project src/ApiServer/ApiServer.csproj
```
| Сервис | URL |
|--------|-----|
| HTTP API | http://localhost:5053 |
| gRPC | http://localhost:5054 |
Basic Auth (HTTP): `user` / `password` (см. `src/ApiServer/appsettings.json`).
Примеры запросов: `src/ApiServer/ApiServer.http`.
## Console
Сначала запустите ApiServer и БД.
```bash
dotnet run --project src/Console/Console.csproj
```
При старте выбирается протокол: `1` — HTTP, `2` — gRPC. Настройки — в `src/Console/appsettings.json`. Лог пишется в файл `test-sms-console-app-*.log` в каталоге запуска; путь выводится в конце работы.
Формат ввода заказа: `Артикул:Количество;Артикул:Количество` (например `A1004292:1`).