Sobes.tech
Middle

Вазифа: таҳия кардани усули бекенд барои навсозии ҳолати фармоиш, ки танҳо барои администратор дастрас аст. Тавсия медиҳем, ки ҳуҷҷати техникӣ барои таҳиягар таҳия кунед.

sobes.tech AI

Ҷавоб аз 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. Тесты:

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

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