131 lines
5.8 KiB
Markdown
131 lines
5.8 KiB
Markdown
**Язык:** [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.
|