hh-bot/README.md

270 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🤖 HH.ru Bot - Автоматизация поиска работы
> Современный бот для автоматического поиска и отклика на вакансии с поддержкой ИИ-анализа
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
## 🎯 Что умеет бот
- **🔍 Умный поиск** - Находит релевантные вакансии по ключевым словам
- **🤖 ИИ-анализ** - Gemini AI оценивает соответствие резюме требованиям
- **📝 Автоматические отклики** - Отправляет заявки на подходящие вакансии
- **⚙️ Гибкая настройка** - Настраиваемые критерии поиска и фильтрации
- **📊 Детальная статистика** - Отчёты о проделанной работе
- **🛡️ Безопасность** - Имитация человеческого поведения, паузы между действиями
## 🚀 Быстрый старт
### 1. Установка
```bash
# Клонируем репозиторий
git clone https://github.com/itqop/hh-bot.git
cd hh-bot
# Устанавливаем зависимости
pip install -r requirements.txt
```
### 2. Настройка
Создайте файл `.env` в корне проекта:
```env
GEMINI_API_KEY=your_gemini_api_key_here
```
### 3. Подготовка резюме
Создайте файлы с информацией о себе в папке `data/`:
- `experience.txt` - Опыт работы
- `about_me.txt` - О себе
- `skills.txt` - Навыки и технологии
> 💡 При первом запуске бот автоматически создаст примеры этих файлов
### 4. Запуск
```bash
# Рекомендуемый способ
python -m hh_bot
# Альтернативный способ
python main.py
```
## 📋 Пример использования
1. **Запустите бота** одной из команд выше
2. **Настройте поиск** - введите ключевые слова (например: "Python junior")
3. **Выберите параметры** - максимальное количество откликов, использование ИИ
4. **Подтвердите запуск** - бот начнёт работу автоматически
5. **Дождитесь результатов** - получите подробный отчёт о проделанной работе
```
🚀 HH.ru АВТОМАТИЗАЦИЯ v2.0
==================================================
🏗️ Архитектурно правильная версия
🤖 С поддержкой Gemini AI
📄 Загрузка резюме из файлов
==================================================
⚙️ ТЕКУЩИЕ НАСТРОЙКИ:
🔍 Ключевые слова: python junior
📊 Максимум заявок: 40
🤖 Gemini AI: ✅ Доступен
🌐 Режим браузера: Видимый
🎯 НАСТРОЙКА ПОИСКА:
Ключевые слова [python junior]: python разработчик
Использовать AI фильтрацию? [y/n]: y
Максимум заявок [40]: 25
Начать автоматизацию? [y/n]: y
```
## 🏗️ Архитектура проекта
```
hh-bot/
├── 📁 hh_bot/ # Основной пакет
│ ├── 📁 cli/ # Интерфейс командной строки
│ │ └── interface.py # CLI логика
│ ├── 📁 config/ # Конфигурация
│ │ ├── settings.py # Настройки и константы
│ │ └── logging_config.py # Логирование
│ ├── 📁 core/ # Бизнес-логика
│ │ └── job_application_manager.py # Главный менеджер
│ ├── 📁 models/ # Модели данных
│ │ └── vacancy.py # Структуры вакансий
│ └── 📁 services/ # Сервисы
│ ├── hh_api_service.py # API HH.ru
│ ├── gemini_service.py # Gemini AI
│ └── browser_service.py # Автоматизация браузера
├── 📁 data/ # Файлы резюме
├── 📁 logs/ # Логи работы
├── main.py # Точка входа
├── requirements.txt # Зависимости
└── README.md # Документация
```
## ⚙️ Конфигурация
### Переменные окружения
| Переменная | Описание | Значение по умолчанию |
|------------|----------|-----------------------|
| `GEMINI_API_KEY` | API ключ для Gemini AI | - |
### Настройки в коде
```python
# В hh_bot/config/settings.py
class AppConstants:
# Параметры поиска
MAX_VACANCIES_PER_PAGE = 50
MAX_SEARCH_PAGES = 5
DEFAULT_MAX_APPLICATIONS = 40
# ИИ анализ
DEFAULT_AI_THRESHOLD = 0.7
# Таймауты
DEFAULT_TIMEOUT = 30
API_PAUSE_SECONDS = 0.5
```
## 🤖 ИИ-функциональность
### Как работает Gemini AI
1. **Анализ вакансии** - Извлекает требования из описания
2. **Сопоставление с резюме** - Сравнивает навыки и опыт
3. **Оценка соответствия** - Выставляет балл от 0.0 до 1.0
4. **Принятие решения** - Рекомендует откликаться или нет
### Пример анализа
```
🤖 ЭТАП 2: AI анализ вакансий
Анализ 1/15: Python разработчик...
✅ Добавлено в список для отклика
🎯 AI фильтрация завершена:
🤖 Проанализировано: 15
✅ Рекомендовано: 8
📈 % одобрения: 53.3%
```
## 📊 Статистика работы
После завершения работы бот предоставляет подробную статистику:
```
📊 ИТОГОВАЯ СТАТИСТИКА:
============================================================
📝 Всего заявок: 25
✅ Успешных: 18
❌ Неудачных: 2
⚠️ Уже откликались ранее: 5
📈 Успешность: 72.0%
============================================================
🎉 Отлично! Отправлено 18 новых заявок!
💡 Рекомендуется запускать автоматизацию 2-3 раза в день
```
## 🔧 Разработка
### Установка для разработки
```bash
# Клонируем и устанавливаем в dev режиме
git clone https://github.com/itqop/hh-bot.git
cd hh-bot
pip install -e .
# Устанавливаем dev зависимости
pip install pytest black flake8
```
### Запуск тестов
```bash
# Базовые тесты
python test_basic.py
# Или через pytest
python -m pytest test_basic.py -v
```
### Проверка качества кода
```bash
# Форматирование
python -m black hh_bot/ main.py
# Линтер
python -m flake8 hh_bot/ main.py --max-line-length=100
```
## 🛡️ Безопасность
- **Случайные паузы** между действиями (3-6 секунд)
- **Имитация человеческого поведения** в браузере
- **Respect robots.txt** и ограничения API
- **Graceful degradation** при ошибках
- **Подробное логирование** для мониторинга
## 📝 Получение Gemini API ключа
1. Перейдите на [Google AI Studio](https://makersuite.google.com/)
2. Войдите в свой Google аккаунт
3. Создайте новый API ключ
4. Добавьте его в файл `.env`
## ❓ FAQ
**Q: Бот не находит вакансии**
A: Проверьте ключевые слова поиска и настройки фильтрации
**Q: Gemini AI не работает**
A: Убедитесь что API ключ указан правильно в `.env` файле
**Q: Браузер не открывается**
A: Установите Chrome браузер, драйвер установится автоматически
**Q: Много ошибок в логах**
A: Проверьте подключение к интернету и доступность HH.ru
## 📄 Лицензия
**CC BY-NC-SA 4.0** - Некоммерческая лицензия с указанием авторства
⚠️ **ВАЖНО**: Проект запрещено использовать в коммерческих целях!
- ✅ Разрешено: Личное использование, обучение, исследования
- ❌ Запрещено: Продажа, коммерческие сервисы, монетизация
Подробности в файле [LICENSE](LICENSE)
## 🤝 Вклад в проект
1. Форкните репозиторий
2. Создайте ветку для новой функции
3. Внесите изменения
4. Добавьте тесты
5. Создайте Pull Request
## 📞 Поддержка
- 🐛 **Баги**: [GitHub Issues](https://github.com/itqop/hh-bot/issues)
- 💡 **Предложения**: [GitHub Discussions](https://github.com/itqop/hh-bot/discussions)
---
**Поставьте звезду, если проект был полезен!**