Нефункциональные требования к проекту - 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).
Заключение
Система перепродажи вещей предоставляет пользователям функционал для регистрации, авторизации, создания и управления объявлениями, добавления комментариев и работы с изображениями. Реализация этого функционала позволит создать стабильную и удобную платформу для продажи и покупки вещей, с учетом всех необходимых требований безопасности и удобства пользователя.