Система учёта и контроля оборудования для пресс-центра ИТТСУ.
📑 Оглавление (нажмите, чтобы раскрыть)
Проект создан в рамках реальной "боевой" задачи для пресс-центра ИТТСУ.
Ранее учёт велся в бумажном журнале.
Сотруднику пресс-центра приходилось вручную записывать:
- номер оборудования
- ФИО
- время выдачи и возврата.
Это занимало до 2 минут на единицу техники.
Теперь достаточно отсканировать QR-код на оборудовании камерой телефона, выбрать себя из списка, ввести PIN-код и дату возврата.
Процедура занимает не более 15 секунд. Экономия времени — в 5 раз.
presskit/
├── backups/ # Автоматические бэкапы БД
├── static/
│ ├── css/
│ │ └── style.css # Стили интерфейса
│ ├── js/
│ │ └── admin.js # JavaScript для админки
│ └── qr_codes/ # Сгенерированные QR-коды (SVG)
├── templates/
│ ├── admin/
│ │ ├── dashboard.html # Главная админ-панель
│ │ ├── login.html # Страница входа админа
│ │ └── scan.html # Страница сканирования (админ)
│ └── user/
│ ├── pack.html # Страница пака оборудования
│ └── scan.html # Страница сканирования оборудования
├── .gitignore # Игнорируемые файлы Git
├── app.py # Основное приложение Flask
├── auth.py # Авторизация администраторов
├── backup.py # Автоматические бэкапы
├── CHANGELOG.md # История изменений
├── LICENSE.md # Лицензия
├── README.md # О проекте
├── config.py # Конфигурация приложения
├── database.py # Инициализация и миграции БД
├── login&password.txt # Учётные данные (для первого входа)
├── models.py # Модели базы данных
├── qr_generator.py # Генерация QR-кодов
└── requirements.txt # Зависимости Python
git clone https://github.com/arushinofu/presskit.git
cd presskitpython3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activatepip install -r requirements.txtpython3 app.pyАдминка: http://localhost:5000/admin
Логин: admin
Пароль: PressKit2026! (смените после первого входа!)
⚠️ Важно: Смените SECRET_KEY и пароль администратора после развёртывания!
PORT = 5000 # Порт сервера
HOST = '0.0.0.0' # Слушать все интерфейсы
DEBUG = False # Режим отладки
BACKUP_INTERVAL_HOURS = 24 # Интервал бэкапов
SECRET_KEY = '...' # Ключ сессий (смените в продакшене!)
QR_BRAND_TEXT = '...' # Брендовая подпись QR-кодов| Вкладка | Функции |
|---|---|
| Пользователи | Добавление, редактирование, импорт/экспорт CSV |
| Гости | Просмотр активных гостей с оборудованием |
| Оборудование | Управление инвентарём, генерация QR |
| Паки | Создание наборов оборудования |
| Логи | История всех операций с фильтрацией и экспортом |
| Мера | Описание |
|---|---|
| Хэширование паролей | Werkzeug + bcrypt |
| PIN-коды | 4 цифры для пользователей |
| Защита сессий | HttpOnly, SameSite=Lax, 30 дней |
| Валидация дат | Запрет прошедшего времени |
| Нормализация телефонов | Единый формат 7 (XXX) XXX-XX-XX |
| Функция | Описание |
|---|---|
| 📱 QR-сканирование | Выдача/возврат через сканирование QR-кода (SVG) |
| 👤 Пользователи | Учёт с PIN-кодом (4 цифры) для авторизации |
| 🎫 Гости | Временный доступ без регистрации (ФИО + телефон + Telegram) |
| 📦 Паки | Групповая выдача нескольких единиц оборудования |
| ⏰ Дедлайны | Обязательная дата возврата с серверной валидацией |
| 🔔 Напоминания | Фоновая проверка просрочек (APScheduler) |
| 📊 Логи | Полная история операций (экспорт в CSV) |
| 💾 Бэкапы | Автоматическое резервное копирование БД (24ч) |
| 📥 Импорт/Экспорт | Массовая загрузка данных через CSV |
| Компонент | Версия | Назначение |
|---|---|---|
| Python | 3.9+ | Язык программирования |
| Flask | 2.3.3 | Веб-фреймворк |
| Flask-Login | 0.6.3 | Авторизация администраторов |
| Flask-SQLAlchemy | 3.1.1 | ORM для базы данных |
| SQLite | — | Встроенная БД |
| APScheduler | 3.11.2 | Планировщик задач |
| qrcode | 8.2 | Генерация QR-кодов (SVG) |
| Werkzeug | 2.3.7 | Хэширование паролей |
| bcrypt | 5.0.0 | Дополнительная защита |
| Pillow | 11.3.0 | Работа с изображениями |
| openpyxl | 3.1.5 | Работа с таблицами |
- Отсканировать QR-код на оборудовании
- Выбрать: Пользователь (с PIN) или Гость (без PIN)
- Указать дату возврата (обязательно, формат: ДД.ММ.ГГ ЧЧ:ММ)
- Нажать «Взять»
- Отсканировать QR-код, взятого оборудования
- Выбрать себя из списка
- Ввести PIN-код (для пользователей)
- Нажать «Вернуть»
- Выдача/возврат нескольких единиц одним сканированием
- Автоматическое определение владельца пака
- Запрет на частичный возврат (только целиком)
- Быстрая выдача без регистрации
- Контакты: ФИО, телефон (маска 7 (XXX) XXX-XX-XX), Telegram
- Авто-удаление после возврата всего оборудования
Проект использует Семантического версионирования:
| Версия | Описание |
|---|---|
| MAJOR (X.0.0) | Глобальные изменения, ломает совместимость |
| MINOR (1.X.0) | Новые функции без ломки старой логики |
| PATCH (1.0.X) | Исправления ошибок и мелкие правки |
Данный проект лицензирован под MIT License.
Это означает, что вы можете свободно использовать, изменять и распространять код.
При условии сохранения уведомления об авторских правах.
| Автор | Никнейм |
|---|---|
| Arshinov Maxim | @arushinofu |
Другие проекты для пресс-центра: https://github.com/topics/press-ittsu
© arushinofu 2026
PressKit — потому что оборудование должно возвращаться! 📦