Система для персонализированных рекомендаций мест отдыха и развлечений с поддержкой UGC, рейтинговой системой и интеграцией LLM.
- Диалог с LLM для естественного поиска мест
- Персонализированные рекомендации на основе предпочтений
- UGC: отзывы, рейтинги, фото
- Автоматический парсинг внешних источников
- Система модерации контента
- Векторный поиск по описаниям и отзывам
- Геопоиск по координатам
- Frontend: Next.js 14 (React, TypeScript, Tailwind CSS)
- Backend: FastAPI (Python 3.11+)
- База данных: PostgreSQL 16 + pgvector
- Кэш/Очереди: Redis 7, Celery + Beat
- LLM: Google Gemini API / OpenAI API
- Парсинг: Playwright, BeautifulSoup, Telethon
- Docker и Docker Compose
- (Опционально) Python 3.11+ и Node.js 18+ для локальной разработки
git clone https://github.com/eugenesuv/Python-project.gitСоздайте файл .env в корне проекта:
# Windows
copy .env.example
# Linux/Mac
cp .env.exampleОтредактируйте .env и заполните необходимые ключи:
# Обязательно измените!
SECRET_KEY=your-secret-key-here-minimum-32-characters
# LLM - выберите один из провайдеров
# Gemini (рекомендуется, бесплатный) - https://makersuite.google.com/app/apikey
GEMINI_API_KEY=your-gemini-api-key
GEMINI_MODEL=gemini-1.5-flash
LLM_PROVIDER=gemini
# Или OpenAI - https://platform.openai.com/api-keys
# OPENAI_API_KEY=your-openai-api-key
# OPENAI_MODEL=gpt-4o-mini
# LLM_PROVIDER=openai
# Telegram (опционально, для парсинга каналов) - https://my.telegram.org
TELEGRAM_API_ID=
TELEGRAM_API_HASH=docker-compose up -dПодождите 1-2 минуты, пока все контейнеры запустятся.
docker-compose exec backend alembic upgrade headdocker-compose exec postgres psql -U postgres -d recommendations_db -c "CREATE EXTENSION IF NOT EXISTS vector;"Для быстрого старта можно добавить 5 тестовых мест:
docker-compose exec backend python scripts/add_test_data.pyДля заполнения базы данных реальными местами запустите парсинг:
docker-compose exec backend python parse_places.pyЭтот скрипт:
- Парсит места из KudaGo API, Яндекс.Карт и других источников
- Добавляет места в базу данных
- Автоматически проверяет дубликаты
- Нормализует данные
Примечание: Парсинг может занять несколько минут. Рекомендуется запускать после первого запуска проекта.
docker-compose exec backend python scripts/create_admin.pyСледуйте инструкциям для создания первого администратора.
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Документация (Swagger): http://localhost:8000/docs
- Откройте http://localhost:3000/places
- Используйте фильтры: категории, ценовой диапазон, рейтинг
- Или используйте чат для естественного поиска
-
На главной странице введите запрос, например:
- "Хочу бар с джазом в субботу"
- "Найди рестораны итальянской кухни"
- "Где можно недорого поесть?"
-
Система найдет подходящие места и даст рекомендации
- Зарегистрируйтесь на http://localhost:3000/signup
- Войдите в систему
- Откройте любое место
- Оставьте отзыв с рейтингом
- Войдите как модератор или администратор
- Откройте http://localhost:3000/moderation
- Просматривайте и обрабатывайте очередь модерации
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run devcd backend
pytest tests/ -v.
├── backend/ # FastAPI приложение
│ ├── app/
│ │ ├── api/ # API эндпоинты
│ │ ├── models/ # SQLAlchemy модели
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # Бизнес-логика
│ │ └── core/ # Конфигурация, безопасность
│ ├── tasks/ # Celery задачи
│ ├── scripts/ # Утилиты и скрипты
│ ├── tests/ # Тесты
│ └── alembic/ # Миграции БД
├── frontend/ # Next.js приложение
│ ├── app/ # App Router
│ ├── components/ # React компоненты
│ └── lib/ # Утилиты
├── docs/ # Документация
├── docker-compose.yml # Docker конфигурация
└── README.md
Основные настройки в файле .env:
SECRET_KEY- секретный ключ для JWT (обязательно измените!)GEMINI_API_KEYилиOPENAI_API_KEY- ключ для LLMTELEGRAM_API_IDиTELEGRAM_API_HASH- для парсинга Telegram (опционально)DATABASE_URL- строка подключения к БДREDIS_URL- строка подключения к Redis
После запуска доступна интерактивная документация:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Проект включает комплексные тесты:
- Unit-тесты для сервисов
- Integration-тесты для API
- Security-тесты
- Performance-тесты
Запуск всех тестов:
cd backend
pytest tests/ -v --cov=appdocker-compose logs
docker-compose psdocker-compose exec postgres psql -U postgres -d recommendations_db -c "SELECT 1;"- Проверьте интернет-соединение
- Убедитесь, что внешние источники доступны
- Проверьте логи:
docker-compose logs celery_worker
MIT