Sobes.tech
Middle

Tarea: desarrollar un método backend para actualizar el estado de un pedido, accesible solo para administradores. Elabora un documento de especificaciones para el desarrollador.

sobes.tech AI

Respuesta de la IA

Техническое задание для 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. Тесты:

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

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