diff --git a/README.md b/README.md new file mode 100644 index 0000000..77799ab --- /dev/null +++ b/README.md @@ -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`).