feat: docker-compose для локального запуска, .env.example, инструкция в README
This commit is contained in:
parent
14025ae30d
commit
11d018d4f6
2 changed files with 93 additions and 33 deletions
59
README.md
59
README.md
|
|
@ -6,6 +6,61 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Быстрый старт (локальный Docker)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Клонировать репозиторий
|
||||||
|
git clone https://git.itoservice.ru/dosnav/support-bot-saas.git
|
||||||
|
cd support-bot-saas
|
||||||
|
|
||||||
|
# 2. Создать backend/.env из шаблона
|
||||||
|
cp backend/.env.example backend/.env
|
||||||
|
# отредактировать backend/.env — указать OPENROUTER_API_KEY и JWT_SECRET
|
||||||
|
|
||||||
|
# 3. Запустить
|
||||||
|
docker compose up --build -d
|
||||||
|
```
|
||||||
|
|
||||||
|
После запуска веб-интерфейс доступен по адресу: **http://localhost:8080**
|
||||||
|
|
||||||
|
### Первый вход
|
||||||
|
|
||||||
|
1. Открой **http://localhost:8080** в браузере
|
||||||
|
2. Зарегистрируйся (Email + пароль, тариф free)
|
||||||
|
3. После регистрации автоматически войдёшь в систему
|
||||||
|
4. Создай коллекцию (например «OFRS»)
|
||||||
|
5. Загрузи JSON-файл с тикетами через кнопку «Выбрать JSON/CSV файл»
|
||||||
|
|
||||||
|
Формат JSON:
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"ticket_id": "12345",
|
||||||
|
"category": "Сбой работы",
|
||||||
|
"description": "Описание проблемы",
|
||||||
|
"client": "Имя клиента",
|
||||||
|
"messages": [
|
||||||
|
{"role": "client", "text": "У меня проблема"},
|
||||||
|
{"role": "support", "text": "Решение проблемы"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
6. После загрузки тикетов введи вопрос в поле поиска и нажми «Найти»
|
||||||
|
|
||||||
|
Система найдёт похожие тикеты, а LLM сформирует ответ на их основе.
|
||||||
|
|
||||||
|
### Остановка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose down
|
||||||
|
# С данными:
|
||||||
|
docker compose down -v
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Архитектура
|
## Архитектура
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -296,6 +351,8 @@ support-bot-saas/
|
||||||
│ ├── 00-namespace.yaml
|
│ ├── 00-namespace.yaml
|
||||||
│ ├── 01-postgres.yaml ... 06-ingress.yaml
|
│ ├── 01-postgres.yaml ... 06-ingress.yaml
|
||||||
│ └── traefik/ # Traefik CRDs + Deployment
|
│ └── traefik/ # Traefik CRDs + Deployment
|
||||||
|
├── docker-compose.yml # локальный запуск (Docker)
|
||||||
├── tickets*.json # тестовые данные
|
├── tickets*.json # тестовые данные
|
||||||
└── README.md
|
├── README.md
|
||||||
|
└── backend/.env.example # шаблон .env для бэкенда
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,55 +1,58 @@
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: support_bot
|
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
ports:
|
POSTGRES_DB: support_bot
|
||||||
- "5432:5432"
|
|
||||||
volumes:
|
volumes:
|
||||||
- pgdata:/var/lib/postgresql/data
|
- pgdata:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
ports:
|
healthcheck:
|
||||||
- "6379:6379"
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
qdrant:
|
qdrant:
|
||||||
image: qdrant/qdrant:latest
|
image: qdrant/qdrant
|
||||||
ports:
|
|
||||||
- "6333:6333"
|
|
||||||
- "6334:6334"
|
|
||||||
volumes:
|
volumes:
|
||||||
- qdrant_data:/qdrant/storage
|
- qdrant_storage:/qdrant/storage
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:6333/healthz"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
build: ./backend
|
build: ./backend
|
||||||
ports:
|
env_file: ./backend/.env
|
||||||
- "8000:8000"
|
|
||||||
env_file: .env
|
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/support_bot
|
DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres:5432/support_bot
|
||||||
- REDIS_URL=redis://redis:6379/0
|
REDIS_URL: redis://redis:6379/0
|
||||||
- QDRANT_URL=http://qdrant:6333
|
QDRANT_URL: http://qdrant:6333
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
postgres:
|
||||||
- redis
|
condition: service_healthy
|
||||||
- qdrant
|
redis:
|
||||||
|
condition: service_healthy
|
||||||
|
qdrant:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
worker:
|
frontend:
|
||||||
build: ./backend
|
build: ./frontend
|
||||||
command: celery -A app.workers.process_file worker --loglevel=info
|
ports:
|
||||||
env_file: .env
|
- "8080:80"
|
||||||
environment:
|
|
||||||
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/support_bot
|
|
||||||
- REDIS_URL=redis://redis:6379/0
|
|
||||||
- QDRANT_URL=http://qdrant:6333
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- backend
|
||||||
- redis
|
|
||||||
- qdrant
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
qdrant_data:
|
qdrant_storage:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue