feat: скаффолд Astro 5 SSG (главная + /privacy + consent gate)
Some checks failed
deploy / deploy (push) Failing after 14s

- Главная: hero, адрес Люблинская 100 (Аквапарк ФЭНТАЗИ), 4 кликабельных tel:, карта Яндекса
- /privacy: политика 152-ФЗ + ConsentRevoke (отозвать/сбросить)
- Аналитика перенесена 1:1 с WP: Яндекс.Метрика 47169531 (Webvisor) + GA4 GT-WRF7ZZ8
- Скрипты в type=text/plain, активируются после согласия (pit-consent в localStorage+cookie)
- robots.txt с явным Allow для GPTBot/ClaudeBot/PerplexityBot/Google-Extended/CCBot
- llms.txt + ai.txt (spawning.ai стандарт)
- IndexNow ключ 901a779d62ca4702ad810c863b45e1f7
- JSON-LD AutoPartsStore с адресом и 4 телефонами
- nginx:1.29-alpine runtime, контейнер на :4147
- Gitea Actions deploy.yml + Trivy scan + IndexNow ping
This commit is contained in:
Dmitry Gusev
2026-05-22 04:31:55 +03:00
parent 6ff1827690
commit ed27dcfc14
27 changed files with 6099 additions and 1 deletions

63
src/pages/index.astro Normal file
View File

@@ -0,0 +1,63 @@
---
import Base from '../layouts/Base.astro';
import { SITE_TITLE, SITE_TAGLINE, ADDRESS, PHONES, GEO } from '../consts';
const mapSrc = `https://yandex.ru/map-widget/v1/?ll=${GEO.lon}%2C${GEO.lat}&z=${GEO.zoom}&pt=${GEO.lon}%2C${GEO.lat}%2Cpm2rdm`;
---
<Base>
<section class="hero">
<div class="container hero-inner">
<p class="hero-eyebrow">Магазин автозапчастей</p>
<h1>
Авто<span class="accent">запчасти</span><br />
«ПитСтоп»
</h1>
<p class="hero-tagline">{SITE_TAGLINE}. Москва, Люблинская 100.</p>
</div>
</section>
<section>
<div class="container">
<h2>Мы переехали</h2>
<p class="address-block">
<span class="address-postal">{ADDRESS.postal}</span><br />
<strong>г. {ADDRESS.region}, {ADDRESS.street}</strong><br />
{ADDRESS.building}
</p>
</div>
</section>
<section class="alt">
<div class="container">
<h2>Телефоны</h2>
<ul class="phones">
{PHONES.map((p) => (
<li>
<a href={p.href} aria-label={`Позвонить ${p.display}`}>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.9.36 1.78.69 2.6a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.48-1.48a2 2 0 0 1 2.11-.45c.82.33 1.7.56 2.6.69A2 2 0 0 1 22 16.92z"/>
</svg>
{p.display}
</a>
</li>
))}
</ul>
</div>
</section>
<section>
<div class="container">
<h2>Как нас найти</h2>
<div class="map-wrap">
<iframe
src={mapSrc}
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
title="Карта проезда — Автозапчасти ПитСтоп"
allow="geolocation"
></iframe>
</div>
</div>
</section>
</Base>

86
src/pages/privacy.astro Normal file
View File

@@ -0,0 +1,86 @@
---
import Base from '../layouts/Base.astro';
import ConsentRevoke from '../components/ConsentRevoke.astro';
import { SITE_TITLE, SITE_URL } from '../consts';
const today = new Date().toISOString().slice(0, 10);
---
<Base title="Политика конфиденциальности">
<article class="prose">
<h1>Политика конфиденциальности</h1>
<p class="updated">Редакция от {today}</p>
<p>
Настоящая политика определяет порядок обработки персональных данных и сведений о
пользователях сайта <a href={SITE_URL}>{SITE_URL}</a> (далее — Сайт), принадлежащего
магазину {SITE_TITLE}, в соответствии с Федеральным законом № 152-ФЗ
«О персональных данных».
</p>
<h2>1. Какие данные собираются</h2>
<p>Сайт не содержит форм обратной связи, регистрации и заказов. Сами по себе персональные данные
посетителей не запрашиваются и не сохраняются на сервере Сайта.</p>
<p>
При посещении Сайта (при условии вашего согласия) подключаются системы сбора анонимной
статистики:
</p>
<ul>
<li>
<strong>Яндекс.Метрика</strong> (счётчик № <code>47169531</code>) — собирает обезличенные
данные о посещениях, в том числе IP-адрес, тип браузера и устройства, источник перехода,
просматриваемые страницы, действия на странице (включая запись сессий — Вебвизор).
</li>
<li>
<strong>Google Analytics 4</strong> (идентификатор <code>GT-WRF7ZZ8</code>) — собирает
обезличенные данные о посещениях, сессиях и устройствах.
</li>
</ul>
<p>
Данные обрабатываются операторами систем аналитики (ООО «ЯНДЕКС» и Google LLC) в соответствии
с их собственными политиками конфиденциальности. Сайт получает только агрегированные отчёты.
</p>
<h2>2. Cookies</h2>
<p>
Сайт использует следующие cookies:
</p>
<ul>
<li><code>pit-consent</code> — служебная cookie, хранит ваш выбор о согласии на аналитику
(срок 12 месяцев);</li>
<li>cookies Яндекс.Метрики (<code>_ym_*</code>) и Google Analytics (<code>_ga</code>,
<code>_gid</code>) — устанавливаются только после получения вашего согласия.</li>
</ul>
<h2>3. Цели обработки</h2>
<ul>
<li>анализ статистики посещений и качества Сайта;</li>
<li>улучшение удобства использования Сайта;</li>
<li>оценка эффективности рекламных каналов (при использовании).</li>
</ul>
<h2>4. Согласие и его отзыв</h2>
<p>
При первом посещении вам показывается баннер с возможностью принять или отклонить
использование систем аналитики. До получения согласия скрипты Яндекс.Метрики и Google
Analytics на странице не запускаются.
</p>
<p>
Вы можете в любой момент отозвать согласие или сбросить выбор:
</p>
<ConsentRevoke />
<h2>5. Контакты</h2>
<p>
Контактные данные магазина указаны на <a href="/">главной странице</a>. По вопросам
обработки данных вы можете связаться по любому из указанных там телефонов.
</p>
<h2>6. Изменения</h2>
<p>
Действующая редакция политики всегда доступна по адресу
<a href={`${SITE_URL}/privacy/`}>{SITE_URL}/privacy/</a>. Изменения вступают в силу с момента
публикации на этой странице.
</p>
</article>
</Base>