Кейс · 01 / 15 Збройні Сили України

HRM-система управління персоналом

Повнофункціональна HRM-система для управління особовим складом організації

HRM – Штатно-посадова структура

Проект розроблено для державної організації. Всі персональні дані на скріншотах є вигаданими та використовуються виключно для демонстрації інтерфейсу. Будь-які збіги з реальними особами випадкові.

01

Про продукт

Повнофункціональна <a href="/hrm-systems">HRM-система</a> (Human Resource Management) для військового підрозділу бригадного рівня Збройних Сил України. Система повністю замінила паперовий облік та застарілі рішення, забезпечуючи облік особового складу в реальному часі.

Повний цикл розробки – від архітектури БД до production-деплою. 11 Django-додатків, 12 фронтенд-модулів, ~80 API ViewSets.

~93KРядків коду
452Файлів
17Модулів
80+API ViewSets
02

Інтерфейс системи

Нижче представлено скріншоти ключових модулів системи з тестовими даними. Реальні дані особового складу є конфіденційними та не підлягають розголошенню.

03

Стек технологій

Backend

Python 3.12, Django 6 + DRF, Django Channels, Uvicorn (ASGI), PostgreSQL 16, Redis

Frontend

React 19, TypeScript (strict), Vite, Ant Design 5, TanStack React Query, React Flow, Recharts

Інфраструктура

Nginx (reverse proxy + static), systemd, Let's Encrypt SSL, WebSocket (Django Channels + Redis)

Інтеграції

WhatsApp-бот (Node.js), Google Sheets API (OAuth 2.0), генерація DOCX-документів (python-docx)

04

Ключові модулі та рішення

Організаційна структура

Гнучке дерево підрозділів необмеженої глибини (django-mptt). Інтерактивна оргсхема (React Flow + Dagre auto-layout). Позиційна модель: «слоти» (посади) існують незалежно від людей – вакансії, штатний розклад, кар'єрна історія.

Управління персоналом

Картка співробітника з фіксованими + динамічними полями (EAV-конструктор через UI). Мульти-блочна система статусів з каскадними правилами. Повна кар'єрна історія: призначення, переведення, підвищення, тимчасові обов'язки, відрядження. М'яке видалення – записи ніколи не видаляються, тільки архівуються.

Табель обліку

Матриця «співробітник × дні місяця» з віртуальним скролінгом. Маппінг: комбінації статусів → символ табелю (налаштовується через UI). Три джерела даних: автозаповнення, панель відсутностей, ручне введення. Аудит-лог кожної зміни комірки.

RBAC та безпека даних

~30 гранулярних дозволів, динамічні ролі через UI. 3-рівнева ізоляція даних: Django ORM (.for_user()), Middleware перевірка кожної API-відповіді, PostgreSQL RLS (Row-Level Security) як останній рубіж.

Генерація документів

DOCX-шаблони з плейсхолдерами → автопідставлення даних з БД. Пакетна генерація на декількох осіб. 6 типів документів: відпустки, відрядження, лікування, передача посади та ін.

Звіти та інтеграції

Щоденний текстовий рапорт. Складний Excel-експорт з форматуванням (openpyxl). Конструктор звітів (drag-and-drop). Google Sheets інтеграція (OAuth 2.0, двостороння синхронізація). WhatsApp-бот для масових розсилок та автоматичних повідомлень.

Real-time та продуктивність

WebSocket через Django Channels + Redis. Віртуальний скролінг для списків 500+ елементів. Server-side пагінація, фільтрація, сортування. Партиціонування по місяцях для високонавантажених таблиць. Code splitting (React.lazy + Suspense).

Адмін-панель

Моніторинг онлайн-користувачів. Статистика сервера (CPU, RAM, диск). Управління бекапами (ручні + автоматичні). Системні повідомлення, блокування системи на обслуговування.

05

Архітектура та безпека

Headless-архітектура: Django використовується виключно як API-бекенд (без Django Admin, без шаблонів). React SPA спілкується з API через HTTPS та WebSocket. Три рівні ізоляції даних гарантують, що жоден користувач не отримає доступ до даних за межами свого підрозділу – навіть через raw SQL.

Frontend
React 19 SPATypeScript (strict)Ant DesignReact Query
HTTPS / WebSocket
Nginx
/api/* → Django/ws/* → Channels/* → Static SPA
Backend
Django 6 + DRFUvicorn (ASGI)Django ChannelsWhatsApp Bot
Дані
PostgreSQL 16 + RLSRedis

3 рівні ізоляції даних

1

Django ORM

Кастомний QuerySet з .for_user() на кожному ViewSet

2

Middleware

Перевіряє кожну API-відповідь на витік даних, блокує та логує порушення

3

PostgreSQL RLS

Row-Level Security — навіть raw SQL не може повернути дані поза дозволеними підрозділами

06

Що було зроблено

Повний цикл <a href="/services/custom-development">кастомної розробки</a>: архітектура системи та схема БД, Backend (<a href="https://www.djangoproject.com/" target="_blank" rel="noopener">Django</a> REST API, WebSocket, бізнес-логіка, RBAC, RLS), Frontend (React SPA з 12 модулями), DevOps (Nginx, systemd, SSL, production-деплой), інтеграції (WhatsApp-бот, Google Sheets API, генерація документів).

17 модулів системи

Дашборд та аналітика
Організаційна структура
Штатно-посадова структура
Бойовий та чисельний склад
Табель обліку
Тимчасово відсутні
Виключені з особового складу
Безповоротні втрати
Тимчасово прибулі
Генератор документів
Звіти та експорт
Журнал бойових дій (ЖБД)
Накази стройової частини
Канбан-дошка завдань
Інтеграція з WhatsApp
Адмін-панель та бекапи
Ролі та права (~100+ permissions)
07

Часті запитання

Backend: Python 3.12, Django 6, Django REST Framework, Django Channels (WebSocket), PostgreSQL 16, Redis. Frontend: React 19, TypeScript (strict mode), Vite, Ant Design, TanStack React Query, React Flow. Інфраструктура: Nginx, Uvicorn (ASGI), systemd. Інтеграції: WhatsApp-бот (Node.js), Google Sheets API, генерація DOCX-документів.

Система реалізує 3 рівні ізоляції даних: 1) Django ORM з кастомним QuerySet-менеджером (.for_user()) на кожному ViewSet, 2) Middleware що перевіряє кожну API-відповідь на витік даних, 3) PostgreSQL Row-Level Security (RLS) на всіх таблицях з прив'язкою до підрозділу. Додатково: CSRF-захист, rate limiting, доступ тільки через VPN, HTTPS, strict CORS.

Проект складається з ~93 000 рядків коду у 452 файлах: Backend (Python/Django) – 167 файлів, Frontend (TypeScript/React) – 275 файлів. 17 функціональних модулів, 80+ API ViewSets, 11 Django-додатків. Підтримує оновлення в реальному часі через WebSocket та одночасну роботу багатьох користувачів.

Так, Artbrain спеціалізується на розробці кастомних HRM/ERP-систем. Ми можемо створити рішення під конкретні вимоги вашої організації. Зв'яжіться з нами для обговорення проекту.

Почніть свій шлях до успіху

Маєте проект? Давайте реалізуємо його разом.

Потрібна схожа enterprise HRM, ERP або кастомна система? Розкажіть про задачу — повернемось протягом 4 робочих годин із реальним estimate.

Всі кейси
— Також

Інші послуги

Калькулятор вартості →
— Журнал · інсайти

З нашого блогу

Усі статті →
Подзвонити Telegram Viber WhatsApp