Skip to content

Latest commit

 

History

History
234 lines (182 loc) · 11.8 KB

File metadata and controls

234 lines (182 loc) · 11.8 KB

Техническое задание на проект: Budget PC Builder

1. Цель проекта

Создание веб-сервиса для подбора совместимых компонентов ПК с фокусом на бюджетные игровые сборки из б/у комплектующих. Сервис решает проблему начинающих сборщиков, которые не знают, какие компоненты совместимы между собой, и помогает оптимизировать бюджет, показывая соотношение цена/производительность.

Проблемы, которые решает сервис:

  • Несовместимость компонентов (сокет CPU ≠ сокет материнской платы)
  • Недостаточная мощность блока питания для выбранной конфигурации
  • Видеокарта не помещается в корпус
  • Сложность оценки производительности сборки в играх
  • Отсутствие понимания оптимального распределения бюджета

2. Целевая аудитория и роли пользователей

Целевая аудитория:

  • Геймеры с ограниченным бюджетом (15 000 — 50 000 ₽)
  • Начинающие сборщики ПК без опыта проверки совместимости
  • Энтузиасты, ищущие оптимальные б/у комплектующие

Роли пользователей:

Роль Возможности
Гость Просмотр каталога компонентов, использование конфигуратора, просмотр аналитики и графиков, фильтрация и сортировка
Авторизованный пользователь Всё что доступно гостю + сохранение сборок в личный кабинет, сравнение своих сборок, редактирование и удаление сборок
Администратор Управление каталогом компонентов через Django Admin, добавление новых комплектующих, модерация данных

3. Модели данных (сущности)

3.1. CPU (Процессор)

Карточка процессора с техническими характеристиками.

Поля:

  • 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 — средняя цена на б/у рынке

3.2. GPU (Видеокарта)

Карточка видеокарты.

Поля:

  • name — название (например: "NVIDIA GeForce RTX 3060")
  • manufacturer — производитель
  • vram — объём видеопамяти (GB)
  • memory_type — тип памяти (GDDR5, GDDR6)
  • tdp — энергопотребление (Вт)
  • length — длина в мм (для проверки совместимости с корпусом)
  • benchmark_score — оценка производительности
  • avg_used_price — средняя цена на б/у рынке

3.3. Motherboard (Материнская плата)

Карточка материнской платы.

Поля:

  • name — название
  • manufacturer — производитель
  • socket — сокет (должен совпадать с CPU)
  • chipset — чипсет
  • form_factor — форм-фактор (ATX, mATX, ITX)
  • memory_type — тип поддерживаемой памяти (DDR4, DDR5)
  • memory_slots — количество слотов RAM
  • max_memory — максимальный объём RAM (GB)
  • avg_used_price — средняя цена на б/у рынке

3.4. RAM (Оперативная память)

Карточка оперативной памяти.

Поля:

  • name — название
  • manufacturer — производитель
  • memory_type — тип (DDR4, DDR5)
  • capacity — общий объём (GB)
  • modules — количество планок
  • speed — частота (MHz)
  • avg_used_price — средняя цена на б/у рынке

3.5. PSU (Блок питания)

Карточка блока питания.

Поля:

  • name — название
  • manufacturer — производитель
  • wattage — мощность (Вт)
  • efficiency — сертификат эффективности (80+, Bronze, Gold)
  • is_modular — модульность кабелей
  • avg_used_price — средняя цена на б/у рынке

3.6. Case (Корпус)

Карточка корпуса.

Поля:

  • name — название
  • manufacturer — производитель
  • form_factor — поддерживаемый форм-фактор (ATX, mATX, ITX)
  • max_gpu_length — максимальная длина видеокарты (мм)
  • avg_used_price — средняя цена на б/у рынке

3.7. Build (Сборка) — ГЛАВНАЯ МОДЕЛЬ

Сборка пользователя, объединяющая все компоненты.

Поля:

  • 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 — дата создания

4. Ключевой функционал (User Stories)

US-1: Просмотр каталога с фильтрацией

Как гость,
я хочу просматривать каталог компонентов с возможностью фильтрации по цене, производителю и характеристикам,
чтобы быстро найти подходящие комплектующие.

Критерии:

  • Отображение списка компонентов по категориям (CPU, GPU, и т.д.)
  • Фильтры: диапазон цен, производитель, сокет (для CPU/Motherboard)
  • Сортировка: по цене, по производительности, по названию

US-2: Создание сборки с проверкой совместимости

Как пользователь,
я хочу собрать конфигурацию ПК с автоматической проверкой совместимости,
чтобы избежать ошибок при покупке компонентов.

Критерии:

  • Пошаговый выбор компонентов
  • Автоматическая проверка:
    • Сокет CPU = Сокет материнской платы
    • Тип RAM = Тип RAM материнской платы
    • Длина GPU ≤ Максимальная длина в корпусе
    • Форм-фактор платы поддерживается корпусом
    • Мощность PSU ≥ Суммарный TDP × 1.3
  • Вывод ошибок/предупреждений при несовместимости

US-3: Просмотр аналитики сборки

Как пользователь,
я хочу видеть визуальную аналитику своей сборки,
чтобы понять распределение бюджета и оценить производительность.

Критерии:

  • Круговая диаграмма распределения бюджета по компонентам (Plotly)
  • Расчёт общей стоимости сборки
  • Расчёт суммарного энергопотребления (TDP)
  • Оценка производительности (benchmark score)

US-4: Сохранение и управление сборками

Как авторизованный пользователь,
я хочу сохранять свои сборки в личный кабинет,
чтобы вернуться к ним позже или сравнить несколько вариантов.

Критерии:

  • Регистрация и авторизация
  • Список сохранённых сборок в личном кабинете
  • Возможность редактировать и удалять свои сборки
  • Переключение публичности (public/private)

US-5: Сравнение сборок

Как пользователь,
я хочу сравнить несколько сборок в табличном виде,
чтобы выбрать оптимальный вариант.

Критерии:

  • Выбор 2-3 сборок для сравнения
  • Таблица с характеристиками: цена, производительность, TDP
  • Визуальное выделение лучших показателей

5. Внешние интеграции и аналитика

5.1. Библиотеки анализа данных

Библиотека Применение
Plotly Интерактивные графики: круговая диаграмма бюджета, столбчатая диаграмма сравнения
Pandas Агрегация данных: средние цены по категориям, расчёт статистики, фильтрация DataFrame

5.2. Реализуемые графики

  1. Распределение бюджета — Pie Chart (Plotly)

    • Показывает долю каждого компонента в общей стоимости сборки
  2. Сравнение производительности — Bar Chart (Plotly)

    • Сравнение benchmark-очков нескольких сборок
  3. Цена/Производительность — Scatter Plot (Plotly)

    • Позиционирование компонентов по соотношению цена/benchmark

5.3. Расчёты и алгоритмы

# Пример: Расчёт рекомендуемой мощности БП
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