/
Dmitry-F
/
cbt_tool
Обзор
Документация
Войти
/
Dmitry-F
/
cbt_tool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
python-ml-service
bin/audio_audit
165 строк
7 KB
Dmitriy-Filatov
🧹 ФИНАЛЬНАЯ СТЕРИЛИЗАЦИЯ ИНФРАСТРУКТУРЫ
17 мар 2026, 10:59
17 мар 2026, 10:59
d3fec0b
Код
Авторство
О чём код?
#!/bin/bash echo "=========================================" echo "🔊 АУДИТ ГОТОВНОСТИ К МИКРОФОНУ (v1.0)" echo "=========================================" echo "" # Создаём временную папку REPORT_DIR="/tmp/cbt_audio_$(date +%s)" mkdir -p "$REPORT_DIR" REPORT_FILE="$REPORT_DIR/audio_audit.txt" # ========================================= # 1. ПРОВЕРКА ФОРМЫ СМЭР # ========================================= echo "📁 1. ФОРМА СМЭР (_form.html.erb)" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" FORM_FILE="engines/smer_diary/app/views/smer_diary/entries/_form.html.erb" if [ -f "$FORM_FILE" ]; then echo "✅ Файл формы существует" >> "$REPORT_FILE" # Проверка наличия data-controller="audio-recorder" if grep -q "data-controller=\"audio-recorder\"" "$FORM_FILE"; then echo "✅ Stimulus-контроллер audio-recorder подключен" >> "$REPORT_FILE" else echo "❌ ОТСУТСТВУЕТ data-controller=\"audio-recorder\"" >> "$REPORT_FILE" fi # Проверка поля event с audio_recorder_target if grep -q "audio_recorder_target=\"input\"" "$FORM_FILE"; then echo "✅ Поле 'event' связано с audio-recorder" >> "$REPORT_FILE" else echo "❌ НЕТ связи поля с audio_recorder_target" >> "$REPORT_FILE" fi # Проверка кнопки микрофона if grep -q "data-action=\".*audio-recorder#start.*audio-recorder#stop\"" "$FORM_FILE"; then echo "✅ Кнопка микрофона с действиями start/stop есть" >> "$REPORT_FILE" else echo "❌ НЕТ кнопки микрофона с правильными действиями" >> "$REPORT_FILE" fi # Проверка иконки if grep -q "data-audio-recorder-target=\"icon\"" "$FORM_FILE"; then echo "✅ Иконка микрофона с target=\"icon\" есть" >> "$REPORT_FILE" else echo "❌ НЕТ иконки с target=\"icon\"" >> "$REPORT_FILE" fi else echo "❌ ФАЙЛ ФОРМЫ НЕ НАЙДЕН" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 2. ПРОВЕРКА STIMULUS-КОНТРОЛЛЕРА # ========================================= echo "📁 2. STIMULUS-КОНТРОЛЛЕР (audio_recorder_controller.js)" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" CONTROLLER_FILE="app/javascript/controllers/audio_recorder_controller.js" if [ -f "$CONTROLLER_FILE" ]; then echo "✅ Контроллер существует" >> "$REPORT_FILE" # Проверка импорта if grep -q "import { Controller } from \"@hotwired/stimulus\"" "$CONTROLLER_FILE"; then echo "✅ Импорт Stimulus есть" >> "$REPORT_FILE" else echo "❌ НЕТ импорта Stimulus" >> "$REPORT_FILE" fi # Проверка SpeechRecognition API if grep -q "SpeechRecognition.*webkitSpeechRecognition" "$CONTROLLER_FILE"; then echo "✅ Web Speech API обнаружен (распознавание речи)" >> "$REPORT_FILE" else echo "❌ НЕТ поддержки Web Speech API" >> "$REPORT_FILE" fi # Проверка start/stop методов if grep -q "start.*this.recognition.start" "$CONTROLLER_FILE"; then echo "✅ Метод start() есть" >> "$REPORT_FILE" else echo "❌ НЕТ метода start()" >> "$REPORT_FILE" fi if grep -q "stop.*this.recognition.stop" "$CONTROLLER_FILE"; then echo "✅ Метод stop() есть" >> "$REPORT_FILE" else echo "❌ НЕТ метода stop()" >> "$REPORT_FILE" fi # Проверка пульсации if grep -q "animate-pulse\|text-red-500" "$CONTROLLER_FILE"; then echo "✅ Визуальная индикация записи (пульсация) есть" >> "$REPORT_FILE" else echo "⚠️ НЕТ визуальной индикации (не критично)" >> "$REPORT_FILE" fi else echo "❌ КОНТРОЛЛЕР НЕ НАЙДЕН" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 3. ПРОВЕРКА ГОТОВНОСТИ К ЗАГРУЗКЕ АУДИОФАЙЛОВ # ========================================= echo "📁 3. ПОДДЕРЖКА ЗАГРУЗКИ АУДИОФАЙЛОВ" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" # Проверка ActiveStorage (для хранения файлов) if grep -q "active_storage" "config/routes.rb" 2>/dev/null; then echo "✅ ActiveStorage настроен (можно хранить файлы)" >> "$REPORT_FILE" else echo "⚠️ ActiveStorage может не быть настроен (нужно для файлов)" >> "$REPORT_FILE" fi # Проверка модели на наличие attachment if grep -q "has_one_attached\|has_many_attached" "engines/smer_diary/app/models/smer_diary/diary_entry.rb" 2>/dev/null; then echo "✅ DiaryEntry поддерживает вложения" >> "$REPORT_FILE" else echo "⚠️ DiaryEntry НЕ поддерживает вложения (добавь has_one_attached :audio)" >> "$REPORT_FILE" fi # Проверка наличия поля для аудио в форме if grep -q "file_field.*audio" "$FORM_FILE" 2>/dev/null; then echo "✅ В форме есть поле для загрузки аудиофайла" >> "$REPORT_FILE" else echo "⚠️ НЕТ поля для загрузки аудиофайлов (добавить позже)" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 4. РЕКОМЕНДАЦИИ # ========================================= echo "💡 РЕКОМЕНДАЦИИ:" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" echo "🔹 Для записи через браузер:" >> "$REPORT_FILE" echo " ✅ Уже есть Web Speech API" >> "$REPORT_FILE" echo " ✅ Контроллер audio_recorder_controller.js готов" >> "$REPORT_FILE" echo "" >> "$REPORT_FILE" echo "🔹 Для загрузки аудиофайлов:" >> "$REPORT_FILE" echo " 1. Добавь в модель DiaryEntry: has_one_attached :audio" >> "$REPORT_FILE" echo " 2. Добавь в форму: <%= f.file_field :audio, accept: 'audio/*' %>" >> "$REPORT_FILE" echo " 3. Разреши параметр в контроллере: :audio" >> "$REPORT_FILE" echo " 4. Создай миграцию для ActiveStorage (если ещё нет)" >> "$REPORT_FILE" echo "" >> "$REPORT_FILE" echo "🔹 Для воспроизведения аудио:" >> "$REPORT_FILE" echo " Добавь в show.html.erb: <% if @entry.audio.attached? %>" >> "$REPORT_FILE" echo " <%= audio_tag @entry.audio, controls: true %>" >> "$REPORT_FILE" echo " <% end %>" >> "$REPORT_FILE" # ========================================= # 5. КОПИРОВАНИЕ В БУФЕР # ========================================= cat "$REPORT_FILE" | pbcopy echo "" echo "✅ ГОТОВО! Отчёт скопирован в буфер обмена (Cmd+V)" echo "📊 Краткий итог:" grep -E "✅|❌|⚠️" "$REPORT_FILE" | head -20 echo "" echo "🔍 Для деталей вставь содержимое буфера сюда." echo ""