Дипломный проект на тему: разработка веб-системы для учёта, инвентаризации и управления жизненным циклом оборудования предприятия
Инвентарис - простая веб-система для учета оборудования: завести инвентарную единицу, привязать ее к модели, статусу, помещению и закупке, посмотреть перемещения, собрать отчет и управлять пользователями.
Flask принимает запросы и собирает страницы через Jinja, sql_queries.json держит SQL отдельно от Python-кода, db.py открывает короткие MySQL-подключения с повторами, а config.json описывает все, что нужно приложению при запуске.
- Учет оборудования с инвентарными и серийными номерами.
- Справочники категорий, моделей, статусов, помещений, поставщиков и закупок.
- История перемещений между помещениями.
- Отчеты по оборудованию, статусам, категориям, помещениям и изменениям.
- Пользователи, роли и права доступа.
- Файловые серверные сессии через Flask-Session.
- Логи приложения в
logs/server.jsonl.
.
├── app.py # Flask-приложение и регистрация разделов
├── auth.py # Вход, выход, проверка сессии и прав
├── admin.py # Пользователи и роли
├── equipment.py # Оборудование
├── directories.py # Справочники
├── movements.py # Перемещения
├── reports.py # Отчеты
├── db.py # MySQL-слой и установка схемы
├── config.py # Загрузка конфигурации и логирование
├── config.example.json # Шаблон локальной конфигурации
├── db_init.sql # SQL для создания базы и начальных данных
├── sql_queries.json # Именованные SQL-запросы
├── templates/ # Jinja-шаблоны страниц
├── static/ # CSS и клиентские файлы
├── user_manual/ # Скриншоты и пользовательские материалы
└── diagram/ # PlantUML-диаграммы проекта
Нужны Python 3.10+ и MySQL или MariaDB.
Создайте виртуальное окружение и установите зависимости:
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtНа Linux или macOS активация окружения выглядит так:
source .venv/bin/activateСоздайте локальный конфиг из шаблона:
copy config.example.json config.jsonНа Linux или macOS:
cp config.example.json config.jsonЗаполните db_config под свою базу данных:
{
"SECRET_KEY": "change-me",
"SQL_QUERIES_FILE": "sql_queries.json",
"SQL_CREATE_FILE": "db_init.sql",
"MYSQL_RETRY_COUNT": 4,
"MYSQL_RETRY_DELAY": 0.5,
"LOG_DIR": "logs",
"LOG_FILE_NAME": "server.jsonl",
"LOG_LEVEL": "INFO",
"LOG_TO_CONSOLE": true,
"AUTO_INSTALL_SCHEMA": false,
"SESSION_TYPE": "filesystem",
"SESSION_PERMANENT": false,
"SESSION_FILE_DIR": "flask_session",
"APP_HOST": "127.0.0.1",
"APP_PORT": 5000,
"APP_DEBUG": true,
"db_config": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": 3306,
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "",
"MYSQL_DB": "inventaris",
"MYSQL_CHARSET": "utf8mb4",
"MYSQL_CONNECT_TIMEOUT": 5,
"MYSQL_READ_TIMEOUT": 30,
"MYSQL_WRITE_TIMEOUT": 30
}
}SECRET_KEY лучше заменить перед реальным использованием. APP_HOST, APP_PORT и APP_DEBUG управляют адресом и режимом Flask-сервера. SESSION_FILE_DIR указывает папку для файловых сессий, а LOG_DIR - папку для логов.
Создайте схему из db_init.sql:
mysql -u root -p < db_init.sqlЕсли в config.json включить "AUTO_INSTALL_SCHEMA": true, приложение попробует выполнить db_init.sql само при первом обращении к базе. Для обычного запуска установите false и самостоятельно исполните скрипт развёртывания.
В начальных данных есть администратор:
login: admin
password: admin123
После первого входа пароль стоит сменить.
Запустите приложение:
python app.pyПо умолчанию Flask откроется здесь:
http://127.0.0.1:5000
Если порт или адрес изменены в config.json, используйте значения APP_HOST и APP_PORT.
Инвентарис не тянет за собой тяжелую архитектуру. Это обычное Flask-приложение с MySQL, серверными сессиями, Jinja-шаблонами и реестром SQL-запросов. Главная идея простая: вся учетная работа видна в интерфейсе, а техническая часть остается достаточно компактной, чтобы ее можно было быстро развернуть и сопровождать.
