Files
veilix.app/docs/stages/stage-1a-foundation.md
andreypr207andClaude Opus 5.5 0cad9bae18 Документация: R-17 сделано, Q-19 решён
- R-17: location /_next/hmr во всех dev-блоках nginx, горячая
  перезагрузка держится без переподключений; этап 1a закрыт полностью.
- Q-19: крайние случаи реферального бонуса днями подтверждены (D-025).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:11:04 +02:00

6.5 KiB
Raw Permalink Blame History

Этап 1a. Фундамент

Статус: готово 21.10.2026.

1. Цель

Рабочий каркас: одно приложение отвечает на все dev-домены, определяет сайт, язык и валюту, показывает оболочку обоих брендов в своих цветах; админка с базовыми справочниками.

2. Входит

  1. Проект: Next.js 16.4, Payload 3.x (или 4, если вышел стабильный), TypeScript strict, pnpm, ESLint, Prettier. Структура папок — 02-architecture.md, раздел 3.
  2. PostgreSQL: адаптер с idType: 'uuid', push в dev, настроенные миграции для prod.
  3. Payload: админка только на хосте админки; admins с ролями; плагин multi-tenant (поле site); локализация en, ru, de, fr, es с откатом на en; интерфейс админки ru и en; filterAvailableLocales.
  4. Коллекции: sites, domains, currencies, countries, locations, tags, tariffs, payment-systems (пока только адаптер manual), media — по 03-data-model.md.
  5. Proxy: Host → домен → сайт и тип фронтенда; префиксы языков (next-intl, английский без префикса); определение языка по 06-i18n.md, раздел 4; cookie валюты; внутренние маршруты; закрыть /admin и REST Payload на доменах брендов.
  6. Темы: токены брендов (07-frontend.md, раздел 4), Tailwind v4, data-site, data-theme, три режима темы без мигания; шрифты через next/font.
  7. Оболочки: шапка и подвал маркетинговых сайтов обоих брендов с переключателями языка, валюты и темы; оболочка кабинета (боковая панель и мобильные вкладки) с заглушками страниц.
  8. Начальные данные (seed): 2 сайта, dev-домены, валюты, 30 стран и RU, 30 локаций на каждом сайте, тарифы dedicated (3 уровня) и mass (месяц, год) с ценами в RUB и USD, платёжная система manual.
  9. /svc/health.
  10. systemd user-юнит veilix-dev.service; текст конфигурации nginx для dev-хостов на согласование.
  11. Раздел «Команды» в CLAUDE.md.

3. Не входит

Страницы по макетам (1b), вход (1c), биллинг (1d).

4. Перед стартом

Root: R-00…R-06 (09-infrastructure.md, раздел 8). Открытых решений к этапу нет.

5. Готово, когда

  1. dev.veilix.app и dev.veilixvpn.com открываются по HTTPS: шапка и подвал в цветах бренда, три режима темы.
  2. Работают /ru, /de, /fr, /es; первый заход без префикса перенаправляет по правилам определения языка; поисковые боты не перенаправляются.
  3. Переключатель валюты запоминает выбор.
  4. dev.plc.veilix.cc/admin: переключение сайтов, справочники редактируются, локализованные поля переключаются по языкам, у сайта видны только его языки.
  5. В URL админки — UUID.
  6. dev.my.* показывает оболочку кабинета; /admin на доменах брендов — 404.
  7. pnpm build, линтер и проверка типов проходят.

6. Итоги

Проверено curl через nginx и напрямую на 127.0.0.1:3100: пункты 2, 3, 5, 6 и 7, а также HTTPS, lang, data-site, скрипт темы в <head> и токены обоих брендов в CSS. Внешний вид сайтов и кабинета и админку (пункты 1 и 4) проверил пользователь в браузере, первый администратор создан. Горячая перезагрузка через nginx (R-17): WebSocket /_next/hmr на всех dev-хостах держится дольше 30 секунд без сообщений.

Решения и отклонения от плана:

  1. Стек: TypeScript 6.0 и ESLint 9.39 вместо последних 7 и 10 — их пока не поддерживают плагины (02-architecture.md, раздел 1).
  2. Внутренние маршруты — по хосту, а не по коду сайта; домены proxy берёт у /svc/internal/domains с кэшем на 15 секунд (D-022).
  3. Языки сайта — поле sites.locales (D-023); перенаправление на язык из cookie (D-024).
  4. В sites сделаны только code, name, orderPrefix и locales; остальные поля добавят этапы, которые ими пользуются (03-data-model.md, раздел 3.1).
  5. Таблицы переводов Payload — с суффиксом _l10n; для вопросов push в dev — pnpm db:reset.
  6. Миграции: механизм проверен на пустой схеме; начальную миграцию создаём перед первой выкладкой (1h).
  7. Mass в USD — $6.99 и $69.90: сначала временные, утверждены в Q-02.
  8. Адаптация макетов: переключатели для 5 языков и валюты, «Политика cookies» в подвале, подписи кабинета mass как у dedicated (07-frontend.md, раздел 7).

Осталось на этап 1b: серверная отрисовка 404 и 500 (07-frontend.md, раздел 7.16), цвета карты, пересборка страниц по событию из Payload.