Тема
Реестр модулей
Статус: черновик по данным инвентаризации. Составлен по разбору 8 Laravel-проектов студии (каталог
laravel/— на текущем Linux-сервере это/home/aleksey/projects/laravel/). Для каждого модуля указан лучший донор — проект, где реализация наиболее зрелая и откуда портировать код в модуль CMS.Отличие от каталога подсистем: тот — исчерпывающий каталог всего, что нужно полноценной CMS (ориентир — Битрикс). Этот реестр — что уже есть у студии и откуда портировать. Каталог задаёт цель, реестр — стартовый капитал.
Как читать
- Донор — проект с самой зрелой реализацией (откуда брать код).
- Зрелость: ★★★ готово к портированию · ★★ есть рабочая реализация · ★ прототип/идея.
- Слой: ядро (нужно всем) / модуль (нужно некоторым).
Правило для ТЗ модуля: спека каждого модуля (его
docs/module.mdпри реализации) обязана ссылаться на донорский код конкретным путём относительно корняlaravel/(/home/aleksey/projects/laravel/) — Claude Code при разработке читает образец, а не изобретает заново. Ключевые пути зафиксированы ниже и в тематических разборах (SEO, услуги artel).
Пути к донорскому коду (проверено по файловой системе)
Пути — относительно
/home/aleksey/projects/laravel/. Все проверены на текущем Linux-сервере, кромеcatalog— этот проект ещё не перенесён со старого Windows-сервера (192.168.1.2) и на диске пока отсутствует.⚠️ universal вобрал artel-стек (сверено по коду, июль 2026). Весь домен услуг artel-23ru (модели
Service*,Brand*,Location,ObjectType,CaseStudy,Calculator*,Estimate*,Dictionary*,SeoBlock/SeoMeta/SeoTemplate, сервисыSeoService/DeclensionService/SitemapService/EstimateCalculator, трейтыHasDeclensions/BelongsToCity) перенесён вuniversalв обобщённом виде:setting()из БД вместо хардкодаconfig('artel.*'),SeoBlockрасширен entity-scope (привязка к category/product). Версии в universal свежее (июнь–июль 2026 против марта–апреля в artel). При портировании начинать с universal-версии, artel-23ru — первоисточник и эталон предметной модели.
| Механизм | Путь-образец |
|---|---|
| Блочный движок, BlockRegistry, writer | universal/src/app/Cms/ (BlockRegistry.php, Blocks/, PageBlockWriter.php, BlockMediaResolver.php, Contracts/) |
| SEO-домен (шаблоны, мета, аудит, LLM-мета) | gulaev-dev/src/app/Domains/Seo/ |
| Гео/мультигород, city-оверрайды | gulaev-dev/src/app/Domains/Geo/ · er/project/src/app/Domain/Geo/ |
| Умный SEO-фильтр целиком | er/project/src/app/Domain/Seo/ |
| Биллинг/подписки (Cashier, крипта) | er/project/src/app/Domain/Billing/ |
| Бронирование (слоты) | er/project/src/app/Domain/Booking/ |
| Настройки (стор с city-измерением) | er/project/src/app/Domain/Settings/ · universal (settings-таблица) |
| SEO услуг: падежи, шаблоны, Schema.org | artel-23ru/src/app/Services/SeoService.php, DeclensionService.php, SitemapService.php + Traits/HasDeclensions.php, Traits/BelongsToCity.php · свежая обобщённая версия: те же файлы в universal/src/app/ |
| Калькулятор/смета | artel-23ru/src/app/Services/EstimateCalculator.php · universal (Estimate*) |
| Уведомления (шина каналов) | freelance/project/src/app/Domains/Communication/ |
| Платежи/эскроу/споры | freelance/project/src/app/Domains/{Payments,Escrow,Arbitration}/ · notal/src/app/Services/ |
| Входящие вебхуки (подпись, идемпотентность) | notal/src/app/Http/Controllers/WebhookController.php · notal/src/app/Http/Middleware/EnsureWebhookSignature.php |
| Репутация/антифрод-сигналы | freelance/project/src/app/Domains/Reputation/ |
| 2FA/идентификация | freelance/project/src/app/Domains/Identity/ |
| Склад: остатки, резервы, поставки | masha/src/app/Domain/{Stock,Inventory,Reservations,Supply}/ |
| Импорт каталога, Wildberries-обмен | masha/src/app/Domain/{Import,Wb}/ · universal (Import/*) |
| CDN-инвалидация, кеш-сервис, аудит | catalog/src/app/Services/ (Cdn/, CdnPurgeService.php, CacheService.php, AuditLogger.php, Etl/) — ⚠️ проект ещё не перенесён на этот сервер |
| PDF/опросы/wizard | referendum/app/ (Services, Legislation) |
Ядро (cms/core) — нужно любому сайту
| Подсистема | Донор | Зрелость | Что даёт |
|---|---|---|---|
| Движок страниц + блоки | universal (app/Cms/*), gulaev-dev | ★★★ | Page + PageBlock + BlockRegistry, drag&drop-сборка |
| BlockRegistry (открытый) | universal (переделать из жёсткого) | ★★ | реестр типов блоков — точка расширения |
| Настройки | universal, gulaev-dev | ★★★ | setting('group.key') из БД + Filament-страница |
| Медиатека | все проекты (spatie/medialibrary) | ★★★ | загрузка/ресайз, пресеты конверсий |
| SEO (мета/шаблоны/sitemap) | gulaev-dev, er | ★★★ | резолвер мета, sitemap, robots, редиректы |
| Формы/заявки (Leads) | freelance (каналы), universal | ★★★ | заявка → очередь → шина нотификаций |
| Кеш-слой | catalog, universal | ★★★ | теговый page-cache + инвалидация из Filament |
| Меню | universal (полу-готово) | ★★ | header/footer data-driven, привязка к Page |
| Админ-shell | Filament + роли | ★★ | панель, роли/права, дашборд |
Модули первой очереди (портируются из universal под первый заказ)
| Модуль | Донор | Зрелость | Описание |
|---|---|---|---|
| Каталог (товары/услуги) | universal (товары), catalog (гео) | ★★★ | категории, карточки, фильтры, поиск — highload-уровень, фаза 2; для лёгкой корп-витрины без корзины см. cms/catalog-showcase в «Крупных модулях» ниже |
| Гео/мультигород + склонения | er (HasDeclensions), gulaev-dev | ★★★ | города, регионы, падежи, BelongsToCity, ResolveCity middleware |
| SEO-движок (расширенный) | gulaev-dev, er | ★★★ | auto-linking, hreflang, аудит, orphan-детект, health-check |
| Блог/статьи (пресет типа контента, ревизия ТЗ предстоит — engine §16) | gulaev-dev, universal | ★★★ | посты, рубрики, теги, блочный контент |
| AI-контент | universal/artel (ClaudeArticleGenerator) | ★★ | регион-SEO-тексты, статьи, alt-тексты — в очереди, идемпотентно; ТЗ создано 15.07.2026 (cms/ai-content) — приоритет P2, реализация отложена (проектируется, внедрение позже) |
| Калькуляторы (обобщённый) | universal (смета), gulaev-dev, referendum | ★★ | конструктор калькуляторов из секций/полей |
| Уведомления (multi-channel) | freelance (BaseNotification), notal | ★★★ | email/telegram/push, resolver каналов, preferences |
| Sitemap/кеш-прогрев | er, catalog, notal | ★★★ | несколько xml, HTML-версия, пинг поисковикам |
Модули по мере заказов
| Модуль | Донор | Зрелость | Описание |
|---|---|---|---|
| Поиск (Scout+Meilisearch/ES) | catalog (intent), freelance | ★★★ | полнотекстовый поиск, определение намерения |
| Платежи/биллинг | notal (YooKassa+эскроу), er (Cashier/крипто) | ★★★ | приём платежей, эскроу, споры, тарифы, PlanGate |
| Отзывы + антифрод (отзывы — пресет типа контента, ревизия ТЗ предстоит — engine §16; антифрод остаётся модулем) | catalog, er | ★★★ | модерация, агрегат рейтинга, антифрод |
| FAQ (кандидат в пресет типа контента, модуль уже реализован в коде) | несколько | ★★ | вопрос-ответ, группировка, Schema.org FAQPage |
| Галереи (пресет типа контента, ревизия ТЗ предстоит — engine §16) | artel-23ru, universal | ★★ | альбомы изображений, лайтбокс; см. также «Портфолио/кейсы» ниже |
| Баннеры/слайдеры (пресет типа контента, ревизия ТЗ предстоит — engine §16; порог переиспользования — модулем становится только при повторном использовании слайда) | несколько | ★★ | ротация промо-слайдов/баннеров |
| Реферальная программа | notal | ★★ | коды, бонусы, балансовые транзакции |
| Промокоды/сертификаты | notal | ★★ | промокоды, подарочные сертификаты |
| 2FA / безопасность | er, freelance (google2fa) | ★★ | двухфакторка, QR |
| Роли/права (расширенные) | freelance, referendum (spatie) | ★★ | RBAC, staff-роли |
| Аудит/журнал действий | freelance, referendum | ★★ | activity log, audit log |
| PDF-документы | referendum (dompdf) | ★★ | генерация счетов/договоров/справок |
| Опросы/голосования | referendum | ★★ | опросы, голоса |
| Wizard/многошаговые формы | referendum | ★★ | сессия визарда, сложные анкеты |
| Склад/инвентарь (e-commerce) | masha | ★★★ | остатки, движения, страховой запас |
| Глоссарий/справочник | 3 проекта (Dictionary) | ★★ | термины, SEO-полезно |
| Импорт каталога (от донора) | universal (Import/*) | ★★ | импорт товаров из внешних источников |
| Прайс-экспорт (XLSX) | universal | ★★ | выгрузка прайс-листа |
| CDN-инвалидация | catalog (Bunny/CF драйверы) | ★★★ | purge при изменении контента |
| Magic-login (passwordless) | notal | ★★ | вход по ссылке |
Крупные модули (из расширенных требований)
Проявились при проработке SEO-гибкости, интеграций, кабинетов и услуг. Часть с донорами, часть — новая разработка. См. каталог подсистем, SEO, интеграции, кабинеты.
| Модуль | Донор | Зрелость | Описание |
|---|---|---|---|
| Умный SEO-фильтр | er (Domain/Seo/*) | ★★★ | посадочные из комбинаций фильтров, ЧПУ, min_results, каноникал, orphan-прополка |
| Мультигород/региональность | gulaev-dev (city_overrides), er | ★★★ | город по гео, полевые оверрайды регион→город, склонения, региональные цены/данные |
| SEO-движок (аудит+краулер) | gulaev-dev | ★★★ | краулер, 18+ проверок, дубли/orphan-детект, LLM-генерация мета, Вебмастер/IndexNow |
| Услуги (иерархия) | artel-23ru (Direction→Category→Service) | ★★★ | 3-уровневая иерархия услуг, цены с типом/единицей. См. разбор |
| SEO услуг (generic-движок) | artel-23ru (SeoService, HasDeclensions) | ★★★ | падежи, шаблоны-переменные, кросс-продукт ЧПУ, двойная Schema.org — главный переносимый актив |
| Кросс-оси услуг | artel-23ru (Location/Brand/ObjectType) | ★★ | район × бренд × тип объекта, комбинаторные посадочные |
| Калькулятор услуг/смет | artel-23ru, universal (Estimate*) | ★★ | сметы, работы, материалы, 3 tier цен; конструктор калькуляторов |
| Портфолио/кейсы | artel-23ru (CaseStudy), universal | ★★ | кейсы работ, привязка к услугам, галереи |
| GraphQL API (модуль поверх REST-ядра) | — (новое) | ★ | Lighthouse: гибкие выборки для мобильных/партнёров; REST-слой, версии и OpenAPI — в ядре (API-контракт) |
| Клиентский кабинет B2C | несколько | ★★ | профиль, заказы, бонусы, обращения (Inertia+React) |
| Клиентский кабинет B2B | — (новое) | ★ | юрлица, сотрудники, договоры, кредит-лимит, персональные цены |
| Мультивендор-маркетплейс | notal (эскроу) | ★★ | продавцы, витрины, комиссии, выплаты, рейтинги, сплит-заказы |
| UGC-публикации + модерация | catalog, er (антифрод) | ★★ | публикации пользователей, премодерация, репутация, жалобы |
| Мобильный API + push | (push-server) | ★★ | BFF-эндпоинты, FCM/APNs/RuStore, токен-авторизация, deep links |
| Шина интеграций | — (новое) | ★ | единый слой коннекторов: креды, ретраи, логи, очередь |
| Платёжные шлюзы РФ | notal | ★★★ | ЮKassa/Тинькофф/Робокасса/СБП через абстрактный слой |
| Доставка РФ | — (новое) | ★ | СДЭК/Почта/Boxberry через абстрактный слой, ПВЗ |
| 1С-обмен (CommerceML) | — (новое) | ★ | выгрузка каталога, загрузка заказов |
| Корзина + заказы (магазин) | masha | ★★ | корзина, оформление, статусы — только для магазинов |
Витрина товаров без корзины (cms/catalog-showcase) | universal | ★★ | лёгкая корп-витрина товаров/услуг без корзины/склада/торговых предложений; suggests поиск, related-content, мультигород, галереи; НЕ commerce-* (см. commerce-catalog выше — фаза 2); приоритет P1 |
Библиотека секций/паттернов (cms/section-patterns) | studio-core (UX-референс, без кода) | ★ | готовые наборы блоков (Gutenberg-style) поверх BlockRegistry, вставка одной кнопкой; suggests лендинги; приоритет P0 |
Конструктор форм (cms/form-builder) | — | ★ | пресеты форм + конструктор кастом-полей поверх ядровых cms_forms/LeadService (готового переносимого конструктора у доноров нет — формализует ручную практику); suggests шину уведомлений, капча-интеграции, мультигород; приоритет P1 |
Инъекция кода в head/body (cms/head-scripts) | — | ★ | CSP-гард для доверенных вставок стороннего кода (верификация, чаты, кастомные скрипты) через швы layout.head/layout.body_end; suggests мультигород, аудит; приоритет P1 |
Донор-проекты (сводка)
| Проект | Специализация как донора |
|---|---|
| universal | блочный движок (прародитель ядра), каталог товаров, калькулятор сметы, импорт, Contact (лид без магазина) · с июня 2026 — обобщённый порт всего artel-стека услуг/SEO (см. врезку выше) |
| gulaev-dev | самый зрелый SEO (auto-linking, hreflang, аудит), гео, city_overrides, DDD-структура |
| er (RelaxMap) | умный SEO-фильтр целиком, тестовое покрытие, SEO health-check, склонения, биллинг Cashier |
| artel-23ru | эталон SEO-услуг: 3-уровневая иерархия × 4 SEO-оси, падежи HasDeclensions, двойная Schema.org, промышленные 301. См. разбор. Первоисточник стека — свежие обобщённые версии его сервисов теперь в universal |
| catalog | поиск с intent, отзывы+антифрод, CDN, лиды франчайзинга |
| notal | платежи+эскроу+споры, уведомления, рефералка, AI-конфиг моделей |
| freelance | архитектура уведомлений, поиск Meilisearch, роли, аудит, 2FA |
| referendum | PDF, QR, опросы, wizard, мультиязычность (translatable) |
| masha | склад/инвентарь, Telegram-нотификации |
Что предстоит решить (TBD)
- Границы модулей: где заканчивается каталог и начинается e-commerce; отдельный ли модуль «биллинг» или часть платежей.
- Приоритет: какой заказ станет первым потребителем — от него зависит очередь портирования.
- Обобщение калькуляторов: паттерн повторяется в 3 проектах с разной предметной областью — вынести в конфигурируемый «конструктор калькуляторов».
- Обобщение глоссария: Dictionary/GlossaryTerm в 3 проектах — унифицировать.
- Унификация антифрода: два независимых решения (catalog, er) — объединить или оставить.