docs: Add comprehensive README.md with project description and setup instructions
This commit is contained in:
parent
b4ba030c7f
commit
0f167fc8ff
347
README.md
Normal file
347
README.md
Normal file
@ -0,0 +1,347 @@
|
||||
# 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
|
||||
|
||||
### Установка
|
||||
|
||||
1. Клонирование репозитория:
|
||||
```bash
|
||||
git clone https://github.com/IgorNadein/EUSRR.git
|
||||
cd EUSRR
|
||||
```
|
||||
|
||||
2. Создание виртуального окружения:
|
||||
```bash
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # Linux/Mac
|
||||
# или
|
||||
.venv\Scripts\activate # Windows
|
||||
```
|
||||
|
||||
3. Установка зависимостей:
|
||||
```bash
|
||||
cd backend
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. Настройка окружения:
|
||||
```bash
|
||||
# Скопируйте .env.example в .env и настройте параметры
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Основные параметры в `.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
|
||||
```
|
||||
|
||||
5. Применение миграций:
|
||||
```bash
|
||||
python manage.py migrate
|
||||
```
|
||||
|
||||
6. Создание суперпользователя:
|
||||
```bash
|
||||
python manage.py createsuperuser
|
||||
```
|
||||
|
||||
7. Сбор статических файлов:
|
||||
```bash
|
||||
python manage.py collectstatic --noinput
|
||||
```
|
||||
|
||||
### Запуск разработки
|
||||
|
||||
```bash
|
||||
# Запуск сервера разработки
|
||||
python manage.py runserver 9000
|
||||
|
||||
# В отдельном терминале - Telegram бот (опционально)
|
||||
python manage.py run_telegram_bot
|
||||
```
|
||||
|
||||
Приложение будет доступно по адресу: http://localhost:9000
|
||||
|
||||
### Запуск в продакшене
|
||||
|
||||
1. Настройте `.env` для продакшена:
|
||||
```env
|
||||
DEBUG=False
|
||||
USE_SQLITE=False
|
||||
ALLOWED_HOSTS=your-domain.com
|
||||
LDAP_ENABLED=True
|
||||
```
|
||||
|
||||
2. Используйте WSGI сервер (Gunicorn):
|
||||
```bash
|
||||
pip install gunicorn
|
||||
gunicorn eusrr_backend.wsgi:application --bind 0.0.0.0:8000
|
||||
```
|
||||
|
||||
3. Настройте веб-сервер (Nginx) как reverse proxy
|
||||
|
||||
4. Настройте 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 # Этот файл
|
||||
```
|
||||
|
||||
## Основные функции
|
||||
|
||||
### Работа с документами
|
||||
|
||||
1. **Создание документа:**
|
||||
- Загрузка файла
|
||||
- Выбор получателей (все/отделы/конкретные сотрудники)
|
||||
- Автоматические уведомления
|
||||
|
||||
2. **Отслеживание ознакомления:**
|
||||
- Клик на документ автоматически отмечает ознакомление
|
||||
- Визуальное выделение неознакомленных документов
|
||||
- Ведомость ознакомлений для администраторов
|
||||
|
||||
### Система уведомлений
|
||||
|
||||
1. **Веб-уведомления:**
|
||||
- Звуковое оповещение
|
||||
- Счётчик непрочитанных
|
||||
- Список в реальном времени
|
||||
|
||||
2. **Email-уведомления:**
|
||||
- Мгновенная отправка
|
||||
- Ежедневный дайджест
|
||||
- Еженедельный дайджест
|
||||
|
||||
3. **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)
|
||||
|
||||
## Разработка
|
||||
|
||||
### Создание миграций
|
||||
```bash
|
||||
python manage.py makemigrations
|
||||
python manage.py migrate
|
||||
```
|
||||
|
||||
### Запуск тестов
|
||||
```bash
|
||||
pytest
|
||||
# или
|
||||
python manage.py test
|
||||
```
|
||||
|
||||
### Линтинг кода
|
||||
```bash
|
||||
flake8 .
|
||||
black .
|
||||
isort .
|
||||
```
|
||||
|
||||
## Настройка уведомлений
|
||||
|
||||
### Email
|
||||
Настройте SMTP в `.env`:
|
||||
```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
|
||||
1. Создайте бота через @BotFather
|
||||
2. Получите токен
|
||||
3. Настройте в `.env`:
|
||||
```env
|
||||
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
|
||||
TELEGRAM_BOT_USERNAME=your_bot_name
|
||||
```
|
||||
4. Запустите бота:
|
||||
```bash
|
||||
python manage.py run_telegram_bot
|
||||
```
|
||||
|
||||
### Отложенная отправка
|
||||
Для дайджестов используйте команду:
|
||||
```bash
|
||||
python manage.py send_pending_notifications --batch-size=100
|
||||
```
|
||||
|
||||
Настройте cron для автоматического запуска:
|
||||
```bash
|
||||
# Ежедневно в 9:00
|
||||
0 9 * * * /path/to/python /path/to/manage.py send_pending_notifications
|
||||
```
|
||||
|
||||
## Безопасность
|
||||
|
||||
- Используйте HTTPS в продакшене
|
||||
- Настройте CORS правильно
|
||||
- Используйте сильные пароли
|
||||
- Регулярно обновляйте зависимости
|
||||
- Настройте файрвол
|
||||
- Используйте переменные окружения для секретов
|
||||
|
||||
## Лицензия
|
||||
|
||||
Проприетарное ПО © 2024-2025 Robotail
|
||||
|
||||
## Контакты
|
||||
|
||||
- Автор: Игорь Надеин
|
||||
- GitHub: [@IgorNadein](https://github.com/IgorNadein)
|
||||
- Проект: [EUSRR](https://github.com/IgorNadein/EUSRR)
|
||||
|
||||
## Changelog
|
||||
|
||||
### v2.0.0 (21.11.2025)
|
||||
- ✨ Добавлена возможность отправки документов на отделы
|
||||
- ✨ Визуальное выделение неознакомленных документов
|
||||
- ✨ Автоматическое ознакомление при клике на документ
|
||||
- ✨ Адаптивная мобильная версия
|
||||
- 🐛 Исправлена фильтрация "Мои документы" для загрузивших
|
||||
- 🐛 Исправлена ведомость ознакомлений с учётом отделов
|
||||
- 🔧 Добавлена поддержка массовых рассылок с порогом
|
||||
|
||||
### v1.0.0
|
||||
- 🎉 Первый релиз
|
||||
- ✨ Базовая система документооборота
|
||||
- ✨ Интеграция с LDAP
|
||||
- ✨ Система уведомлений
|
||||
- ✨ Управление заявками
|
||||
Loading…
x
Reference in New Issue
Block a user