Shift Management System — backend-приложение для автоматического формирования рабочих смен сотрудников на основе событий доступа, полученных из Hikvision ISAPI.
Проект разработан как производственное решение для компании (MSA — внутреннее название), используется для учёта фактического времени присутствия сотрудников и формирования Excel-отчётов.
Проект не является официальным продуктом Hikvision.
Документация и примеры кода доступны в отдельном репозитории:
👉 https://github.com/MAGNAT12/hikvision-isapi-python
В реальных условиях сотрудники:
- приходят раньше или позже начала смены;
- несколько раз входят и выходят в течение дня;
- могут задерживаться после окончания рабочего времени.
Стандартные системы плохо учитывают эти сценарии.
Цель проекта — определить реальное начало и окончание смены сотрудника по данным системы контроля доступа.
Система анализирует все события доступа сотрудника за день и:
- определяет первый вход сотрудника за день
(ближайший ко времени начала смены); - определяет последний выход сотрудника за день
(ближайший ко времени окончания смены); - игнорирует все промежуточные входы и выходы;
- сохраняет итоговую смену в базе данных;
- формирует Excel-отчёт.
- начало смены: 08:00
- конец смены: 18:00
- вход: 07:40
- несколько входов/выходов в течение дня
- выход: 18:50
| Employee | Date | time_in | time_out |
|---|---|---|---|
| Ron | 01-24 | 07:40 | 18:50 |
- Django — backend, ORM, бизнес-логика
- Hikvision ISAPI — источник событий доступа
- Docker / Docker Compose — развёртывание и изоляция окружения
- PostgreSQL / SQLite — хранение данных
- openpyxl — генерация Excel-отчётов
- Telegram Bot (опционально) — автоматизация и уведомления
- обработка событий доступа из Hikvision;
- формирование смен (дневные сценарии);
- защита от дублирующих записей;
- экспорт отчётов в формате Excel;
- конфигурация через переменные окружения;
- контейнеризация проекта.
- Python 3.12
- Django 5 (ORM, signals, management commands)
- Работа с внешними API (Hikvision ISAPI)
- Реализация бизнес-логики учёта времени
- Docker / Docker Compose
- Работа с датами и временем
- Генерация Excel-отчётов
- Проектирование backend-архитектуры
Отчёт доступен по HTTP-эндпоинту:
GET /excel/В Excel:
- строки — сотрудники;
- колонки — даты;
- значения — time_in / time_out.
git clone https://github.com/MAGNAT12/msa.git
cd msa
cp .env.example .env
docker compose up -d --build