Corp/README.ru.md

131 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Язык:** [English](README.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Español](README.es.md)
# 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`](backend/requirements.txt)
и [`frontend/package.json`](frontend/package.json).
## Документация и runtime-контракты
- [Индекс документации](docs/README.md)
- [HTTP API](docs/guides/API.md)
- [LDAP и Active Directory](docs/guides/LDAP.md)
- [Корпоративный OpenID Connect](docs/guides/OIDC.md)
- [WebSocket и realtime](docs/guides/WEBSOCKET.md)
- [Уведомления](docs/guides/NOTIFICATIONS.md)
При запущенном backend доступны Swagger `/api/docs/`, ReDoc `/api/redoc/`,
OpenAPI `/api/schema/`, WebSocket docs `/api/ws/docs/` и AsyncAPI
`/api/ws/schema/` на `http://localhost:8000`.
## Структура репозитория
```text
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-стеком приложения.
Создайте корневой файл окружения:
```bash
cp .env.example .env
```
Пример использует имена сервисов `db` и `redis`. Если сервисы запущены локально,
замените `DB_HOST` и `REDIS_HOST` на `127.0.0.1`, задайте `DEBUG=True` и укажите
существующую базу PostgreSQL с корректными credentials. LDAP в примере отключён
и для локального входа не требуется.
Backend:
```bash
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:
```bash
cd backend
celery -A eusrr_backend worker -l info
celery -A eusrr_backend beat -l info
```
Frontend:
```bash
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/`.
## Проверка
```bash
cd backend
pytest
python manage.py check
```
```bash
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.