Це веб-додаток, розроблений в рамках курсової роботи, призначений для автоматизації процесів обліку технічного обладнання, клієнтів, тарифів та іншої супутньої інформації. Система орієнтована на компанії, що надають послуги з використанням обладнання (наприклад, інтернет-провайдери, сервісні центри).
- Управління Обладнанням: Додавання, перегляд, редагування, видалення записів про обладнання (виробник, модель, серійний номер, 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
Кроки:
-
Клонуйте репозиторій:
git clone https://github.com/stastrelok/Inventory.git cd Inventory -
Створіть та активуйте віртуальне середовище (рекомендовано):
# Для Linux/macOS python3 -m venv venv source venv/bin/activate # Для Windows python -m venv venv venv\Scripts\activate
-
Встановіть залежності:
pip install -r requirements.txt
-
Налаштуйте конфігурацію:
- Створіть файл
.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;).
- Створіть файл
-
Виконайте міграції бази даних:
- Ініціалізуйте каталог міграцій (тільки один раз):
flask db init
- Створіть файл міграції:
flask db migrate -m "Initial migration" - Застосуйте міграції до бази даних (створить таблиці):
flask db upgrade
- Ініціалізуйте каталог міграцій (тільки один раз):
-
Запустіть додаток (для розробки):
flask run
Додаток буде доступний за адресою
http://127.0.0.1:5000(або іншою, вказаною у виводі).
- Перший вхід: Якщо в базі даних немає користувачів, перейдіть за адресою
/registerдля створення першого користувача з роллюadmin. - Вхід: Перейдіть на
/loginта увійдіть, використовуючи створені облікові дані. - Навігація: Використовуйте меню для переходу між розділами: Головна панель, Клієнти, Обладнання, Довідники, Користувачі (для адміна), Логи (для адміна).
/ |-- 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).
- Оптимізація запитів до БД.
- Додавання функціоналу сповіщень.
Цей проект розроблено як курсова робота.