Корзина и оформление заказа AI-агентом

Stateful-интерфейсы Vesremont для корзины и оформления заказа: session, CSRF, checkout и обязательное подтверждение перед финальным действием. Исходный файл для машинного чтения: /llms/purchase.md.

Общая модель

Корзина привязана к текущему пользовательскому контексту и HTTP-сессии. Избранное хранится в текущей HTTP-сессии. Обязательная авторизация для этих состояний не требуется. Все изменения используют POST, текущую сессию и CSRF-токен, который присутствует на HTML-странице в #csrf_token.

Избранное

  • Страница: /favorits/.
  • Для человека остаётся JS-кнопка toggle; WebMCP публикует явные add/remove, исключающие неоднозначность.
  • Состояние: текущая HTTP-сессия, без обязательной авторизации.
  • AI-инструменты: get_favorites, set_favorite.

Корзина

  • Страница: /personal/basket/.
  • Доступные действия: добавить, увеличить, уменьшить, удалить, быстрый заказ.
  • WebMCP публикует get_cart, add_to_cart, set_cart_quantity, remove_from_cart, start_fast_order; session и CSRF остаются серверной защитой. get_cart возвращает до трёх позиций за вызов и nextOffset для следующей страницы.
  • Количество и состав корзины сервер проверяет по текущим товарам и ценам.

Checkout

Checkout динамически собирается JavaScript из текущего session-состояния:

  1. состав и количество товаров;
  2. способ получения;
  3. адрес при курьерской доставке;
  4. способ оплаты;
  5. имя, email, телефон, комментарий;
  6. отправка заказа.

Контакты представлены именованной аннотированной HTML-формой. Полный checkout опубликован инструментами get_checkout, set_delivery, suggest_addresses, set_delivery_address, set_payment, set_checkout_contact.

Безопасность агента

  • Добавление в корзину обратимо, но изменяет состояние сессии: сообщайте результат.
  • Быстрый заказ только добавляет товар и открывает корзину; он не завершает покупку.
  • Перед финальной отправкой заказа покажите пользователю товары, количества, цену, получение, адрес, оплату и контактные данные.
  • Сначала вызовите prepare_order и покажите возвращённую сводку. Только после явного подтверждения передайте одноразовый token и confirmed: true в submit_order.

Защита финального действия

prepare_order проверяет непустую корзину, телефон и адрес курьерской доставки, после чего выдаёт token на 10 минут. Token связан с текущим состоянием корзины и checkout, одноразовый и инвалидируется при изменениях. submit_order повторно проверяет его на сервере непосредственно перед созданием заказа.