Similar presentations:
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 API40+ эндпоинтов, 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
• Модуль прогнозирования потребностей
• Мобильное приложение
• Система уведомлений о критических событиях
Спасибо за внимание!