Этап 1b: сайт

- Страницы обоих брендов из блоков Payload (D-029): главная, цены,
  локации, поддержка, 4 юридические, 404 и 500. Коллекции pages
  (черновики и версии) и faq с местами показа, 12 типов блоков; поля
  sites — почта и Telegram поддержки, часы работы, SEO по умолчанию.
- Карта и глобус рисуются на сервере (d3-geo), контуры во внешнем
  SVG через <use>; выбор локации синхронизирован между картой и сеткой.
- Тексты сайта и юридические черновики на 5 языках: de, fr, es —
  перевод с глоссарием; seed создаёт страницы и FAQ, только если их
  нет, SEED_CONTENT=reset пересоздаёт.
- SEO: title и описания, canonical, hreflang с x-default,
  sitemap.xml и robots.txt на каждый домен, картинки для соцсетей.
- Статическая сборка и пересборка через revalidatePath из хуков
  Payload (D-030); /svc/internal/revalidate для проверки.
- 404 — статичная страница со статусом 404 через proxy; на сайте
  только опубликованные страницы.
- Производительность: Client Hints темы Payload только в админке,
  предзагрузка 2 файлов шрифтов вместо 6; Lighthouse mobile 97–99.
- Контраст --ink-3 по WCAG AA, радиокнопки вместо div role=button.
- Документация: итоги 1b, глоссарий de/fr/es, трактовки юридических
  черновиков подтверждены, переносимые вопросы — в этапах 3e–3h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
andreypr207andClaude Opus 5.5 committed 2026-10-22 04:53:15 +02:00
1 parent 515acfb69d
commit 20491d1ba4
134 files changed
+11232 -212

No files matched your search

+17 -2
View File
@@ -68,7 +68,7 @@ erDiagram
| provisioningMode | select `manual` \| `demo` \| `api` | режим выдачи ключей ([D-028](decisions/D-028-provisioning-adapter.md)): `demo` — с этапа 1f, `api` — с 3g |
| seo | group: titleTemplate (L), description (L), ogImage | значения по умолчанию |
На этапе 1a сделаны `code` (после создания не меняется), `name`, `orderPrefix` и `locales`. Остальные поля добавляют этапы, которые ими пользуются: SEO, контакты и часы поддержки — 1b, отправитель писем — 1c, порог «Истекает» — 1d, пресеты пополнения — 1e, режим выдачи — 1f, сроки продлений и напоминаний — 1g, рефералы — 1h, основной бот — 2a.
На этапе 1a сделаны `code` (после создания не меняется), `name`, `orderPrefix` и `locales`, на этапе 1b — `supportEmail`, `supportBot`, `supportHours` и `seo`. Остальные поля добавляют этапы, которые ими пользуются: SEO, контакты и часы поддержки — 1b, отправитель писем — 1c, порог «Истекает» — 1d, пресеты пополнения — 1e, режим выдачи — 1f, сроки продлений и напоминаний — 1g, рефералы — 1h, основной бот — 2a.
### 3.2 `domains` — Домены (сайт)
@@ -343,7 +343,22 @@ QR-коды строятся на лету из `payload`, не хранятся
### 7.1 `pages` — Страницы (сайт)
Страницы сайта из блоков ([D-029](decisions/D-029-pages-blocks.md)): `slug` (уникальное в сайте: `home`, `pricing`, `locations`, `support`, `terms`, `privacy`, `refund`, `cookies`), `title` (L), `layout` (блоки, поля блоков локализованы), `seo` (title (L), description (L), image). Черновики и версии Payload включены. Набор блоков — в `src/payload/blocks/`, описание — по итогам этапа 1b.
Страницы сайта из блоков ([D-029](decisions/D-029-pages-blocks.md)): `slug` (уникальное в сайте: `home`, `pricing`, `locations`, `support`, `terms`, `privacy`, `refund`, `cookies`), `title` (L), `layout` (блоки, поля блоков локализованы), `seo` (title (L), description (L), image). Черновики и версии Payload включены. Блоки (`src/payload/blocks/`), поля блоков локализованы, в текстах — подстановки `{priceFirst}`, `{priceRenewal}`, `{priceMonth}`, `{priceYear}`, `{pricePerMonth}`, `{savings}`, `{countries}`, `{devices}`:
| Блок | Секция макета |
|---|---|
| `hero` | первый экран главной: плашки, H1, две кнопки, плашка под глобусом |
| `advantages` | «Что это даёт на практике»: большая карточка, малые карточки, карточка маршрутов |
| `pricing` | цены на главной: у dedicated — выбор локации и заявка, у mass — планы «Месяц» и «Год» |
| `crossLink` | ссылка на сайт другого бренда |
| `faq` | вопросы из мест показа: одно место — список, несколько — вкладки |
| `pricingHero` | верх страницы цен: крупная цена, «Что входит» |
| `locationGrid` | сетка локаций: у dedicated с ценами и «Купить», у mass — со статусами |
| `cards` | карточки внизу страниц: текст, ссылка на другой бренд, заявка |
| `mapHero` | верх страницы локаций: H1, карта, легенда |
| `contacts` | верх поддержки: H1, Telegram и почта из настроек сайта, часы |
| `contactForm` | «Написать нам» с темами обращения |
| `richText` | текст: юридические страницы |
### 7.2 `faq` — Вопросы и ответы (сайт)