Skip to content

Latest commit

 

History

History
 
 

SPRINT-2

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Спринт №2: Медиа файлы

image

Продукт "Şañıraq.kz" - имеет много конкурентов на рынке. Чтобы не отставать по User Experience, нам нужно увеличить конверсию откликов на объявления.

На данном спринте мы сфокусируемся на важных фичах любого маркетплейса:

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

После завершения данного спринта разверните разработку на railway.

✅ Таск №1: Прикрепление картинок к объявлению.

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

Пример запроса на API: должен выполняться HTTP метод POST на роут /shanyraks/{id}/media, в который загружаются изображения. {id} - идентификатор объявления.

POST /shanyraks/{id}/media HTTP/1.1
Authorization: Bearer {token}

photo_1.png
photo_2.png
photo_3.png
photo_n.png

При успешном прикреплении изображений к объявлению, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №2: Получение картинок объявления

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

Пример запроса на API: должен выполняться HTTP метод GET на роут /shanyraks/{id}, где {id} - идентификатор объявления.

GET /shanyraks/{id} HTTP/1.1

При успешном выполнении запроса, API должен возвращать HTTP код 200 и JSON структура с данными объявления и ссылками на изображения.

HTTP/1.1 200 OK

{
    "_id": "507f191e810c19729de860ea",
    "type": "rent",
    "price": 150000,
    "address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь",
    "area": 46.5,
    "rooms_count": 2,
    "description": "...",
    "user_id": "{user_id пользователя создавшего объявление}",
    "media": [
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_1.png",
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_2.png",
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_3.png",
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_n.png"
    ]
}

✅ Таск №3: Удаление картинок объявления

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

Пример запроса на API: должен выполняться HTTP метод DELETE на роут /shanyraks/{id}/media, где {id} - идентификатор объявления.

DELETE /shanyraks/{id}/media HTTP/1.1
Authorization: Bearer {token}

{
    "media": [
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_1.png",
        "https://{s3_service}/shanyraks/507f191e810c19729de860ea/photo_2.png"
    ]
}

При успешном удалении изображений, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №4: Добавление комментария к объявлению

Пользователи должны иметь возможность оставлять комментарии к объявлениям.

Пример запроса на API: должен выполняться HTTP метод POST на роут /shanyraks/{id}/comments, где {id} - идентификатор объявления.

POST /shanyraks/{id}/comments HTTP/1.1
Authorization: Bearer {token}

{
    "content": "Очень понравилось тут жить! Соседи тихие, автобусные остановки рядом, школа рядом. Дети довольны! 🥰"
}

При успешном добавлении комментария, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №5: Получение списка комментариев объявления

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

Пример запроса на API: должен выполняться HTTP метод GET на роут /shanyraks/{id}/comments, где {id} - идентификатор объявления.

GET /shanyraks/{id}/comments HTTP/1.1

При успешном выполнении запроса, API должен возвращать HTTP код 200 и JSON структура с массивом комментариев.

HTTP/1.1 200 OK

{
    "comments": [
        {
            "_id": "{comment_id}"
            "content": "Очень понравилось тут жить! Соседи тихие, автобусные остановки рядом, школа рядом. Дети довольны! 🥰"
            "created_at": "{время и дата создания}",
            "author_id": "{user_id пользователя который оставил коммент}"
        },
        {
            "_id": "{comment_id}"
            "content": "Очень шумный двор! 😡\nКуча детей играют в футбол до поздна! Много посуточных квартир, поэтому всю ночь ходят пьянные парочки. Везде мусор кидают дети."
            "created_at": "{время и дата создания}",
            "author_id": "{user_id пользователя который оставил коммент}"
        }
    ]
}

✅ Таск №6: Изменение текста комментария

Пользователи должны иметь возможность изменять текст своего комментария.

Пример запроса на API: должен выполняться HTTP метод PATCH на роут /shanyraks/{id}/comments/{comment_id}, где {id} - идентификатор объявления, {comment_id} - идентификатор комментария.

PATCH /shanyraks/{id}/comments/{comment_id} HTTP/1.1
Authorization: Bearer {token}

{
    "content": "Живу здесь с момента постройки, все устраивает, самое главное распоряжение, тепло, кск хорошо и вовремя реагирует на заявку, парковка огромная, школы, садики, ТРЦ, крупные магазины все рядом. Единственный минус большое количество квартирантов."
}

При успешном изменении комментария, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №7: Удаление комментария

Пользователи должны иметь возможность удалять свои комментарии.

Пример запроса на API: должен выполняться HTTP метод DELETE на роут /shanyraks/{id}/comments/{comment_id}, где {id} - идентификатор объявления, {comment_id} - идентификатор комментария.

DELETE /shanyraks/{id}/comments/{comment_id} HTTP/1.1
Authorization: Bearer {token}

При успешном удалении комментария, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK