ЮрКлик (YurClick) — LegalTech-портал
LegalTech-платформа (онлайн юридические услуги) · LegalTech / юридические услуги
- PHP
- WordPress
- ACF
- SCF
- CMB2
- MySQL
- JavaScript
- jQuery
- CSS/SCSS
- Swiper
- Fancybox
- IMask
- Webpack
- Composer
- WP-CLI
- PHPStan
- Bitrix24
- Nginx
- VPS
- REST API
- 75 находок (12 крит. / 41 средн. / 22 низк.), оценка 6.5/10
- ~466 находок хардкода, из них 145 «чистого» хардкода
- 106 текстов + 29 ссылок/кнопок выведены в админку; 24 задачи remediation выполнены
- удалено ~640 легаси options_* + 560 легаси-мета CPT + ~147 сиротских acf-field; 332→344 поля, 12→13 JSON-групп
- 31 секция, 6 попапов, 4 компонента, 5 CPT
- 7 коммитов за 18.02.2026
Контекст и задача
ЮрКлик — корпоративный LegalTech-портал (каталог юридических услуг, блог, формы заявок, страницы команды и партнёрства) на кастомной теме WordPress (PHP 8.0+, WP 6.0+, Gutenberg полностью отключён). Согласно refactoring-prompt.md, тема прошла первый этап адаптации вёрстки на WordPress, который был оценён как некачественный: много захардкоженного контента, плоская структура полей без repeater-ов, неполный контроль контента через админ-панель, пропущенные UX-элементы; заказчик прислал детальную обратную связь. Задача — привести проект в управляемое, поддерживаемое и развёртываемое состояние. Кто выполнял самый первый этап адаптации — по артефактам однозначно не определяется.
Что я сделал
Документированный и прослеживаемый вклад — это работа второго этапа (не «с нуля»):
- Технический аудит в три уровня с отдельными отчётами на русском: общий код-аудит (
AUDIT-REPORT.md, 75 находок, оценка 6.5/10), аудит возможностей админ-панели (ADMIN-AUDIT-REPORT.md), глубокий аудит SCF/ACF-полей с тройной сверкой PHP↔JSON↔БД (FIELD-AUDIT-REPORT.md) и отдельный отчёт по хардкоду (HARDCODE-REPORT.md, ~466 находок). - Рефакторинг под полную управляемость из админки (commit «Complete admin audit remediation: all 24 tasks done»): 106 текстовых строк и 29 ссылок/кнопок выведены в SCF-поля; реализован порядок секций через Flexible Content и переключатели видимости
{prefix}_{slug}_visible(yurclick_render_sections); удаление захардкоженных fallback-ов из шаблонов с восстановлением fallback-ов в попап-формах (HEAD-коммит). - Миграция системы полей ACF → SCF (Secure Custom Fields как drop-in без платной лицензии), перенос настроек на SCF Options Pages, WP-CLI-миграции (плоские поля → repeater; post_meta → wp_options) и масштабная очистка БД от легаси (~640
options_*, ~560 мета CPT, ~147 сиротских записей). - Качество кода: настройка и прогон PHPCS+WPCS и PHPStan (level 5), правки под стандарты (commit «WPCS fixes»); как security-находка аудита — устранение захардкоженного CRM API-URL с токеном.
- Функционал блога: замена постраничной пагинации на AJAX-кнопку «Загрузить ещё» с фильтрацией по категориям и тегам (
PLAN-blog-pagination.md). - Деплой: набор bash-скриптов развёртывания на VPS (подготовка, настройка сервера, деплой, обновление темы, синхронизация медиа).
- Редизайн-итерация: вторая тема
new-yurclickкак эволюция старой (обновлённыеfunctions.php,helpers.php,custom-post-types.php,menus.php, секции услуг, все группы полейacf-json, CSS/JS).
Решение и подход
Архитектура — «section-based page builder»: каждая страница собирается из переиспользуемых template-part-секций (31 секция, 6 попапов, 4 карточных компонента) через get_template_part(). Ключевые инженерные решения зафиксированы в TECHNICAL_HANDOVER_YURCLICK_FULL.md и CLAUDE.md:
- Полное отключение Gutenberg ради жёсткого контроля вёрстки контент-менеджером.
- Эволюция управления контентом: исходно ACF + CMB2 (CMB2 — repeater для FAQ без ACF Pro) и хранение глобальных настроек на скрытой странице
site-settings; в ходе рефакторинга — переход на SCF, SCF Options Pages и Flexible Content-порядок секций с переключателями видимости. - 5 CPT (
service,team_member,case,callback_request,partnership_request); лиды сохраняются в CPT и дублируются на e-mail (wp_mail) — защита от потери заявок при сбое почты. - Безопасность: все AJAX-обработчики через
check_ajax_referer('yurclick_nonce'), санитизация ввода и экранирование вывода; интеграция с Bitrix24 (плагиныflamix-bitrix24-and-contact-forms-7-integrations,bitrix_integration). - Кастомный BEM-Walker меню, inline SVG-спрайт, предзагрузка шрифтов, WebP с fallback.
Результат
Подтверждённые артефактами эффекты (см. metrics): три аудиторских отчёта с количественными сводками; устранены все 24 задачи admin-audit remediation; БД очищена от ~1300+ легаси-записей; код приведён к WPCS/PHPStan level 5; блог переведён на AJAX-подгрузку; подготовлена автоматизация деплоя. Бизнес-метрики (трафик, конверсия, нагрузка) и факт/дата продакшн-запуска по артефактам не зафиксированы (уточнить) — домен yurclick.ru сконфигурирован для деплоя, но live-доступность при проверке не подтверждена.
Стек и обоснование
WordPress + кастомная тема (PHP 8.0+/WP 6.0+) — требование заказчика к самостоятельному управлению контентом. SCF вместо ACF Pro — repeater и Pro-возможности без платной лицензии при сохранении API (get_field()) и JSON-синхронизации. CMB2 — исторический repeater для FAQ (в редизайне выводится из эксплуатации). Frontend: jQuery + вендоренные Swiper 11, Fancybox 5, IMask 7.6.1; app.js — Webpack-бандл (исходники в репозитории отсутствуют). Качество: Composer (PHPCS 3.13 + WPCS 3.3, PHPCompatibility, PHPStan 2 + phpstan-wordpress, acf-pro-stubs), WP-CLI, Intelephense LSP. Деплой: Ubuntu 22.04, Nginx, PHP 8.2, MySQL, Certbot. Локальная среда — Local by Flywheel (yurclick.local).
Роль ИИ в проекте
Проект — выраженный пример AI-augmented разработки с несколькими инструментами:
- Claude Code —
CLAUDE.md(правила работы по репозиторию: архитектура, ограничения, команды). - OpenCode + oh-my-opencode — мультиагентная конфигурация (
.opencode/opencode.json,.opencode/oh-my-opencode.json) с именованными субагентами (sisyphus, oracle, prometheus, metis, momus, hephaestus, atlas, explore, librarian, plan, document-writer и др.) на моделях Claude Opus 4.6 / Sonnet 4.6, с LSP Intelephense и стабами WordPress. - AGENTS.md — гайдлайны для ИИ-агентов (стиль PHP/CSS/JS, WPCS, ACF/SCF-паттерны, hard-constraints).
- Промпт-инжиниринг / doc-driven dev — самодостаточные промпты под конкретные задачи:
audit-prompt.md,admin-audit-prompt.md,field-audit-prompt.md,refactoring-prompt.md. Прослеживается цикл research/audit → отчёт → remediation (аудит-отчёты → выполнение 24 задач → WPCS-фиксы → снятие хардкода). - dev-browser skill — QA-скриншоты адаптива/меню/хлебных крошек (артефакты в корне источника).
Инженерные вызовы
- Двойная/мигрирующая система полей (ACF + CMB2 + закомментированный PHP-реестр
acf-fields.php+ JSON-sync): риск дублирования и конфликтов ключей — решено переходом на SCF JSON-sync и удалением мёртвого кода/легаси через WP-CLI с предварительным бэкапом (backup-before-phase3.sql). - Тотальный хардкод текстов/URL (~466 находок): систематизирован по типам (чистый хардкод / SCF-фолбэк / i18n / админка) и вынесен в управляемые SCF-поля без потери дефолтов в формах.
- Отсутствие build-системы и исходников JS (
app.js— бандл безsrc/): правки вносились в скомпилированные файлы; добавление сборки запрещено без явного запроса (hard-constraint). - Поддержка задачи новым разработчиком: подготовлены два подробных technical-handover-документа и
CLAUDE.md/AGENTS.md. - Эволюция старая→новая тема: ведение двух кодовых баз (
yurclickпод git с аудит-отчётами иnew-yurclick— более новая редизайн-итерация вне git).
Услуги в проекте
- аудит
- доработка legacy
- рефакторинг
- миграция
- разработка
- редизайн
- деплой