Files
2018-lpon-site/_prj_blueprint/STATELESS-ORDERS.md
T

5.4 KiB

Архитектурные решения: Анонимные Заказы (Stateless Cart & Orders)

Дата и время создания: 02.08.2026 23:54
Проект: LPON.RU (Django 6.0+, Python 3.12)
Статус: Согласованная архитектура


1. Бесконтактная Корзина и Заказы без Персональных Данных (Privacy-First / Stateless Orders)

1.1. Концепция полного отказа от ПДн

  • Проблема: Хранение персональных данных клиентов (ФИО, телефон, адрес доставки, e-mail, паспорта) накладывает жесткие юридические обязательства (152-ФЗ), требует аттестации БД, согласий на обработку ПДн и несёт риски утечек.
  • Решение: Полный отказ от хранения ПДн клиентов в базе данных LPON.RU. Сайт работает как смарт-витрина и генератор заказов, а персональные данные либо вообще не собираются, либо обрабатываются внешними специализированными сервисами (Авито, СДЭК, Яндекс.Доставка, эквайринг).

1.2. Архитектура клиентоориентированной корзины (Stateless Cart)

  1. Хранение состава корзины:
    • Состав корзины хранится исключительно на стороне клиента: в Session Cookies или LocalStorage.
    • В БД LPON.RU записи корзины пользователей НЕ создаются.
  2. Идентификация товаров:
    • В корзине сохраняется список уникальных кодов офферов (s_offer_code, сгенерированных через Hashids) и их количество: {"codes": {"4gfFCJ": 1, "9xK2Lm": 2}}.
    • Все данные о цене, названии и наличии запрашиваются у сервера динамически по списку s_offer_code.
  3. DSL-модуль корзины (!cart-app):
    • Страница /cart/ создаётся как стандартная статья-хаб TbArticle (тип HUB), в метаданные которой встроен динамический модуль ["!cart-app"].
    • Это позволяет нативно обвешивать страницу корзины маркетинговыми блоками через DSL (например, выводить снизу карусель товаров ["cassettes-sale", "carousel"]).

1.3. Способы оформления заказа без сохранения ПДн в БД LPON.RU

Вариант А: Оформление через Авито / Маркетплейсы

  • По кнопке «Оформить» сайт формирует ссылку или готовый текст заказа для перехода на профиль продавца на Авито.
  • Покупатель оформляет сделку через безопасную сделку Авито-Доставки. LPON.RU вообще не касается данных о доставке и оплате.

Вариант Б: Интеграция со СДЭК / Яндекс.Доставкой через виджет

  • При выборе доставки СДЭК прямо на странице корзины открывается официальный виджет СДЭК. Посылка "наложенным платежом" (что, кстати, защитит от недобросовестных покупателей, которые получают одно, а возвращают другое. Покупатель все проверяет при получении, а деньги СДЭК переводит только после подтверждения получения).
  • Клиент вводит свои данные (ФИО, пункт выдачи, телефон) напрямую в формы виджета СДЭК.
  • Сервер LPON.RU получает от API СДЭК только Трек-номер (Waybill ID).
  • На стороне LPON.RU в журнале анонимных транзакций сохраняется лишь минимальная агрегированная запись:
    • Идентификатор заказа (Order Hash);
    • Состав офферов (s_offer_code);
    • Трек-номер СДЭК;
    • Статус оплаты/доставки.
    • Данные получателя в БД LPON.RU отсутствуют.

Вариант В: Анонимный статус заказа по Токену

  • Покупатель получает уникальную ссылку вида lpon.ru/order/<order_hash>/ (или хранит токен в куках/LocalStorage).
  • По этой ссылке клиент может проверить текущий статус посылки (информация подтягивается из API СДЭК/Почты по трек-номеру в реальном времени) без необходимости авторизации и ввода личных данных.