Задача: Миграция bizneshelper.ru с Ruby на haih-cms

Миграция bizneshelper.ru с Ruby на haih-cms

05.09.2026bizneshelper.ru

Главная задача проекта: перенос действующего сайта на haih-cms.

Миграция bizneshelper.ru с Ruby на haih-cms

Главная задача проекта.

Цель — перенести публичный сайт с существующей Ruby-реализации на haih-cms с сохранением значимого контента, основных пользовательских сценариев, доступности материалов и поисковой совместимости.

Все дочерние задачи должны содержать только публично допустимые формулировки и не включать внутренние коммерческие данные, доступы, секреты или персональные сведения.

Ворклоги

Созданы публичный коммерческий проект bizneshelper.ru и связанный публичный концепт модернизации. Главной задачей зафиксирована миграция сайта с Ruby на haih-cms. Под неё создано дерево дочерних задач по инвентаризации, архитектуре CMS, переносу контента, URL и редиректам, формам и интеграциям, SEO, аналитике, тестированию, запуску, постмиграционной проверке и дальнейшей публичной коммерческой упаковке. Во всех сущностях используются только общие публично допустимые формулировки без внутренних коммерческих данных и секретов.

Корректировка стратегии миграции

После успешного локального запуска legacy Ruby-сайта уточнён подход к проекту. Старое Rails-приложение не рассматривается как система, которую необходимо поддерживать параллельно с новой версией. Его роль — резервная копия, источник данных и эталон для сверки.

Ключевое решение: выполнить одноразовую миграцию нужных данных и публичного контента в haih-cms, после чего новая версия становится единственным актуальным production-сайтом.

Полная обратная совместимость со всей исторической маршрутизацией не требуется. В поисковом индексе находится ограниченное число страниц — порядка 85, поэтому SEO-преемственность будет обеспечиваться точечно для реально значимых URL.

В связи с этим пересмотрены задачи по инвентаризации, модели данных, URL и редиректам, формам, SEO, тестированию и запуску. Добавлена отдельная задача по воспроизводимому импорту данных из legacy MySQL в haih-cms.

Наблюдение по текущему legacy-сайту: Mixed Content

На публичной HTTPS-странице обнаружена загрузка внешнего JavaScript-ресурса по небезопасному HTTP:

http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js

Современный браузер блокирует такой запрос как Mixed Content. В результате часть клиентской логики, зависящая от этого скрипта, потенциально может не работать.

Значение для проекта

Это наглядный пример того, почему даже работающий сайт нельзя считать системой, которую можно однажды запустить и затем годами не обслуживать. Внешние зависимости, браузерные требования, TLS-политики, CDN, библиотеки и стандарты безопасности со временем меняются, даже если код самого сайта остаётся неизменным.

При новой реализации на haih-cms стоит закладывать регулярную техническую проверку публичного сайта: отсутствие Mixed Content, состояние внешних зависимостей, ошибки браузера, актуальность сертификатов, корректность форм, sitemap и других критических компонентов.

Практический вывод

Legacy-сайт использовать только как источник данных и reference. В новой версии избегать жёстко зашитых небезопасных внешних URL и по возможности минимизировать зависимость от сторонних ресурсов, которые могут со временем изменить поведение или стать недоступными.

Архитектурный поворот миграции: Concepts + AI-driven content

По итогам анализа legacy БД и практики других haih-проектов зафиксирован новый основной принцип миграции: весь полезный содержательный контент старого сайта переносится в максимально унифицированную модель Concept, а специализированные legacy-таблицы и поля не воспроизводятся на новой стороне без объективной необходимости.

Главный эффект такой модели — не только упрощение схемы. После первичного импорта контент становится пригодным для единого AI-pipeline: агент может получать исходные данные старой записи и новый Concept, а затем обновлять content, структуру, форматирование, подачу и внутренние связи через один и тот же контракт.

Это напрямую связано с более общим принципом, описанным в материале «Рост производительности специалистов требует развития технологической среды бизнеса»: ускорение работы специалистов и AI даёт реальный экономический эффект только тогда, когда сама система не создаёт лишнее архитектурное трение.

Для фиксации этого подхода создан отдельный публичный кейс: Унифицированные данные как основа AI-driven проектов — кейс VietnamGuru и BiznesHelper.

Этап: сайт фактически полностью пересобран на новой системе

Основная техническая переделка bizneshelper.ru выполнена. Новый сайт собран на haih-cms и больше не зависит от необходимости воспроизводить старую Ruby-архитектуру как рабочую систему.

При этом часть оформления внутренних страниц сознательно не восстанавливалась в полном объёме. Попытка добиться точного совпадения со старым дизайном сейчас дала бы мало практической ценности: потребовала бы дополнительного времени, закрепила бы старые визуальные решения и затем только усложнила бы разработку нового дизайна.

Текущий этап проекта — не финальная визуальная полировка, а проверка того, сможет ли сайт снова выйти в поисковую видимость и вернуть органическую посещаемость, которая сейчас фактически отсутствует. Если видимость и трафик начнут восстанавливаться, визуальную часть имеет смысл развивать уже как отдельный следующий этап на новой архитектуре.

Главный ближайший приоритет смещается на работу с контентом: перенос, нормализацию, обновление, внутреннюю перелинковку, SEO и AI-driven переработку материалов.

Важный вывод по стоимости миграции

Фактически основная переделка заняла порядка 3–4 дней, но значительная часть этого времени была потрачена не на создание новой функциональности, а на обход особенностей старой технической реализации. Legacy-сайт оказался существенно сложнее в переносе, чем должен был быть при сопоставимом объёме контента.

Основные источники лишней сложности:

  • слишком большое количество специализированных сущностей и таблиц;
  • разные модели хранения для похожих по сути видов контента;
  • отдельная логика представления для разных сущностей;
  • собственный CSS у многих типов страниц и компонентов;
  • накопленные особенности WYSIWYG/HTML, которые приходилось нормализовать при импорте;
  • высокая связанность структуры данных с конкретными старыми шаблонами.

Это практическое подтверждение принятого архитектурного решения: унификация содержательных сущностей вокруг Concept нужна не ради абстрактной аккуратности схемы, а чтобы будущие изменения не требовали снова проходить через такой объём специальной логики.

С точки зрения проекта результат важен именно этим: несмотря на плохое внутреннее состояние legacy, новая версия была собрана за несколько дней, а дальнейшее развитие теперь можно вести уже поверх значительно более простой и AI-дружелюбной среды.