Реферат по теме выпускной работы
Содержание
- Введение
- 1. Проектирование и разработка
- 2. Реализация
- 2.1 Модели данных
- 2.2 Реализация основных функций
- 2.3 Реализация модуля помощника по выбору компьютерных компонентов
- 3. Подробное описание реализации дерева решений для модуля помощника
- 3.1 Дерево решений
- 3.2 Структура
- 3.3 Алгоритмы и структуры данных
- 3.4 Определение структуры данных
- 3.5 Построение дерева решений
- 3.6 Генерация рекомендаций
- Выводы
- Список источников
Введение
В современном мире интернет-торговля занимает важное место в экономике и становится все более востребованной среди потребителей. С развитием технологий и увеличением доступности интернет-сервисов, все больше людей предпочитают совершать покупки онлайн. Интернет-магазины предоставляют удобство выбора и покупки товаров, экономя время и усилия потребителей. Особенно это актуально для продажи специализированных товаров, таких как компьютерные комплектующие.
Компьютерные комплектующие — это широкий спектр компонентов, необходимых для сборки и модернизации компьютеров: процессоры, видеокарты, материнские платы, оперативная память и многое другое. Спрос на такие товары постоянно растет, особенно среди энтузиастов и профессионалов, занимающихся сборкой и улучшением компьютеров. В условиях постоянного обновления технологий и появления новых моделей, интернет-магазин, предлагающий широкий ассортимент компьютерных компонентов, может удовлетворить потребности самой широкой аудитории.
Разработка интернет-магазина для продажи компьютерных компонентов является важной задачей, так как это позволяет не только упростить процесс покупки для клиентов, но и обеспечить бизнесу стабильный доход и возможность масштабирования.
1. Проектирование и разработка
Для разработки интернет-магазина был выбран язык программирования Go[1] вместе в веб-фреймворков Gin и ORM-библиотекой GORM. Данный технологический стек обладает рядом преимуществ, которое выделяет его на фоне остальных технологий, позволяя создавать высокопроизводительные, масштабируемые и надежные веб-приложения. Язык Go[2] обладает высокой производительностью и поддерживает многопоточность на уровне языка. Язык Go[3] – компилируемый язык программирования, что делает его намного быстрее интерпретируемых языков. Таких как Python, PHP или Ruby. Стоит отметить простоту и лаконичность, что упрощает процесс написания и поддержки кода. Веб-фреймворк Gin обладает высокой производительностью – это один из самых быстрых фреймворков для Go, что позволяет обрабатывать большое количество запросов с минимальной задержкой. Фреймворк написан для работы с минимальными затратами памяти и процессорного времени, а простота его использования и модульный дизайн делает его идеальным для написания микросервесной архитектуры. ORM-библиотека GORM позволяет автоматически сопоставлять объекты и реляционные данные, производить миграции баз данных, выполнять CRUD-операции (создания, чтение, обновление, удаление). А также делать сложные запросы и транзакции, что облегчает реализацию бизнес-логики.
Для хранения и управления данными, я использовал PostgreSQL[4], который зарекомендовал себя как одна из самых надежный и стабильных реляционных СУБД. PostgreSQL обладает широким спектром возможностей – поддержка сложных запросов, транзакций, индексов и хранение процедур, что позволяет эффективно управлять большими объемами данных и выполнять сложные операции. Также данная СУБД оптимизирована для горизонтального и вертикального масштабирования, что делает её идеальным выбором для нашего веб-приложения.
Для frontend части, я использовал HTML, CSS[5], JavaScript[6], которые обеспечивает создание удобного, интуитивно понятного и визуально привлекательного пользовательского интерфейса. Эти технологии позволяют создавать адаптивные и интерактивные веб-страницы, которые удовлетворяют потребности пользователей и способствуют успеху проекта.
2. Реализация
2.1 Модели данных
Для создания интернет-магазина по продаже компьютерных компонентов были разработаны и реализованы следующие модели данных. Эти модели обеспечивают управление пользователями, адресами, списками желаний, корзиной, заказами, продуктами и отзывами.
- Модель User (Пользователь)
- Модель Address (Адрес)
- Модель WishList (Список желаний)
- Модель Cart (Корзина)
- Модель Order (Заказ)
- Модель OrderProduct (Продукты в заказе)
- Модель Category (Категория)
- Модель Product (Продукт)
- Модели характеристик продуктов (GPU, CPU, RAM, SSD, HDD)
- Модель Review (Отзыв)
- Модель Rating (Рейтинг)
Модель пользователя включает в себя основную информацию о пользователе, такую как уникальный идентификатор, имя пользователя, электронная почта и пароль. Кроме того, модель содержит списки адресов, списков желаний, корзину и заказы, связанные с пользователем.
Модель адреса хранит информацию об адресах доставки, включая улицу, город, штат, почтовый индекс и страну. Каждый адрес связан с определенным пользователем.
Модель списка желаний позволяет пользователям добавлять продукты, которые они хотят приобрести в будущем. Эта модель связывает пользователей и продукты через таблицу-связку, позволяя хранить множество продуктов в списке желаний каждого пользователя.
Модель корзины используется для хранения продуктов, которые пользователь планирует приобрести. Корзина также может содержать информацию о скидках и времени сжатия (compression).
Модель заказа хранит информацию о заказах, сделанных пользователями. Эта информация включает в себя идентификатор пользователя, адрес доставки, статус заказа, дату заказа и итоговую сумму. Заказы также содержат список продуктов, входящих в заказ.
Модель продуктов в заказе хранит информацию о продуктах, входящих в конкретный заказ. Эта модель включает идентификаторы заказа и продукта, количество и цену каждого продукта.
Модель категории используется для группировки продуктов по категориям, например, процессоры, видеокарты, оперативная память и т.д. Категории помогают пользователям легко находить интересующие их продукты.
Модель продукта хранит информацию о каждом продукте, включая название, описание, цену, количество на складе и категорию. Продукты могут быть связаны с конкретными характеристиками, такими как GPU, CPU, RAM, SSD, HDD. Также продукт может иметь отзывы и рейтинги.
Эти модели хранят специфические характеристики различных типов продуктов. Например, модель GPU хранит информацию о видеокартах, включая бренд, модель и объем памяти. Модель CPU хранит данные о процессорах, такие как бренд, модель, количество ядер, количество потоков и тактовую частоту. Модели RAM, SSD и HDD аналогично хранят соответствующие характеристики.
Модель отзыва позволяет пользователям оставлять отзывы о продуктах. Отзывы включают рейтинг, комментарии и дату создания. Отзывы помогают другим пользователям принимать решения о покупке.
Модель рейтинга используется для хранения оценок, которые пользователи ставят продуктам. Оценки помогают формировать общий рейтинг продукта.
2.2 Реализация основных функций
- Регистрация и авторизация пользователей
- Управление каталогом товаров
- Управление корзиной и списком желаний
- Оформление заказов
- Обработка отзывов и рейтингов
Для регистрации и авторизации пользователей была реализована система, позволяющая пользователям создавать учетные записи и входить в систему. При регистрации пользователи предоставляют имя пользователя, электронную почту и пароль. Для авторизации используется проверка предоставленных данных и создание сессии пользователя на основ JWT.
Каталог товаров позволяет пользователям просматривать все доступные продукты, сгруппированные по категориям. Реализованы функции фильтрации и поиска, позволяющие пользователям находить интересующие их товары по определенным характеристикам.
Пользователи могут добавлять продукты в свою корзину и список желаний. Корзина позволяет пользователям оформлять заказы, а список желаний помогает отслеживать интересующие продукты. Реализованы функции добавления, удаления и редактирования товаров в корзине и списке желаний.
Процесс оформления заказа включает выбор адреса доставки, расчет итоговой стоимости заказа с учетом скидок и налогов, а также интеграцию с платежными системами для осуществления оплаты. После оформления заказ сохраняется в базе данных и обновляется его статус.
Пользователи могут оставлять отзывы и ставить оценки продуктам, которые они приобрели. Реализованы функции добавления, редактирования и удаления отзывов. Отзывы и рейтинги помогают другим пользователям принимать решения о покупке и улучшают качество обслуживания.
2.3 Реализация модуля помощника по выбору компьютерных компонентов
В рамках разработки интернет-магазина по продаже компьютерных компонентов поставим задачу реализовать модуль помощника, который поможет пользователям выбирать компьютерные компоненты на основе различных критериев. Этот модуль будет использовать данные о предпочтениях пользователей, стоимости, личных пожеланий, прошлых покупках и просмотрах, а также отзывы и рейтинги продуктов, чтобы предложить наиболее подходящие варианты.
Основной целью модуля помощника является улучшение пользовательского опыта и увеличение продаж за счет персонализированных рекомендаций. Для достижения этой цели были поставлены следующие задачи, представленные в следующем абзаце.
Анализ пользовательских предпочтений включает в себя сбор данных о прошлых покупках и просмотрах пользователя, использование данных о предпочтениях других пользователей с аналогичными интересами, а также учёт отзывов и рейтингов продуктов. Определение критериев выбора предполагает категории устройств (стандартный ПК, ноутбук, мини-ПК и т.д.), стоимость и бюджет пользователя, совместимость компьютерных компонентов, а также надежность и качество продуктов на основе отзывов и рейтингов. Разработка алгоритмов рекомендаций включает алгоритмы на основе коллаборативной фильтрации[7] для рекомендаций на основе предпочтений других пользователей, алгоритмы на основе контентной фильтрации[8] для анализа характеристик продуктов и предпочтений пользователя, а также гибридные алгоритмы, комбинирующие методы коллаборативной и контентной фильтрации.
Функциональность модуля помощника заключается в сборе данных о просмотрах продуктов, покупках и заказах, а также отзывах и рейтингах. Алгоритмы рекомендаций включают коллаборативную фильтрацию, анализирующую предпочтения других пользователей с аналогичными интересами, контентную фильтрацию, анализирующую характеристики продуктов и предпочтения пользователя, а также гибридные алгоритмы[9], комбинирующие эти методы для улучшения качества рекомендаций. Пользовательский интерфейс включает анкету предпочтений для сбора информации о предпочтениях пользователя, таких как тип устройства, бюджет и предпочтительные характеристики, а также отображение персонализированных рекомендаций[10] с информацией о надежности продуктов на основе отзывов и рейтингов. Совместимость компонентов обеспечивает анализ совместимости выбранных пользователем компонентов и рекомендации только совместимых компонентов для сборки ПК.
Пример работы модуля начинается с сбора данных[11] о пользователе: пользователь регистрируется и указывает свои предпочтения, а система анализирует прошлые покупки и просмотры. Затем алгоритмы анализируют собранные данные и генерируют список рекомендаций, которые отображаются на странице пользователя с учетом всех критериев. Пользователь видит список рекомендованных продуктов с указанием их характеристик, цен, отзывов и рейтингов, а также имеет возможность добавить продукты в корзину или список желаний. При выборе компонентов для сборки ПК система проверяет их совместимость и предлагает альтернативы в случае несовместимости.
3. Подробное описание реализации дерева решений для модуля помощника
3.1 Дерево решений
Дерево решений является одним из ключевых компонентов модуля помощника для выбора компьютерных компонентов. Оно помогает структурировать процесс принятия решений, основываясь на различных критериях, таких как тип устройства, бюджет, предпочтительные характеристики, совместимость компонентов, отзывы и рейтинги, а также история просмотров и покупок.
3.2 Структура
Дерево решений состоит из узлов (nodes) и ветвей (branches), где каждый узел представляет собой критерий или условие, а ветви – возможные варианты исхода этого условия. Листовые узлы (leaves) дерева содержат конечные рекомендации.
3.3 Алгоритмы и структуры данных
Для реализации дерева решений и алгоритмов рекомендаций можно начать с определения структуры данных, создав классы для узлов и дерева решений. В нашем случае, дерево решений представляет собой обычное бинарное дерево. Далее, необходимо построить дерево решений, реализовав алгоритм для его построения на основе данных пользователя. После этого, можно приступить к генерации рекомендаций, применяя построенное дерево решений к данным пользователя для создания персонализированных предложений.
3.4 Определение структуры данных
Класс для узла дерева решений должен содержать следующие поля:
- Критерий выбора узла
- Значение узла
- Ссылка на узел в случае положительного решения
- Ссылка на узел в случае отрицательно решения
- Ссылка на родительский узел
- Список продуктов, которые подходят под текущую категорию при текущем значении.
3.5 Построение дерева решений
Алгоритм построения дерева начинается с сбора всех необходимых данных о пользователе, продуктах и их характеристиках. Затем определяются ключевые критерии для принятия решений, такие как тип устройства, бюджет, производительность, совместимость и т.д. Далее создаются узлы для каждого критерия. После этого узлы связываются между собой, формируя дерево решений.
В данном случае, необходимо реализовать множество методов, для узлов, которые будут фильтровать исходный список продуктов, исходя из принятых решений в дереве решений. Список продуктов будет получен из базы данных, исходя из решения, которое сделала дерево решений.
3.6 Генерация рекомендаций
Алгоритм генерации рекомендаций начинается с обхода дерева решений, начиная с корневого узла и проверяя критерий. В зависимости от значения критерия, переходим к следующему узлу. Когда достигаем листового узла, возвращаем список продуктов, которые соответствуют критериям пользователя.
- Тип устройства:
- Стандартный ПК
- Ноутбук
- Мини-ПК
- Бюджет:
- Менее 50,000 рублей
- 50,000 - 100,000 рублей
- Более 100,000 рублей
- Предпочтительные характеристики:
- Высокая производительность (игровой ПК, рабочая станция)
- Средняя производительность (офисный ПК)
- Компактность (мини-ПК
- Совместимость компонентов:
- Проверка совместимости процессора, материнской платы, оперативной памяти, видеокарты и других компонентов.
- Отзывы им рейтинги:
- Высокий рейтинг (4+ звезды)
- Положительные отзывы (более 80% положительных отзывов)
- История просмотров и покупок:
- Продукты, которые пользователь просматривал или покупал ранее.

Рисунок 1 – Схема дерева решений
Для улучшения модуля помощника и системы рекомендаций в интернет-магазине можно рассмотреть несколько дополнительных аспектов и технологий. Расширение критериев для дерева решений включает добавление дополнительных критериев для более точных рекомендаций, таких как производительность, совместимость компонентов и параметры устройства. Интеграция машинного обучения позволяет использовать методы машинного обучения для улучшения точности и персонализации рекомендаций, включая коллаборативную фильтрацию, контентную фильтрацию и гибридные модели. Обработка естественного языка (NLP) помогает анализировать отзывы и комментарии, используя сентимент-анализ и извлечение ключевых слов для улучшения рекомендаций. Реализация обратной связи включает разработку системы для сбора мнений пользователей о рекомендованных продуктах, что поможет улучшить алгоритмы. Оптимизация производительности достигается с помощью современных технологий и инструментов, таких как кэширование, масштабирование и обработка данных в реальном времени. Интерфейс пользователя (UI/UX) должен быть интуитивно понятным и удобным, с возможностью фильтровать и сортировать рекомендации, а также использовать визуализацию данных для наглядного представления информации. Конечно, не все методы можно применить в случае нашей работы из-за ограниченных ресурсов и отсутствия наборов данных для тренировки нейронных сетей, но о них всегда нужно помнить при разработке ПО, которое должно быть легко масштабируемым и расширяемым.
Выводы
В заключение, для создания эффективного модуля помощника и системы рекомендаций в интернет-магазине необходимо учитывать множество факторов. Это включает в себя анализ пользовательских предпочтений, определение критериев выбора, разработку алгоритмов рекомендаций, а также обеспечение совместимости компонентов. Важно также рассмотреть возможность интеграции машинного обучения, обработки естественного языка, реализации обратной связи и оптимизации производительности. Несмотря на ограниченные ресурсы и отсутствие больших наборов данных для тренировки нейронных сетей, разработка ПО должна быть ориентирована на масштабируемость и расширяемость, чтобы обеспечить высокую эффективность и удовлетворение потребностей пользователей.
Список источников
- Golang Documentation [Электронный ресурс]. – Режим доступа: https://golang.org/doc/ – Загл. с экрана.
- Bodner, J. Learning Go. – O'Reilly Media, 2021. – 386 с.
- Varghese, S. Web Development with Go: Learn to Build Scalable Web Applications with Go. – Packt Publishing, 2016. – 256 с.
- Obe, R. O., Hsu, L. S. PostgreSQL: Up and Running. – O'Reilly Media, 2015. – 304 с.
- Duckett, J. HTML and CSS: Design and Build Websites. – John Wiley & Sons, 2011. – 490 с.
- Crockford, D. JavaScript: The Good Parts. – O'Reilly Media, 2008. – 172 с.
- Ekstrand, M. D., Riedl, J. T., Konstan, J. A. A Survey of Collaborative Filtering Techniques. – ACM, 2011. – 24 с.
- Pazzani, M. J., Billsus, D. Content-Based Recommendation Systems. – Springer, 2007. – 20 с.
- Burke, R. Hybrid Recommender Systems: Survey and Experiments. – Springer, 2002. – 16 с.
- Adomavicius, G., Tuzhilin, A. Improving web-based recommendation systems. – IEEE, 2001. – 12 с.
- Apeltsin, L. Building a Recommendation System with Python Machine Learning & AI. – Packt Publishing, 2020. – 32 с.