# 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`).