Corp/README.ru.md

5.8 KiB
Raw Blame History

Язык: English | Русский | Deutsch | Español

EUSRR

EUSRR — внутренний корпоративный портал для сотрудников, заявок, документов, закупок, планирования, учёта посещаемости и коммуникаций в реальном времени. Текущее приложение состоит из ASGI backend на Django/DRF и frontend на Next.js.

Возможности

  • справочник сотрудников, отделы, должности, permissions и опциональная синхронизация с LDAP/AD;
  • заявки, маршруты согласования, задачи и изменения статусов с уведомлениями;
  • документы, вложения, комментарии и ознакомления;
  • закупки, маршруты утверждения, бюджеты и учёт оборудования;
  • календари, общие события и анализ посещаемости через LogStorm;
  • чаты, реакции, опросы и уведомления через единое авторизованное WebSocket-соединение;
  • доставка уведомлений через WebSocket, email и Web Push.

Стек

  • Backend: Python 3.13, Django 5.2, Django REST Framework, Channels и Daphne.
  • Данные и фоновые задачи: PostgreSQL, Redis, Celery и Celery Beat.
  • Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS, TanStack Table и Recharts.
  • Интеграции: LDAP/Active Directory, Web Push и LogStorm.
  • Проверки: pytest/pytest-django, Node test runner, ESLint и production build Next.js.

Закреплённые версии находятся в backend/requirements.txt и frontend/package.json.

Документация и runtime-контракты

При запущенном backend доступны Swagger /api/docs/, ReDoc /api/redoc/, OpenAPI /api/schema/, WebSocket docs /api/ws/docs/ и AsyncAPI /api/ws/schema/ на http://localhost:8000.

Структура репозитория

backend/   Django-приложения, REST API, Celery tasks, migrations и backend tests
frontend/  Next.js-приложение и frontend tests
docs/      Актуальные руководства по API, интеграциям, эксплуатации и разработке

Локальная разработка

Требуются Python 3.13, Node.js 20 или новее, PostgreSQL и Redis. Файл backend/docker-compose.yml поднимает только тестовое окружение Samba AD и не является полным compose-стеком приложения.

Создайте корневой файл окружения:

cp .env.example .env

Пример использует имена сервисов db и redis. Если сервисы запущены локально, замените DB_HOST и REDIS_HOST на 127.0.0.1, задайте DEBUG=True и укажите существующую базу PostgreSQL с корректными credentials. LDAP в примере отключён и для локального входа не требуется.

Backend:

cd backend
python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python manage.py migrate
daphne -b 0.0.0.0 -p 8000 eusrr_backend.asgi:application

Для асинхронных уведомлений, дайджестов, LDAP retries и других фоновых задач запустите worker и Beat:

cd backend
celery -A eusrr_backend worker -l info
celery -A eusrr_backend beat -l info

Frontend:

cd frontend
cp .env.example .env.local
npm install
npm run dev

Приложение откроется на http://localhost:3000. HTTP-запросы browser проксируются Next.js на NEXT_PUBLIC_BACKEND_URL, realtime использует backend endpoint /ws/.

Проверка

cd backend
pytest
python manage.py check
cd frontend
npm test
npm run lint
npm run build

Некоторым полным наборам тестов нужны PostgreSQL, Redis или явно замоканные интеграции; при разработке предпочтительны профильные suites.

Безопасность и данные

Env-файлы, локальные базы, загруженные media, сертификаты, generated builds и dependency directories игнорируются Git. Production data и secrets нельзя добавлять в репозиторий.

В legacy settings ещё присутствуют fallback-значения LDAP и VAPID. За пределами изолированной разработки на них нельзя полагаться: все credentials должны быть переопределены через environment variables, а любой ключ, когда-либо хранившийся в исходниках, — заменён. Значения example-файлов не являются production config.

Перед использованием в другом окружении проверьте company-specific domains, branding и directory DN.