Readme
This commit is contained in:
73
README.md
Normal file
73
README.md
Normal 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`).
|
||||
Reference in New Issue
Block a user