Система автоматизации внутренних HR-уведомлений с поддержкой Telegram и REST API.
Курсовой проект для РЭУ им. Г.В. Плеханова Тема: "Автоматизация внутренней системы для информирования сотрудников и взаимодействия с HR"
HR Notification Bot - это комплексная система для автоматизации информирования сотрудников компании. Система состоит из двух компонентов:
- Telegram Бот - интерактивный интерфейс для сотрудников
- REST API - программный интерфейс для интеграции с корпоративными системами
✅ Массовая рассылка уведомлений всем сотрудникам ✅ Персонализированные сообщения конкретным пользователям ✅ Управление новостями компании ✅ Система ролей (администраторы HR / сотрудники) ✅ REST API для интеграции с внешними системами ✅ Красивый интерфейс с кнопками в Telegram
Для всех сотрудников:
/start- Начало работы с ботом (показывает кнопки меню)/help- Список всех команд/news- Просмотр последних новостей от HR/company- Список всех сотрудников компании
Для HR-администраторов:
/add_news <текст>- Добавить новость в систему/broadcast <текст>- Массовая рассылка всем сотрудникам/send <username> <текст>- Личное сообщение конкретному сотруднику
| Метод | Endpoint | Описание |
|---|---|---|
| GET | /api/health |
Проверка работоспособности API |
| GET | /api/users |
Получить список всех пользователей |
| POST | /api/news |
Добавить новость |
| POST | /api/broadcast |
Массовая рассылка всем сотрудникам |
| POST | /api/send |
Отправить сообщение конкретному пользователю |
# Клонировать репозиторий
git clone <repository-url>
cd HR
# Создать виртуальное окружение
python3 -m venv venv
# Активировать виртуальное окружение
source venv/bin/activate # для macOS/Linux
# или
venv\Scripts\activate # для Windows
# Установить зависимости
pip install -r requirements.txt- Откройте Telegram и найдите @BotFather
- Отправьте команду
/newbot - Введите имя бота (например:
HR Helper) - Введите username бота (должен заканчиваться на
bot) - BotFather пришлет вам токен
# Скопируйте пример конфига
cp config.example.py config.py
# Откройте config.py и вставьте ваш токен от BotFather
nano config.pyОткройте database.py и замените тестовые chat_id на реальные:
test_users = [
(YOUR_CHAT_ID, 'your_username', 'Your Name', 1), # Администратор
]Чтобы узнать свой chat_id, напишите боту @userinfobot в Telegram.
Для Windows (проще всего):
Двойной клик по файлу start.bat - он автоматически установит зависимости и запустит систему!
Для macOS/Linux или вручную:
python main.pyВы должны увидеть:
============================================================
HR NOTIFICATION BOT - Система HR-уведомлений
============================================================
🌐 Запуск REST API на http://localhost:5001
🤖 Запуск Telegram бота...
✅ Telegram бот запущен и готов к работе!
Готово! Система запущена и работает:
- Telegram бот доступен в мессенджере
- REST API доступен по адресу
http://localhost:5001
curl http://localhost:5001/api/healthОтвет:
{
"status": "ok",
"message": "HR Notification Bot API is running",
"version": "1.0.0"
}curl http://localhost:5001/api/userscurl -X POST http://localhost:5001/api/news \
-H "Content-Type: application/json" \
-d '{"text": "Завтра выходной день!"}'curl -X POST http://localhost:5001/api/broadcast \
-H "Content-Type: application/json" \
-d '{"message": "Внимание всем! Важное объявление от HR"}'curl -X POST http://localhost:5001/api/send \
-H "Content-Type: application/json" \
-d '{"username": "mark", "message": "Напоминаю про встречу в 15:00"}'Подробная инструкция по демонстрации проекта преподавателю находится в файле DEMO.md.
Она включает:
- Пошаговый сценарий демонстрации
- Примеры запросов для Postman
- Ответы на возможные вопросы
- Технические детали проекта
HR/
├── main.py # Точка входа - запуск бота и API
├── bot.py # Логика Telegram бота
├── api.py # REST API эндпоинты (Flask)
├── database.py # Работа с базой данных (SQLite)
├── config.py # Конфигурация (токен бота)
├── requirements.txt # Зависимости Python
├── database.db # База данных SQLite (создается автоматически)
├── README.md # Документация
└── DEMO.md # Инструкция по демонстрации
- Python 3 - язык программирования
- python-telegram-bot 20.7 - библиотека для работы с Telegram Bot API
- Flask 3.0.0 - микрофреймворк для создания REST API
- SQLite - встроенная реляционная база данных
| Поле | Тип | Описание |
|---|---|---|
| id | INTEGER | Автоинкремент (PK) |
| chat_id | INTEGER | Telegram chat_id (уникальный) |
| username | TEXT | Username пользователя |
| full_name | TEXT | Полное имя пользователя |
| is_admin | INTEGER | Флаг администратора (0/1) |
| created_at | TEXT | Дата регистрации |
| Поле | Тип | Описание |
|---|---|---|
| id | INTEGER | Автоинкремент (PK) |
| text | TEXT | Текст новости |
| created_at | TEXT | Дата создания |
- Система ролей: только администраторы могут отправлять массовые рассылки
- Валидация входных данных в API
- Хранение токена бота в отдельном конфигурационном файле (не в Git)
- SQLite защита от SQL-инъекций через параметризованные запросы
- Использовать HTTPS для API
- Добавить API-ключи для авторизации запросов
- Использовать PostgreSQL вместо SQLite
- Добавить логирование всех действий
- Настроить rate limiting для API
Эта система может использоваться для:
-
Оперативного информирования:
- Изменения в графике работы
- Экстренные объявления
- Напоминания о важных событиях
-
Автоматизации HR-процессов:
- Приветствие новых сотрудников
- Напоминания о дедлайнах
- Уведомления о корпоративных событиях
-
Интеграции с корпоративными системами:
- 1C может автоматически отправлять уведомления через API
- Корпоративный портал может публиковать новости
- CRM может информировать сотрудников о важных событиях
Проект демонстрирует:
- ✅ Работу с Telegram Bot API
- ✅ Создание REST API на Flask
- ✅ Работу с базами данных (SQLite)
- ✅ Многопоточность (одновременная работа бота и API)
- ✅ Архитектуру современных веб-приложений
- ✅ Интеграцию различных систем
- ✅ Практическое применение для автоматизации бизнес-процессов
При возникновении вопросов или проблем:
- Проверьте DEMO.md - там есть ответы на частые вопросы
- Убедитесь что токен бота правильно указан в config.py
- Проверьте что в database.py указаны реальные chat_id
Готово к использованию! 🚀