95 lines
5.2 KiB
Markdown
95 lines
5.2 KiB
Markdown
# Руководство по локальному запуску (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
|
||
```
|