VARICA
digital proposal bureau
VARICA / Документация v2

Публичные страницы и PDF

Клиент открывает одну публичную ссылку. Внешняя оболочка страницы отвечает за:

Что получает клиент

Клиент открывает одну публичную ссылку. Внешняя оболочка страницы отвечает за:

  • заголовок браузера;
  • фиксацию открытия;
  • cookie посетителя;
  • кнопку «Скачать в PDF»;
  • служебную плашку VARICA внизу;
  • загрузку snapshot-контента во внутренний iframe.

Содержимое КП отдаётся отдельным маршрутом /{public_token}/content. Этот маршрут не считает открытие повторно: учёт принадлежит внешней странице.

Зачем используется iframe

Шаблоны создаются пользователем и могут содержать собственные стили. Iframe изолирует CSS шаблона от обвязки VARICA и сохраняет служебную нижнюю плашку вне пользовательской верстки.

Iframe передаёт высоту своего контента наружной оболочке через nonce-bound message. Внешняя страница подстраивает область под фактическую высоту КП. Это особенно важно для длинных шаблонов и мобильного просмотра.

Snapshot и безопасность содержимого

Публичная страница берёт rendered_body из generated_pages, а не текущий HTML шаблона. У iframe выставляется CSP, разрешающая только служебный nonce-bound script высоты. Импортированный пользовательский JavaScript не должен исполняться в контенте.

Это изоляция исполнения, а не модерация дизайна. Некорректный HTML/CSS всё ещё может сломать собственную верстку КП, поэтому шаблоны нужно проверять в предпросмотре и на мобильной ширине.

Учёт открытий

Каждый запрос к публичной странице:

  1. находит страницу по public_token;
  2. увеличивает open_count;
  3. пишет событие open в generated_page_events;
  4. после первых 10 открытий этой страницы пытается списать оплату за открытие;
  5. отправляет webhook page.opened, если в настройках организации задан URL.

Даже открытия самим менеджером считаются. Признаки уникальности сохраняются в событиях для будущей аналитики, но не меняют текущий простой счётчик.

PDF

Кнопка в плашке вызывает /{public_token}/download.pdf. Перед генерацией сервис фиксирует pdf_download и обновляет счётчики страницы. Затем WeasyPrint строит файл из snapshot-HTML с белым фоном и печатными правилами. Ссылки внутри HTML сохраняются как ссылки в результирующем PDF настолько, насколько их поддерживает HTML/WeasyPrint.

PDF — производный файл, а не новый snapshot: при следующем скачивании он строится заново.

Что проверять перед публикацией шаблона

  • десктоп, планшет и мобильная ширина;
  • длинные заголовки и тексты;
  • таблицы с несколькими строками и статической строкой «итого»;
  • прозрачные PNG на нужном фоне;
  • работу кнопки PDF;
  • наличие маркетинговой плашки VARICA после iframe.