- Создан новый JS модуль newEmployeesScroller.js - Новые сотрудники теперь загружаются через API с клиента - Аватары используют глобальные URL (как в модале) - Убран серверный рендеринг из feed_list view - Шаблон использует пустой контейнер для JS инициализации - Добавлен полный collapse блок с последним комментарием - Добавлена форма быстрого комментария с emoji picker - Исправлена проблема с localhost URL в аватарах
EUSRR - Корпоративная система управления
Комплексная корпоративная информационная система с интеграцией Active Directory/LDAP для управления сотрудниками, документами, заявками и внутренними коммуникациями.
Основные возможности
🏢 Управление сотрудниками
- Интеграция с Active Directory через LDAP
- Автоматическая синхронизация данных сотрудников
- Управление отделами и должностями
- Профили сотрудников с фотографиями и контактами
- Иерархия отделов с назначением руководителей
📄 Система документооборота
- Загрузка и распространение документов
- Отправка документов всем сотрудникам, конкретным отделам или индивидуально
- Автоматические уведомления о новых документах
- Отслеживание ознакомления с документами
- Визуальное выделение неознакомленных документов
📬 Система уведомлений
- Веб-уведомления в реальном времени (WebSocket)
- Email-уведомления с настраиваемой периодичностью (мгновенно, ежедневно, еженедельно)
- Telegram-уведомления через бота
- Индивидуальные настройки уведомлений для каждого пользователя
- Звуковые оповещения о новых уведомлениях
📋 Система заявок
- Создание и отслеживание заявок
- Назначение ответственных отделов
- История изменений заявок
- Комментарии и обсуждения
💬 Внутренние коммуникации
- Лента новостей организации
- Посты с комментариями
- Упоминания сотрудников (@mention)
- Ленты новостей по отделам
📅 Календарь событий
- Корпоративный календарь
- События отделов и общеорганизационные события
- Интеграция с календарем на главной странице
Технологический стек
Backend
- Python 3.13.5
- Django 5.2.4 - основной веб-фреймворк
- Django REST Framework - REST API
- Django Channels - WebSocket поддержка
- PostgreSQL / SQLite - база данных
- python-ldap - интеграция с Active Directory
- Celery (опционально) - асинхронные задачи
Frontend
- Bootstrap 5 - UI фреймворк
- Vanilla JavaScript (ES6+) - модульная архитектура
- WebSocket - реальное время
- Fetch API - HTTP запросы
Интеграции
- Active Directory (LDAP) - управление пользователями
- Telegram Bot API - уведомления в Telegram
- SMTP (Yandex) - email-рассылка
- SMS Gateway - SMS-уведомления
Установка и запуск
Предварительные требования
- Python 3.11+
- PostgreSQL 14+ или SQLite (для разработки)
- Active Directory (опционально, можно отключить через
LDAP_ENABLED=False) - Git
Установка
- Клонирование репозитория:
git clone https://github.com/IgorNadein/EUSRR.git
cd EUSRR
- Создание виртуального окружения:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# или
.venv\Scripts\activate # Windows
- Установка зависимостей:
cd backend
pip install -r requirements.txt
- Настройка окружения:
# Скопируйте .env.example в .env и настройте параметры
cp .env.example .env
Основные параметры в .env:
# База данных
USE_SQLITE=True # True для SQLite, False для PostgreSQL
# Django
SECRET_KEY=your-secret-key
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# LDAP (можно отключить)
LDAP_ENABLED=False # True для интеграции с AD
# Email
EMAIL_HOST=smtp.yandex.ru
EMAIL_PORT=465
EMAIL_HOST_USER=your-email@yandex.ru
EMAIL_HOST_PASSWORD=your-password
# Telegram (опционально)
TELEGRAM_BOT_TOKEN=your-bot-token
- Применение миграций:
python manage.py migrate
- Создание суперпользователя:
python manage.py createsuperuser
- Сбор статических файлов:
python manage.py collectstatic --noinput
Запуск разработки
# Запуск сервера разработки
python manage.py runserver 9000
# В отдельном терминале - Telegram бот (опционально)
python manage.py run_telegram_bot
Приложение будет доступно по адресу: http://localhost:9000
Запуск в продакшене
- Настройте
.envдля продакшена:
DEBUG=False
USE_SQLITE=False
ALLOWED_HOSTS=your-domain.com
LDAP_ENABLED=True
- Используйте WSGI сервер (Gunicorn):
pip install gunicorn
gunicorn eusrr_backend.wsgi:application --bind 0.0.0.0:8000
-
Настройте веб-сервер (Nginx) как reverse proxy
-
Настройте supervisor/systemd для автозапуска
Структура проекта
EUSRR/
├── backend/ # Django проект
│ ├── api/ # REST API
│ │ └── v1/ # API версия 1
│ │ ├── documents/ # API документов
│ │ ├── employees/ # API сотрудников
│ │ └── ...
│ ├── documents/ # Приложение документов
│ ├── employees/ # Приложение сотрудников
│ ├── notifications/ # Система уведомлений
│ ├── requests_app/ # Система заявок
│ ├── feed/ # Лента новостей
│ ├── calendar_app/ # Календарь событий
│ ├── communications/ # Коммуникации
│ ├── static/ # Статические файлы
│ │ ├── css/ # Стили
│ │ └── js/ # JavaScript модули
│ ├── templates/ # HTML шаблоны
│ ├── media/ # Загруженные файлы
│ └── eusrr_backend/ # Настройки Django
└── README.md # Этот файл
Основные функции
Работа с документами
-
Создание документа:
- Загрузка файла
- Выбор получателей (все/отделы/конкретные сотрудники)
- Автоматические уведомления
-
Отслеживание ознакомления:
- Клик на документ автоматически отмечает ознакомление
- Визуальное выделение неознакомленных документов
- Ведомость ознакомлений для администраторов
Система уведомлений
-
Веб-уведомления:
- Звуковое оповещение
- Счётчик непрочитанных
- Список в реальном времени
-
Email-уведомления:
- Мгновенная отправка
- Ежедневный дайджест
- Еженедельный дайджест
-
Telegram-уведомления:
- Привязка аккаунта через код
- Мгновенная отправка важных уведомлений
LDAP интеграция
- Двусторонняя синхронизация данных
- Создание пользователей в AD
- Управление отделами через OU
- Автоматическое обновление при изменениях
API Документация
REST API доступен по адресу /api/v1/
Основные эндпоинты:
/api/v1/employees/- Сотрудники/api/v1/departments/- Отделы/api/v1/documents/- Документы/api/v1/requests/- Заявки/api/v1/calendar/events/- События календаря/api/notifications/- Уведомления
Документация API: /api/docs/ (если установлен drf-spectacular)
Разработка
Создание миграций
python manage.py makemigrations
python manage.py migrate
Запуск тестов
pytest
# или
python manage.py test
Линтинг кода
flake8 .
black .
isort .
Настройка уведомлений
Настройте SMTP в .env:
EMAIL_HOST=smtp.yandex.ru
EMAIL_PORT=465
EMAIL_USE_SSL=true
EMAIL_HOST_USER=your-email@yandex.ru
EMAIL_HOST_PASSWORD=your-app-password
DEFAULT_FROM_EMAIL=Company <your-email@yandex.ru>
Telegram
- Создайте бота через @BotFather
- Получите токен
- Настройте в
.env:
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_BOT_USERNAME=your_bot_name
- Запустите бота:
python manage.py run_telegram_bot
Отложенная отправка
Для дайджестов используйте команду:
python manage.py send_pending_notifications --batch-size=100
Настройте cron для автоматического запуска:
# Ежедневно в 9:00
0 9 * * * /path/to/python /path/to/manage.py send_pending_notifications
Безопасность
- Используйте HTTPS в продакшене
- Настройте CORS правильно
- Используйте сильные пароли
- Регулярно обновляйте зависимости
- Настройте файрвол
- Используйте переменные окружения для секретов
Документация и troubleshooting
Архитектура
- REALTIME_MIGRATION_GUIDE.md ⭐ - Миграция на архитектуру realtime
- backend/realtime/README.md - WebSocket API документация
Руководства по функциям
- MESSAGE_EDITING_ANALYSIS.md - Редактирование сообщений
- POLLS_IMPLEMENTATION.md - Система опросов
- PERSONAL_CALENDAR_FEATURE.md - Персональный календарь
- REACTIONS_FROM_DATABASE.md - Система реакций
- REQUESTS_RECIPIENTS_PLAN.md - Система получателей заявок
WebSocket диагностика
- WEBSOCKET_1006_QUICK_GUIDE.md ⚡ - Быстрая шпаргалка (5 минут)
- WEBSOCKET_1006_PRIORITY_CHECK.md - Приоритетная диагностика
- WEBSOCKET_1006_DIAGNOSTIC_PLAN.md - Полный план диагностики
- WEBSOCKET_KEEPALIVE_FIX.md - Исправление keepalive
- WEBSOCKET_UNIFIED_MIGRATION.md - Миграция на унифицированный WS
Рефакторинг и оптимизация
- REFACTORING_SUMMARY.md - Общий итог рефакторинга
- CACHE_OPTIMIZATION_SUMMARY.md - Оптимизация кеширования
- API_REFACTORING_TESTING.md - Тестирование API
Лицензия
Проприетарное ПО © 2024-2025 Robotail
Контакты
- Автор: Игорь Надеин
- GitHub: @IgorNadein
- Проект: EUSRR
Changelog
v2.0.0 (21.11.2025)
- ✨ Добавлена возможность отправки документов на отделы
- ✨ Визуальное выделение неознакомленных документов
- ✨ Автоматическое ознакомление при клике на документ
- ✨ Адаптивная мобильная версия
- 🐛 Исправлена фильтрация "Мои документы" для загрузивших
- 🐛 Исправлена ведомость ознакомлений с учётом отделов
- 🔧 Добавлена поддержка массовых рассылок с порогом
v1.0.0
- 🎉 Первый релиз
- ✨ Базовая система документооборота
- ✨ Интеграция с LDAP
- ✨ Система уведомлений
- ✨ Управление заявками
Description
Разработка — в develop; локальный CI работает через Git hooks и quality gates перед коммитом/пушем. После проверки — слияние в master. Push в master запускает blue-green деплой на CORP через Gitea Actions и Telegram-отчёт. Статус деплоя — «Действия».
https://corp.robotail.pro/
Readme
87 MiB
Languages
Python
47.7%
TypeScript
30%
JavaScript
15.5%
HTML
4%
SCSS
2.1%
Other
0.7%