Создание веб-сервиса для подбора совместимых компонентов ПК с фокусом на бюджетные игровые сборки из б/у комплектующих. Сервис решает проблему начинающих сборщиков, которые не знают, какие компоненты совместимы между собой, и помогает оптимизировать бюджет, показывая соотношение цена/производительность.
- Несовместимость компонентов (сокет CPU ≠ сокет материнской платы)
- Недостаточная мощность блока питания для выбранной конфигурации
- Видеокарта не помещается в корпус
- Сложность оценки производительности сборки в играх
- Отсутствие понимания оптимального распределения бюджета
- Геймеры с ограниченным бюджетом (15 000 — 50 000 ₽)
- Начинающие сборщики ПК без опыта проверки совместимости
- Энтузиасты, ищущие оптимальные б/у комплектующие
| Роль | Возможности |
|---|---|
| Гость | Просмотр каталога компонентов, использование конфигуратора, просмотр аналитики и графиков, фильтрация и сортировка |
| Авторизованный пользователь | Всё что доступно гостю + сохранение сборок в личный кабинет, сравнение своих сборок, редактирование и удаление сборок |
| Администратор | Управление каталогом компонентов через Django Admin, добавление новых комплектующих, модерация данных |
Карточка процессора с техническими характеристиками.
Поля:
name— название (например: "AMD Ryzen 5 5600")manufacturer— производитель (AMD/Intel)socket— сокет (AM4, LGA1200, LGA1700)cores— количество ядерthreads— количество потоковbase_clock— базовая частота (GHz)boost_clock— турбо частота (GHz)tdp— энергопотребление (Вт)has_integrated_gpu— наличие встроенной графикиbenchmark_score— оценка производительностиavg_used_price— средняя цена на б/у рынке
Карточка видеокарты.
Поля:
name— название (например: "NVIDIA GeForce RTX 3060")manufacturer— производительvram— объём видеопамяти (GB)memory_type— тип памяти (GDDR5, GDDR6)tdp— энергопотребление (Вт)length— длина в мм (для проверки совместимости с корпусом)benchmark_score— оценка производительностиavg_used_price— средняя цена на б/у рынке
Карточка материнской платы.
Поля:
name— названиеmanufacturer— производительsocket— сокет (должен совпадать с CPU)chipset— чипсетform_factor— форм-фактор (ATX, mATX, ITX)memory_type— тип поддерживаемой памяти (DDR4, DDR5)memory_slots— количество слотов RAMmax_memory— максимальный объём RAM (GB)avg_used_price— средняя цена на б/у рынке
Карточка оперативной памяти.
Поля:
name— названиеmanufacturer— производительmemory_type— тип (DDR4, DDR5)capacity— общий объём (GB)modules— количество планокspeed— частота (MHz)avg_used_price— средняя цена на б/у рынке
Карточка блока питания.
Поля:
name— названиеmanufacturer— производительwattage— мощность (Вт)efficiency— сертификат эффективности (80+, Bronze, Gold)is_modular— модульность кабелейavg_used_price— средняя цена на б/у рынке
Карточка корпуса.
Поля:
name— названиеmanufacturer— производительform_factor— поддерживаемый форм-фактор (ATX, mATX, ITX)max_gpu_length— максимальная длина видеокарты (мм)avg_used_price— средняя цена на б/у рынке
Сборка пользователя, объединяющая все компоненты.
Поля:
user— владелец сборки (связь ForeignKey → User)name— название сборкиcpu— процессор (связь ForeignKey → CPU)gpu— видеокарта (связь ForeignKey → GPU, опционально)motherboard— материнская плата (связь ForeignKey → Motherboard)ram— оперативная память (связь ForeignKey → RAM)psu— блок питания (связь ForeignKey → PSU)case— корпус (связь ForeignKey → Case, опционально)is_public— публичная/приватная сборкаcreated_at— дата создания
Как гость,
я хочу просматривать каталог компонентов с возможностью фильтрации по цене,
производителю и характеристикам,
чтобы быстро найти подходящие комплектующие.
Критерии:
- Отображение списка компонентов по категориям (CPU, GPU, и т.д.)
- Фильтры: диапазон цен, производитель, сокет (для CPU/Motherboard)
- Сортировка: по цене, по производительности, по названию
Как пользователь,
я хочу собрать конфигурацию ПК с автоматической проверкой совместимости,
чтобы избежать ошибок при покупке компонентов.
Критерии:
- Пошаговый выбор компонентов
- Автоматическая проверка:
- Сокет CPU = Сокет материнской платы
- Тип RAM = Тип RAM материнской платы
- Длина GPU ≤ Максимальная длина в корпусе
- Форм-фактор платы поддерживается корпусом
- Мощность PSU ≥ Суммарный TDP × 1.3
- Вывод ошибок/предупреждений при несовместимости
Как пользователь,
я хочу видеть визуальную аналитику своей сборки,
чтобы понять распределение бюджета и оценить производительность.
Критерии:
- Круговая диаграмма распределения бюджета по компонентам (Plotly)
- Расчёт общей стоимости сборки
- Расчёт суммарного энергопотребления (TDP)
- Оценка производительности (benchmark score)
Как авторизованный пользователь,
я хочу сохранять свои сборки в личный кабинет,
чтобы вернуться к ним позже или сравнить несколько вариантов.
Критерии:
- Регистрация и авторизация
- Список сохранённых сборок в личном кабинете
- Возможность редактировать и удалять свои сборки
- Переключение публичности (public/private)
Как пользователь,
я хочу сравнить несколько сборок в табличном виде,
чтобы выбрать оптимальный вариант.
Критерии:
- Выбор 2-3 сборок для сравнения
- Таблица с характеристиками: цена, производительность, TDP
- Визуальное выделение лучших показателей
| Библиотека | Применение |
|---|---|
| Plotly | Интерактивные графики: круговая диаграмма бюджета, столбчатая диаграмма сравнения |
| Pandas | Агрегация данных: средние цены по категориям, расчёт статистики, фильтрация DataFrame |
-
Распределение бюджета — Pie Chart (Plotly)
- Показывает долю каждого компонента в общей стоимости сборки
-
Сравнение производительности — Bar Chart (Plotly)
- Сравнение benchmark-очков нескольких сборок
-
Цена/Производительность — Scatter Plot (Plotly)
- Позиционирование компонентов по соотношению цена/benchmark
# Пример: Расчёт рекомендуемой мощности БП
def calculate_recommended_psu(cpu_tdp, gpu_tdp):
base_tdp = cpu_tdp + gpu_tdp
system_overhead = 50 # RAM, накопители, вентиляторы
safety_margin = 1.3 # Запас 30%
return int((base_tdp + system_overhead) * safety_margin)
# Пример: Проверка совместимости
def check_socket_compatibility(cpu, motherboard):
return cpu.socket == motherboard.socket