358.50K

defense_presentation_light_v2

1.

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
РАЗРАБОТКА ИНФОРМАЦИОННОЙ
СИСТЕМЫ
УПРАВЛЕНИЯ ПОСТАВКАМИ МАТЕРИАЛОВ
И КОМПЛЕКТУЮЩИХ
на основе реляционной базы данных PostgreSQL и веб-технологий
Выпускная квалификационная работа бакалавра
2025

2.

Актуальность и цель работы
Проблемы
Цель работы
• Электронные таблицы не обеспечивают
целостность данных
• Дублирование информации
• Отсутствие аналитики
• Нет разграничения доступа
Разработка базы данных и
программных средств для
планирования, учёта и анализа
поставок материалов
Основные задачи:
1. Проектирование БД (7 сущностей)
2. Реализация модуля планирования поставок
3. REST API с JWT-аутентификацией
4. Веб-интерфейс с аналитикой и отчётами
5. Тестирование системы

3.

Архитектура системы и структура БД
Трёхзвенная архитектура
Frontend
HTML, JS, Chart.js

Backend
Flask, SQLAlchemy
ER-диаграмма (7 сущностей)

Database
Поставщики
Продукция
Менеджеры
PostgreSQL
Заказы
Пользователи
Планы поставок
История цен
1:N связи между сущностями
Технологический стек:
• PostgreSQL 15 — ACID-транзакции, мат.
представления
• Flask + SQLAlchemy — REST API, ORM
• JWT — аутентификация (24ч)
• Pydantic — валидация данных
• Chart.js — визуализация на дашборде
• Docker Compose — развёртывание

4.

Структура базы данных
7 взаимосвязанных сущностей, 10+ типов связей
Поставщики
Менеджеры
Продукция
Заказы
Контрагенты
Ответственные
Номенклатура
Закупки
Пользователи
История цен
Планы поставок
Аутентификация
Аудит изменений
Планирование
Ключевые особенности:
• 3НФ с контролируемой денормализацией
• CHECK-ограничения для статусов
• Внешние ключи с ON DELETE SET NULL / CASCADE• Индексы для FK и фильтров
• Мягкое удаление (is_deleted) для справочников
• Материализованные VIEW
• Автоматические триггеры updated_at
• История изменения цен

5.

Модуль управления справочниками
Централизованное хранение данных о поставщиках, менеджерах и продукции
Поставщики
• Наименование, адрес
• Контактные данные
• Счётчик заказов
• Мягкое удаление
Менеджеры
• ФИО, email, телефон
• Привязка к пользователю
• Статистика по заказам
• Активность
CRUD-операции:
• CREATE — добавление новых записей с валидацией уникальности
• READ — получение списков с пагинацией, поиском и сортировкой
• UPDATE — редактирование с автоматическим обновлением updated_at
• DELETE — мягкое удаление (is_deleted = true) для сохранения истории
Продукция
• Номенклатура, тип
• Единица измерения
• Текущая цена
• История изменений

6.

Модуль управления заказами
Статусы оплаты:
Ожидает
Частично
Оплачен
pending
partial
paid
Функциональность:
• Создание заказов с выбором поставщика, продукции и менеджера
• Автоматический расчёт суммы (quantity × unit_price)
• Изменение статуса оплаты в один клик
• Привязка заказа к плану поставки (если создан из плана)
Многоуровневая фильтрация:
• По поставщику
• По продукции
• По менеджеру
• По статусу оплаты
• По диапазону дат
• По сумме (от/до)
• Текстовый поиск
Все фильтры работают
одновременно с debounce
для оптимизации запросов

7.

Модуль планирования поставок
Черновик

Утверждён

В работе

Завершён
Функциональность:
• Создание планов с указанием поставщика, продукции, количества, цены
• Приоритеты: низкий, обычный, высокий, срочный
• Утверждение планов администратором
• Конвертация утверждённого плана в фактический заказ
• Связь плана с результирующим заказом (order_id)
• Аудит: автор плана, кто утвердил, дата утверждения
Анализ отклонений: сравнение плановых и фактических показателей

8.

Модуль аналитики и отчётов
Dashboard:
• Карточки с ключевыми метриками
• График тенденций заказов (Chart.js)
• Топ-5 поставщиков по объёму
• Данные из MATERIALIZED VIEW
• Кнопка обновления статистики
Отчёты:
• Топ поставщиков (сумма, количество)
• Топ продукции по закупкам
• Эффективность менеджеров
• Анализ статусов оплаты
• Экспорт каждого отчёта в CSV
История изменения цен:
• Автоматическая фиксация при изменении цены продукции
• Хранение: старая цена, новая цена, дата изменения, кто изменил
• Просмотр истории для каждой позиции номенклатуры
• Анализ динамики закупочных цен для принятия решений

9.

REST API
40+ эндпоинтов, JWT-аутентификация, ролевая модель доступа
Справочники
Заказы
GET/POST/PATCH/DELETE
/suppliers, /managers, /products
Фильтрация, статусы
/orders, /payment-status
Планирование
Аналитика
Жизненный цикл
/supply-plans, /convert-to-order
Dashboard, отчёты
/dashboard, /reports, CSV
Безопасность:
JWT-токены (24ч) • bcrypt-хэширование паролей • Ролевой доступ (admin/manager) • Валидация через Pydantic

10.

Пользовательский интерфейс
9 специализированных страниц
Dashboard
Поставщики
Продукция
Статистика, графики Chart.js
CRUD, счётчик заказов
История цен
Заказы
Планирование
Отчёты
Фильтры, статусы оплаты
Жизненный цикл планов
Вкладки, экспорт CSV
UX-решения:
• Асинхронная загрузка данных (Fetch API)
• Toast-уведомления об операциях
• Цветовая индикация статусов и приоритетов
• Многоуровневая фильтрация с debounce
• Пагинация и сортировка
• Модальные окна для форм

11.

Страница авторизации
Функции:
[ СКРИНШОТ ]
Страница входа в систему
(login.html)
• Форма логин/пароль
• JWT-аутентификация
• Валидация полей
• Сообщения об ошибках
• Редирект на Dashboard
Роли: admin, manager

12.

Панель управления (Dashboard)
Компоненты:
[ СКРИНШОТ ]
Главная страница Dashboard
(dashboard.html)
• Карточки со статистикой
• График тенденций (Chart.js)
• Топ-5 поставщиков
• Кнопка обновления
мат. представлений
Данные из MATERIALIZED VIEW

13.

Страница управления заказами
Фильтры:
[ СКРИНШОТ ]
Таблица заказов с фильтрами
(orders.html)
• Поиск по тексту
• По поставщику
• По продукции
• По менеджеру
• По статусу оплаты
• По диапазону дат
• По сумме (от/до)
Статусы: pending, partial, paid

14.

Страница планирования поставок
Действия:
[ СКРИНШОТ ]
Таблица планов поставок
(planning.html)
• Создать план
• Редактировать черновик
• Утвердить (admin)
• Конвертировать в заказ
• Отменить план
Цветовая индикация:
статусов и приоритетов

15.

Страница отчётов
Типы отчётов:
[ СКРИНШОТ ]
Вкладки отчётов с экспортом CSV
(reports.html)
• Топ поставщиков
• Топ продукции
• Эффективность
менеджеров
• Анализ оплат
Экспорт:
CSV для каждого отчёта

16.

Тестирование системы
Unit-тесты
Интеграционные
pytest, бизнес-логика сервисов
API + БД, жизненный цикл
E2E
Нагрузочные
Полные сценарии пользователя
Производительность запросов
Результаты нагрузочного тестирования:
Операция
100 записей
1000 записей
10000 записей
Список заказов
45 мс
52 мс
78 мс
Статистика поставщиков
38 мс
65 мс
180 мс
Данные Dashboard
95 мс
140 мс
320 мс

17.

Результаты работы
Спроектирована БД из 7 сущностей с обеспечением целостности данных
Реализован модуль планирования поставок с полным жизненным циклом
Разработан REST API (40+ эндпоинтов) с JWT-аутентификацией
Создан веб-интерфейс с 9 страницами и интерактивной аналитикой
Реализованы отчёты с экспортом в CSV и история изменения цен
Проведено комплексное тестирование, подтвердившее работоспособность
Цель работы достигнута, все 7 задач выполнены

18.

Заключение
Практическая значимость:
Система может использоваться на предприятиях
для автоматизации процессов материально-технического снабжения
Направления развития:
• Интеграция с 1С / SAP через API
• Модуль прогнозирования потребностей
• Мобильное приложение
• Система уведомлений о критических событиях
Спасибо за внимание!
English     Русский Rules