# Руководство по локальному запуску (Local Setup)

В этом документе описаны шаги для поднятия проекта на рабочей машине разработчика или для проведения презентации (демо). Проект поддерживает как легковесный запуск на SQLite, так и масштабируемый запуск с использованием PostgreSQL и RabbitMQ.

## 1. Системные требования
- **Python 3.10+** (для микросервисов)
- **Docker и Docker Compose** (для запуска PostgreSQL, RabbitMQ и т.д.)
- **PowerShell** (основные launch-скрипты написаны на нём)

## 2. Быстрый старт: Режим ДЕМО (Автоматически)

Самый удобный способ поднять весь стек контакт-центра одной командой. Скрипт запустит сервисы, прогонит смоук-тесты и заполнит базу моковыми данными:

```powershell
powershell -ExecutionPolicy Bypass -File scripts\prepare_demo.ps1
```

**Что делает `prepare_demo.ps1`**:
- Поднимает все микросервисы проекта в фоне (логи складываются в папку `.local_stack\logs`).
- Создает тестового клиента и историю его взаимодействия.
- Симулирует звонок с IVR и создает запись в `recording-service`.
- Наливает статьи Базы Знаний.
- Забрасывает метрики для KPI отчетов в `reporting-service`.

**Остановка и очистка:**
```powershell
# Остановить все фоновые процессы сервисов
powershell -ExecutionPolicy Bypass -File scripts\stop_all_local.ps1

# Полностью очистить рабочее пространство сервера (удалить временные БД и артефакты)
powershell -ExecutionPolicy Bypass -File scripts\clean_workspace.ps1
```

## 3. Ручной запуск (Local Development)

Если вы разрабатываете конкретный микросервис и вам нужен горячий рестарт (Hot Reload), поднимайте сервисы вручную.

### Шаг 3.1: Установка зависимостей
```bash
python -m pip install -r requirements.txt
```

### Шаг 3.2: Запуск инфраструктуры (Docker)
Если вы не хотите использовать fallback-режим с SQLite, поднимите PostgreSQL и системные сервисы:
```bash
cd deployment
docker compose up -d postgres
cd ..
```

### Шаг 3.3: Миграции Базы Данных
Перед запуском бизнес-логики необходимо проинициализировать схему БД:
```bash
python scripts/migrate_core_db.py
```

### Шаг 3.4: Запуск Gateway и Микросервисов
Для маршрутизации запросов обязательно должен работать `api-gateway`:
```bash
uvicorn gateway.app:app --reload --port 8080
```
Далее в новых консолях вы можете точечно поднимать необходимые вам микросервисы (по умолчанию Gateway проксирует запросы на порты `8001`, `8004` и т.д.):
```bash
uvicorn services.auth_service.app:app --reload --port 8001
uvicorn services.interaction_service.app:app --reload --port 8004
```

## 4. Точки входа (Пользовательские интерфейсы)

Если `gateway.app` успешно запущен на порту 8080, вы можете попасть в веб-интерфейсы платформы по следующим адресам:

- **Рабочее место Оператора**: [http://localhost:8080/operator](http://localhost:8080/operator)
- **Панель Супервизора**: [http://localhost:8080/supervisor](http://localhost:8080/supervisor)
- **Панель Администратора**: [http://localhost:8080/admin](http://localhost:8080/admin)
- **Аналитика (Дашборды)**: [http://localhost:8080/analyst](http://localhost:8080/analyst)

## 5. Полезные скрипты

В папке `scripts/` лежит множество полезных инструментов для разработки:

```bash
# Прогон всех автотестов
pytest -q

# Смоук-чек авторизации (проверка выдачи JWT токенов)
python scripts/oidc_smoke.py --base-url http://localhost:8080

# Снятие и распаковка бэкапа (дамп данных лок. среды)
powershell -ExecutionPolicy Bypass -File scripts\backup_data.ps1
powershell -ExecutionPolicy Bypass -File scripts\restore_data.ps1 -BackupZip e:\Zhan\backups\mvp_cc_data_YYMMDD.zip

# Нагрузочное тестирование (позволяет сгенерировать фейковый трафик звонков)
python scripts/load_test.py --base-url http://localhost:8080 --profile baseline_100_100
```
