Нефункциональные требования к проекту - vsevolodkolmogorov/ads-online-backend GitHub Wiki

Описание требований к системе рекомендаций

Введение

Данный документ описывает функциональные и нефункциональные требования для системы перепродажи вещей. Включены пользовательские сценарии (User Story), основные компоненты системы и диаграммы, описывающие архитектуру и взаимодействие компонентов. Также приведены диаграммы вариантов использования и диаграммы деятельности для лучшего понимания работы системы.


Требование #1: Регистрация и авторизация пользователей

User Story

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

Функциональные требования

  • Пользователь должен иметь возможность зарегистрироваться с указанием обязательных данных (имя, email, пароль).
  • После регистрации, пользователь должен иметь возможность войти в систему, используя свои учетные данные.

Пример API запросов:

  • POST /auth/register — Регистрация нового пользователя.
  • POST /auth/login — Авторизация пользователя.

Технические требования

  • Использование базы данных для хранения данных о пользователях.
  • Реализация API с использованием REST.

Требование #2: Управление объявлениями

User Story

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

Функциональные требования

  • Пользователь может создать объявление, указав необходимые данные (название, описание, цена, изображение).
  • Пользователь может редактировать или удалить свои объявления.
  • Пользователь может просматривать список объявлений других пользователей.
  • Каждое объявление должно быть привязано к пользователю (автору).

Пример API запросов:

  • POST /ads/create — Создание нового объявления.
  • PUT /ads/{ad_id}/update — Обновление объявления.
  • DELETE /ads/{ad_id}/delete — Удаление объявления.
  • GET /ads — Просмотр списка объявлений.

Технические требования

  • Система должна поддерживать работу с изображениями (загрузка, получение).
  • Каждое объявление хранится в базе данных, связанной с автором.
  • Необходимо учитывать роль пользователя для доступа к функционалу (например, только автор может редактировать и удалять свои объявления).

Требование #3: Комментирование объявлений

User Story

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

Функциональные требования

  • Пользователь должен иметь возможность добавить комментарий к объявлению.
  • Комментарии могут быть видны всем пользователям.
  • Пользователь может удалять свои комментарии.

Пример API запросов:

  • POST /ads/{ad_id}/comments — Добавление комментария.
  • DELETE /ads/{ad_id}/comments/{comment_id}/delete — Удаление комментария.

Технические требования

  • Комментарии должны храниться в базе данных и быть связаны с конкретным объявлением.
  • Система должна проверять авторизацию пользователя при добавлении или удалении комментариев.

Требование #4: Загрузка и отображение изображений

User Story

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

Функциональные требования

  • Пользователь может загрузить изображение для своего объявления.
  • Пользователь может загружать и изменять аватар.
  • Изображения должны быть доступны для просмотра другими пользователями.

Пример API запросов:

  • POST /images/upload — Загрузка изображения.
  • GET /images/{image_id} — Получение изображения.
  • POST /users/{user_id}/avatar — Изменение аватара пользователя.

Технические требования

  • Изображения должны храниться на сервере или в облачном хранилище (например, Amazon S3).
  • Система должна обеспечивать безопасную загрузку и хранение изображений.

Требование #5: Управление данными пользователя

User Story

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

Функциональные требования

  • Пользователь может обновить свое имя, фамилию и номер телефона.
  • Пользователь может сменить пароль.
  • Пользователь может изменить свой аватар.

Пример API запросов:

  • PUT /users/{user_id}/update — Обновление данных пользователя.
  • POST /users/{user_id}/change-password — Изменение пароля.
  • POST /users/{user_id}/avatar — Смена аватара.

Технические требования

  • Необходимо реализовать проверку авторизации при изменении данных пользователя.
  • Система должна поддерживать безопасное хранение паролей (например, с использованием bcrypt).

Заключение

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