Skip to content

Порядок разработки — приоритеты фазы 1

Статус: план сборки ядра-минимума; выполняется. Дорожная карта задаёт фазы 0–5 (roadmap); здесь — порядок внутри фазы 1: волны, зависимости, критерии готовности. Исполняемый ранбук с прогрессом — TZ.md репозитория laravel/cms.rosveb.ru: его волны 0–12 (✅ 2026-07-11) — первый срез волн 0–5 этой страницы, волны 13–23 закрывают волны 2–7 полностью. Принцип приоритетов: безопасность и надёжность встроены в каждую волну (гейт), а не «волна про безопасность» в конце; скорость (кеш) — с волны 4, до первого контента она преждевременна.

Правила порядка

  1. Контракты раньше реализаций — то, что переживёт годы (интерфейсы cms/core-contracts, события, схемы данных), пишется и ревьюится первым: менять дёшево, пока нет потребителей.
  2. Каждая волна заканчивается работающим срезом — playground-сайт что-то показывает после каждой волны; «большой взрыв в конце» запрещён.
  3. Гейт волны: Pest + cms-testing + larastan зелёные; security-чек волны пройден; docs/module.md изменённых пакетов обновлён тем же PR; код соответствует спекам студии specs/laravel_13 (модели/контроллеры/миграции/тесты/anti-hardcode).
  4. Донор раньше чистого листа: задача начинается с чтения донорского кода по пути из реестра.

Волны

Волна 0 — инфраструктура разработки (до кода ядра)

Монорепо (Gitea/GitLab) + Satis + CI (self-hosted runner) · пакеты-заготовки cms/core-contracts, cms/core, cms/testing · playground с path-repos, boost, .mcp.json · эталонный Docker-образ PHP 8.4 · генераторы cms:make:*. Готово, когда: composer test гоняется в CI для пустых пакетов; агент видит playground через MCP.

Волна 1 — контракты и оси (фундамент модульности)

cms/core-contracts: канонические события + FilterBus + интерфейсы репозиториев · три оси: события с порядком, именованные очереди + контракт job, settings-store (кеш групп, SettingSchema) · планировщик через хук ядра. Security-гейт: секреты вне settings (env()-линтер); изоляция сбоя слушателя. Готово, когда: демо-модуль в playground слушает событие, кладёт job, читает настройку — не касаясь ядра.

Волна 2 — модель данных и движок полей

Таблицы ядра (модель данных) · движок полей: декларация → Filament-форма / rules / рендер / JSON-схема · FieldTypeRegistry. Security-гейт: валидация всех типов полей (границы «формы» и «админка» из фильтрации границ); санитизация rich-text; ReDoS-проверка пользовательских rules. Донор: universal/src/app/Cms/ (перекладка в JSONB — решение). Готово, когда: тип контента «вакансии» заводится в админке без кода, CRUD генерируется.

Волна 3 — блоки, ревизии, редактор

BlockRegistry + контракт блока (_v, миграции, контейнеры) · ревизии страниц (Q7: draft/publish/rollback, preview-токен) · drag&drop-редактор (средняя свобода Q9) · barrier-рендер (fallback вместо 500). Security-гейт: {!! !!}-линтер; preview только по подписанному токену. Готово, когда: контент-менеджер собирает страницу из блоков, публикует, откатывает.

Волна 4 — темы и производительность

Контракт темы: каскад + манифест резолва + theme.json → Tailwind · базовая тема + галерея /_gallery · кеш-слои: page-cache, области, настройки + инструменты отладки (cms:cache:inspect, панель «Кеш»). Security-гейт: страница с персональными данными не попадает в общий кеш. Готово, когда: бюджет запросов на демо-странице — зелёный контрактный тест; смена темы из админки работает.

Волна 5 — SEO-база, формы, заявки

SEO-ядро (мета/шаблоны/sitemap/robots/Schema.org — доноры gulaev-dev, er) · конструктор форм (Q8) → лиды → уведомления · меню, виджеты (WidgetRegistry). Security-гейт: полный набор защиты форм (CSRF/honeypot/rate-limit/согласие ПДн); API-граница (конверт, 422, query-builder whitelist). Готово, когда: playground-сайт индексируем (sitemap, мета) и принимает заявку в админку.

Волна 6 — жизненный цикл модулей и центр обновлений (минимум)

Машина состояний модулей + preflight + cms:doctor + health-чеки · cms:upgrade (полный пайплайн) + откат · attack-monitor (обязательный набор парка) + 2FA ролей студии. Security-гейт: все 4 сценария рассогласования дают внятную ошибку, не 500; attack-monitor логирует и блокирует брутфорс в playground-тесте. Готово, когда: установка/выключение/откат модуля из админки проходят на playground; cms:upgrade обновляет playground с бэкапом и health-гейтом.

Волна 7 — первый клиентский сайт (выход фазы 1)

Скелет + профиль установки + тема клиента + модули под заказ (порядок диктует заказ — Q1). Готово, когда: метрики README измеримы на живом сайте («страница без обращения в студию», «обновление за минуты»).

Чего НЕ делать раньше времени

  • e-commerce-слои (модель) — фаза 3, по заказу;
  • GraphQL, флит-дашборд, мультиязычность-модуль — по потребителю;
  • оптимизации сверх бюджета запросов (Octane, ESI) — после реальных цифр Pulse.

Связи

  • Roadmap — фазы 0–5; эта страница = развёртка фазы 1.
  • Слой 2 — ТЗ волны модулей — что разрабатывать после волн 1–7: состав, предусловия, стыки с ревизиями, гейты.
  • DX — петля работы агента в каждой волне.
  • Безопасность — источники security-гейтов волн.

Внутренняя база знаний студии