/
Dmitry-F
/
cbt_tool
Обзор
Документация
Войти
/
Dmitry-F
/
cbt_tool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
python-ml-service
bin/link_audit
200 строк
8 KB
Dmitriy-Filatov
🧹 ФАЗА 2: Финальная синхронизация перед починкой сессий
13 мар 2026, 18:26
13 мар 2026, 18:26
78e115d
Код
Авторство
О чём код?
#!/bin/bash echo "=========================================" echo "🔗 АУДИТ ССЫЛОК И КНОПОК ДАШБОРДА" echo "=========================================" echo "" # Создаём временную папку REPORT_DIR="/tmp/cbt_links_$(date +%s)" mkdir -p "$REPORT_DIR" # ========================================= # 1. Сбор всех ссылок из всех файлов # ========================================= echo "📁 1. СБОР ССЫЛОК ИЗ ФАЙЛОВ:" > "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" FILES=( "app/views/clients/show.html.erb" "engines/smer_diary/app/views/smer_diary/entries/index.html.erb" "engines/smer_diary/app/views/smer_diary/entries/show.html.erb" "engines/smer_diary/app/views/smer_diary/entries/edit.html.erb" "engines/smer_diary/app/views/smer_diary/entries/new.html.erb" "app/views/layouts/application.html.erb" ) for file in "${FILES[@]}"; do if [ -f "$file" ]; then echo "=== $file ===" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" # Ищем все link_to и button_to echo "🔗 ССЫЛКИ (link_to):" >> "$REPORT_DIR/links_report.txt" grep -n "link_to" "$file" | sed 's/^/ /' >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" echo "🖱️ КНОПКИ (button_to, submit):" >> "$REPORT_DIR/links_report.txt" grep -n "button_to\|submit" "$file" | sed 's/^/ /' >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" echo "🎯 TURBO FRAME АТРИБУТЫ:" >> "$REPORT_DIR/links_report.txt" grep -n "data: { turbo_frame" "$file" | sed 's/^/ /' >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" echo "---" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" fi done # ========================================= # 2. Проверка каждого типа ссылок # ========================================= echo "" >> "$REPORT_DIR/links_report.txt" echo "🔍 2. ПРОВЕРКА КОРРЕКТНОСТИ:" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" # Функция проверки ссылки check_link() { local description="$1" local file="$2" local pattern="$3" local expected_frame="$4" echo "🔹 $description" >> "$REPORT_DIR/links_report.txt" if grep -q "$pattern" "$file" 2>/dev/null; then echo " ✅ Ссылка существует" >> "$REPORT_DIR/links_report.txt" # Проверка наличия turbo_frame if grep -q "turbo_frame: \"$expected_frame\"" "$file" 2>/dev/null; then echo " ✅ Правильный turbo_frame: $expected_frame" >> "$REPORT_DIR/links_report.txt" else echo " ❌ НЕПРАВИЛЬНЫЙ turbo_frame (должен быть $expected_frame)" >> "$REPORT_DIR/links_report.txt" fi else echo " ❌ Ссылка НЕ НАЙДЕНА" >> "$REPORT_DIR/links_report.txt" fi echo "" >> "$REPORT_DIR/links_report.txt" } # Проверка всех ключевых ссылок check_link "Кнопка 'Все записи' (в дашборде)" \ "app/views/clients/show.html.erb" \ "smer_diary_client_entries_path" \ "active_module" check_link "Кнопка 'Назад к клиенту' (в списке всех записей)" \ "engines/smer_diary/app/views/smer_diary/entries/index.html.erb" \ "main_app.client_path" \ "active_module" check_link "Кнопка 'Новая запись' (в списке всех записей)" \ "engines/smer_diary/app/views/smer_diary/entries/index.html.erb" \ "new_entry_path" \ "active_module" check_link "Кнопка 'Редактировать' (в детальном просмотре)" \ "engines/smer_diary/app/views/smer_diary/entries/show.html.erb" \ "edit_smer_diary_client_entry_path" \ "active_module" check_link "Кнопка 'Удалить' (в детальном просмотре)" \ "engines/smer_diary/app/views/smer_diary/entries/show.html.erb" \ "button_to.*delete" \ "" check_link "Кнопка 'Новая сессия' (в левой панели)" \ "app/views/clients/show.html.erb" \ "new_client_session_path" \ "active_module" check_link "Кнопка 'Все сессии' (в дашборде)" \ "app/views/clients/show.html.erb" \ "client_sessions_path" \ "active_module" check_link "Кнопка 'Открыть' (в карточке сессии)" \ "app/views/clients/show.html.erb" \ "client_session_path" \ "active_module" # ========================================= # 3. Проверка контроллеров на редиректы # ========================================= echo "" >> "$REPORT_DIR/links_report.txt" echo "🔄 3. ПРОВЕРКА РЕДИРЕКТОВ В КОНТРОЛЛЕРАХ:" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" # entries_controller echo "📄 engines/smer_diary/app/controllers/smer_diary/entries_controller.rb" >> "$REPORT_DIR/links_report.txt" if grep -q "redirect_to main_app.client_path" "engines/smer_diary/app/controllers/smer_diary/entries_controller.rb" 2>/dev/null; then echo " ✅ Редиректы на main_app.client_path" >> "$REPORT_DIR/links_report.txt" else echo " ❌ ОШИБКА: редиректы не на main_app" >> "$REPORT_DIR/links_report.txt" fi if grep -q "format.turbo_stream" "engines/smer_diary/app/controllers/smer_diary/entries_controller.rb" 2>/dev/null; then echo " ✅ Есть respond_to для turbo_stream" >> "$REPORT_DIR/links_report.txt" else echo " ❌ НЕТ respond_to для turbo_stream" >> "$REPORT_DIR/links_report.txt" fi # sessions_controller echo "" >> "$REPORT_DIR/links_report.txt" echo "📄 app/controllers/sessions_controller.rb" >> "$REPORT_DIR/links_report.txt" if [ -f "app/controllers/sessions_controller.rb" ]; then if grep -q "redirect_to client_path" "app/controllers/sessions_controller.rb" 2>/dev/null; then echo " ✅ Редиректы на client_path" >> "$REPORT_DIR/links_report.txt" fi fi # ========================================= # 4. Проверка Turbo Frame в layout # ========================================= echo "" >> "$REPORT_DIR/links_report.txt" echo "📌 4. ПРОВЕРКА TURBO FRAME В LAYOUT:" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" if grep -q "turbo_frame_tag \"active_module\"" app/views/clients/show.html.erb; then echo " ✅ active_module существует в дашборде" >> "$REPORT_DIR/links_report.txt" else echo " ❌ active_module ОТСУТСТВУЕТ в дашборде" >> "$REPORT_DIR/links_report.txt" fi # ========================================= # 5. Генерация рекомендаций # ========================================= echo "" >> "$REPORT_DIR/links_report.txt" echo "💡 5. РЕКОМЕНДАЦИИ:" >> "$REPORT_DIR/links_report.txt" echo "" >> "$REPORT_DIR/links_report.txt" cat << 'REC_EOF' >> "$REPORT_DIR/links_report.txt" ✅ Если все проверки зелёные — навигация работает идеально. ⚠️ Если есть красные: - Убедись, что все ссылки, открывающиеся в центре, имеют data: { turbo_frame: "active_module" } - Проверь, что в контроллерах после создания/обновления редирект идёт на main_app.client_path - Убедись, что у кнопок удаления есть data: { turbo_confirm: "..." } 🔄 Для проверки в браузере: 1. Открой дашборд, нажимай на каждую кнопку 2. В инспекторе (F12) → Network смотри, чтобы запросы были turbo_stream 3. Убедись, что URL в адресной строке не меняется (кроме глобального поиска) REC_EOF # ========================================= # 6. Копирование в буфер # ========================================= cat "$REPORT_DIR/links_report.txt" | pbcopy echo "" echo "✅ ГОТОВО! В буфере обмена (Cmd+V):" echo " - Все ссылки из всех файлов" echo " - Проверка их корректности" echo " - Статус редиректов в контроллерах" echo " - Рекомендации" echo "" echo "📊 КРАТКИЙ ИТОГ:" grep -E "✅|❌|⚠️" "$REPORT_DIR/links_report.txt" | head -20 echo ""