Корзина и оформление заказа 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-состояния:
- состав и количество товаров;
- способ получения;
- адрес при курьерской доставке;
- способ оплаты;
- имя, email, телефон, комментарий;
- отправка заказа.
Контакты представлены именованной аннотированной 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 повторно проверяет его на сервере непосредственно перед созданием заказа.