Sobes.tech
Назад к вопросам
Middle
2

Задание: разработать backend-метод обновления статуса заказа, доступный только администратору. Составь ТЗ для разработчика.

Компании, где спрашивали
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Ответ от нейросети

sobes.tech AI

Техническое задание для backend-метода обновления статуса заказа (только для администратора):

  1. Описание: Метод обновляет статус заказа по его идентификатору. Доступен только пользователям с ролью администратора.

  2. URL и метод:

    • URL: /api/orders/{orderId}/status
    • HTTP метод: PATCH или PUT (предпочтительно PATCH для частичного обновления)
  3. Аутентификация и авторизация:

    • Метод требует аутентификации.
    • Проверка роли пользователя: только администраторы имеют доступ.
    • При отсутствии прав возвращать 403 Forbidden.
  4. Входные данные:

    • Параметр пути: orderId — идентификатор заказа.
    • Тело запроса (JSON):
      {
        "status": "new_status"
      }
      
    • Допустимые значения статуса должны быть заранее определены (например, "pending", "shipped", "cancelled" и т.д.).
  5. Обработка:

    • Проверить существование заказа с данным orderId.
    • Проверить валидность нового статуса.
    • Обновить статус заказа в базе данных.
    • Логировать изменение статуса (кто, когда, с какого на какой).
  6. Ответ:

    • При успешном обновлении: HTTP 200 OK с обновлённым объектом заказа или сообщением.
    • При ошибках (например, заказ не найден, неверный статус, недостаточно прав) — соответствующие коды ошибок (404, 400, 403).
  7. Безопасность:

    • Защита от CSRF (если применимо).
    • Валидация и санитизация входных данных.
  8. Пример запроса:

    PATCH /api/orders/123/status HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    { "status": "shipped" }
    
  9. Логирование и мониторинг:

    • Логировать успешные и неуспешные попытки обновления статуса.
  10. Тесты:

    • Проверка обновления статуса с валидными и невалидными данными.
    • Проверка доступа для разных ролей.

Это ТЗ позволит разработчику реализовать безопасный и корректный метод обновления статуса заказа с учётом бизнес-логики и требований безопасности.