Skip to content

Repository files navigation

Дипломный проект на тему: разработка веб-системы для учёта, инвентаризации и управления жизненным циклом оборудования предприятия

Веб-ориентированная АИС "Инвентарис"

Панель управления Инвентарис

Инвентарис - простая веб-система для учета оборудования: завести инвентарную единицу, привязать ее к модели, статусу, помещению и закупке, посмотреть перемещения, собрать отчет и управлять пользователями.

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.

Диаграммы

ER диаграмма


Авторизация


Загрузка списка оборудования


Запрос отчёта

Заметки

Инвентарис не тянет за собой тяжелую архитектуру. Это обычное Flask-приложение с MySQL, серверными сессиями, Jinja-шаблонами и реестром SQL-запросов. Главная идея простая: вся учетная работа видна в интерфейсе, а техническая часть остается достаточно компактной, чтобы ее можно было быстро развернуть и сопровождать.

About

Веб-система учета оборудования и инвентаря на Flask и MySQL

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages