Skip to content

stastrelok/Inventory

Repository files navigation

Система інвентаризації обладнання (Flask)

Це веб-додаток, розроблений в рамках курсової роботи, призначений для автоматизації процесів обліку технічного обладнання, клієнтів, тарифів та іншої супутньої інформації. Система орієнтована на компанії, що надають послуги з використанням обладнання (наприклад, інтернет-провайдери, сервісні центри).

Основні можливості

  • Управління Обладнанням: Додавання, перегляд, редагування, видалення записів про обладнання (виробник, модель, серійний номер, MAC-адреса). Відстеження статусу (доступне, використовується, списане).
  • Управління Клієнтами: Ведення бази клієнтів (ПІБ, UID, адреса, тариф). Можливість прив'язки конкретної одиниці обладнання до клієнта.
  • Довідники: Управління довідниками вулиць та тарифів (CRUD для адміністраторів).
  • Автентифікація та Авторизація: Реєстрація першого адміністратора, вхід/вихід користувачів.
  • Ролі та Права Доступу: Система підтримує ролі:
    • admin: Повний доступ до всіх функцій.
    • user: Доступ до управління клієнтами та обладнанням, перегляд довідників.
    • guest: Тільки перегляд даних.
  • Управління Користувачами: Адміністратори можуть додавати, редагувати (роль, статус, пароль) та видаляти користувачів системи.
  • Панель Управління (Dashboard): Відображення базової статистики (кількість обладнання за статусами) та списку нещодавно доданих клієнтів.
  • Логування: Автоматичний запис основних дій користувачів у системі (вхід/вихід, CRUD операції).
  • Фільтрація: Можливість фільтрації списку клієнтів.

Технологічний стек

  • Backend:
    • Мова: Python 3
    • Фреймворк: Flask
    • ORM: SQLAlchemy (з Flask-SQLAlchemy)
    • Міграції БД: Flask-Migrate (Alembic)
    • Автентифікація: Flask-Login
    • Форми: Flask-WTF
    • Сесії: Flask-Session (файлова система)
  • База даних: MySQL (або сумісна, наприклад, MariaDB)
  • Frontend:
    • HTML5
    • CSS3 (базові стилі)
    • Шаблонізатор: Jinja2
    • JavaScript (мінімально, для підтверджень)

Встановлення та Запуск

Передумови:

  • Python 3.7+ та pip
  • Встановлений та запущений сервер MySQL
  • Git

Кроки:

  1. Клонуйте репозиторій:

    git clone https://github.com/stastrelok/Inventory.git
    cd Inventory
  2. Створіть та активуйте віртуальне середовище (рекомендовано):

    # Для Linux/macOS
    python3 -m venv venv
    source venv/bin/activate
    
    # Для Windows
    python -m venv venv
    venv\Scripts\activate
  3. Встановіть залежності:

    pip install -r requirements.txt
  4. Налаштуйте конфігурацію:

    • Створіть файл .env в кореневому каталозі проекту (поряд з app.py).
    • Скопіюйте зміст з .env.example (якщо є) або додайте наступні змінні, замінивши значення на ваші:
      # Приклад .env файлу
      FLASK_APP=app.py
      FLASK_ENV=development # або production
      SECRET_KEY='ваш_дуже_секретний_ключ_тут' # Згенеруйте надійний ключ!
      DATABASE_URL='mysql+pymysql://імʼя_користувача_бд:пароль_бд@хост_бд:порт_бд/назва_бази_даних'
      
      # Приклад DATABASE_URL для локального MySQL:
      # DATABASE_URL='mysql+pymysql://user:password@localhost:3306/inventory_db'
    • Важливо: Замініть імʼя_користувача_бд, пароль_бд, хост_бд, порт_бд, назва_бази_даних на ваші реальні дані. Переконайтесь, що вказана база даних (inventory_db у прикладі) існує на вашому MySQL сервері. Створіть її, якщо потрібно (CREATE DATABASE inventory_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;).
  5. Виконайте міграції бази даних:

    • Ініціалізуйте каталог міграцій (тільки один раз):
      flask db init
    • Створіть файл міграції:
      flask db migrate -m "Initial migration"
    • Застосуйте міграції до бази даних (створить таблиці):
      flask db upgrade
  6. Запустіть додаток (для розробки):

    flask run

    Додаток буде доступний за адресою http://127.0.0.1:5000 (або іншою, вказаною у виводі).

Використання

  1. Перший вхід: Якщо в базі даних немає користувачів, перейдіть за адресою /register для створення першого користувача з роллю admin.
  2. Вхід: Перейдіть на /login та увійдіть, використовуючи створені облікові дані.
  3. Навігація: Використовуйте меню для переходу між розділами: Головна панель, Клієнти, Обладнання, Довідники, Користувачі (для адміна), Логи (для адміна).

Структура проекту (основні каталоги)

/ |-- app.py # Головний файл додатку, фабрика create_app |-- config.py # Клас конфігурації |-- extensions.py # Ініціалізація розширень Flask |-- requirements.txt # Залежності Python |-- utils.py # Допоміжні функції (логування, декоратори) |-- forms/ # WTForms форми |-- models/ # SQLAlchemy моделі |-- routes/ # Blueprints (маршрути та логіка) |-- static/ # Статичні файли (CSS, JS, зображення) |-- templates/ # HTML шаблони (Jinja2) |-- migrations/ # Файли міграцій Alembic |-- .env # Файл конфігурації (не додавати в git!) |-- .flaskenv # Змінні середовища для Flask CLI |-- README.md # Цей файл

Можливі майбутні покращення

  • Розширення функціоналу звітності (генерація PDF/Excel).
  • Впровадження більш розширених можливостей пошуку та фільтрації.
  • Покращення інтерфейсу користувача (Bootstrap/Tailwind, JS інтерактивність).
  • Розробка REST API.
  • Впровадження автоматизованих тестів (unit, integration).
  • Оптимізація запитів до БД.
  • Додавання функціоналу сповіщень.

Ліцензія


Цей проект розроблено як курсова робота.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors