Игорь Надеин 826298ff08 feat(calendar): add frontend components for calendar management (Phase 3 - Part 1)
Added API Integration:
- calendarsApi.js: Complete API wrapper for /api/v1/calendar/calendars/
  * CRUD operations (create, read, update, delete)
  * Subscribe/unsubscribe endpoints
  * My subscriptions endpoint
  * Cache invalidation support

Added UI Components:
- calendarManager.js: Calendar list management component
  * Displays available calendars with color indicators
  * Toggle calendar visibility (checkboxes)
  * Subscribe/unsubscribe buttons
  * Edit calendar button (for owners)
  * Real-time calendar filtering

- calendarManageModal.js: Calendar creation/editing modal
  * Create personal/public/department calendars
  * Edit calendar properties (title, description, color)
  * Delete calendar (owner only)
  * Department selection for department calendars
  * Auto-subscription settings

Added Styles:
- calendar-manager.scss: BEM-based styling
  * Calendar list with glassmorphism design
  * Color indicators and icons
  * Hover states and animations
  * Responsive design for mobile
  * Empty state styling

Updated Templates:
- calendar_desktop.html: Added calendar list UI
  * Replaced dropdown with collapsible calendar list
  * Added manage calendar button
  * Updated create event button icon

- calendar_modal_manage.html: New modal template
  * Form fields for calendar properties
  * Radio buttons for calendar types
  * Department selector
  * Auto-subscription checkboxes
  * Delete button for owners

- rightbar_calendar.html: Included new modal

Updated Imports:
- main.scss: Added calendar-manager component import

Status: Phase 3 Part 1 complete (UI components ready)
Next: Part 2 - Integration with calendarWidget.js for event filtering
2026-02-11 09:42:18 +03:00
-
2026-01-09 14:12:54 +03:00

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. Клонирование репозитория:
git clone https://github.com/IgorNadein/EUSRR.git
cd EUSRR
  1. Создание виртуального окружения:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# или
.venv\Scripts\activate  # Windows
  1. Установка зависимостей:
cd backend
pip install -r requirements.txt
  1. Настройка окружения:
# Скопируйте .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
  1. Применение миграций:
python manage.py migrate
  1. Создание суперпользователя:
python manage.py createsuperuser
  1. Сбор статических файлов:
python manage.py collectstatic --noinput

Запуск разработки

# Запуск сервера разработки
python manage.py runserver 9000

# В отдельном терминале - Telegram бот (опционально)
python manage.py run_telegram_bot

Приложение будет доступно по адресу: http://localhost:9000

Запуск в продакшене

  1. Настройте .env для продакшена:
DEBUG=False
USE_SQLITE=False
ALLOWED_HOSTS=your-domain.com
LDAP_ENABLED=True
  1. Используйте WSGI сервер (Gunicorn):
pip install gunicorn
gunicorn eusrr_backend.wsgi:application --bind 0.0.0.0:8000
  1. Настройте веб-сервер (Nginx) как reverse proxy

  2. Настройте 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)

Разработка

Создание миграций

python manage.py makemigrations
python manage.py migrate

Запуск тестов

pytest
# или
python manage.py test

Линтинг кода

flake8 .
black .
isort .

Настройка уведомлений

Email

Настройте 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

  1. Создайте бота через @BotFather
  2. Получите токен
  3. Настройте в .env:
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_BOT_USERNAME=your_bot_name
  1. Запустите бота:
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

Архитектура

Руководства по функциям

WebSocket диагностика

Рефакторинг и оптимизация

Лицензия

Проприетарное ПО © 2024-2025 Robotail

Контакты

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%