/
Dmitry-F
/
cbt_tool
Обзор
Документация
Войти
/
Dmitry-F
/
cbt_tool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
python-ml-service
bin/charter_audit
177 строк
8 KB
Dmitriy-Filatov
feat: улучшен глобальный поиск — шкала релевантности, переход на страницу клиента, исправлен Gemfile
25 мар 2026, 22:42
25 мар 2026, 22:42
c8317c0
Код
Авторство
О чём код?
#!/bin/bash echo "=========================================" echo "📜 АУДИТ СОБЛЮДЕНИЯ КОНСТИТУЦИИ ПРОЕКТА" echo "=========================================" echo "" REPORT_FILE="/tmp/charter_audit.txt" # ========================================= # 1. ПРОВЕРКА СТЕКА (No-Node) # ========================================= echo "📁 1. ПРОВЕРКА СТЕКА (No-Node)" > "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if [ -f "Gemfile.lock" ]; then if grep -q "sprockets" Gemfile.lock; then echo "❌ НАРУШЕНИЕ: sprockets найден в Gemfile.lock (должен быть Propshaft)" >> "$REPORT_FILE" else echo "✅ Sprockets отсутствует — Propshaft используется" >> "$REPORT_FILE" fi if grep -q "node_modules" -r . --include="package.json" 2>/dev/null; then echo "❌ НАРУШЕНИЕ: package.json найден (проект использует Node.js)" >> "$REPORT_FILE" else echo "✅ Node.js не используется (чистый No-Node)" >> "$REPORT_FILE" fi fi echo "" >> "$REPORT_FILE" # ========================================= # 2. ПРОВЕРКА DIGEST (Хэши в development) # ========================================= echo "📁 2. ПРОВЕРКА DIGEST (Хэши в development)" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if grep -q "config.assets.digest = false" config/application.rb; then echo "✅ digest = false зафиксирован в application.rb" >> "$REPORT_FILE" else echo "❌ НАРУШЕНИЕ: digest = false не найден в application.rb" >> "$REPORT_FILE" fi DIGEST_VALUE=$(bin/rails runner "puts Rails.application.config.assets.digest" 2>/dev/null) if [ "$DIGEST_VALUE" = "false" ]; then echo "✅ digest реально равен false (текущее состояние)" >> "$REPORT_FILE" else echo "❌ НАРУШЕНИЕ: digest = true (будут хэши в путях)" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 3. ПРОВЕРКА PUBLIC/ASSETS (Стерильность) # ========================================= echo "📁 3. ПРОВЕРКА PUBLIC/ASSETS" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if [ -d "public/assets" ] && [ "$(ls -A public/assets 2>/dev/null)" ]; then echo "❌ НАРУШЕНИЕ: public/assets не пуста (есть прекомпилят)" >> "$REPORT_FILE" ls -la public/assets | head -5 | sed 's/^/ /' >> "$REPORT_FILE" else echo "✅ public/assets пуста (стерильно)" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 4. ПРОВЕРКА INDEX.JS (Явная регистрация по Конституции п.2.3) # ========================================= echo "📁 4. ПРОВЕРКА INDEX.JS (явная регистрация)" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" INDEX_JS="app/javascript/controllers/index.js" if [ -f "$INDEX_JS" ]; then # Проверка на eagerLoadControllersFrom (исключая комментарии) if grep -v "^[[:space:]]*//" "$INDEX_JS" | grep -q "eagerLoadControllersFrom"; then echo "❌ НАРУШЕНИЕ: eagerLoadControllersFrom используется (должна быть явная регистрация)" >> "$REPORT_FILE" else echo "✅ eagerLoadControllersFrom отсутствует (используется явная регистрация)" >> "$REPORT_FILE" fi # Проверка явной регистрации (требование Конституции) REG_COUNT=$(grep -c "application\.register" "$INDEX_JS") if [ "$REG_COUNT" -gt 0 ]; then echo "✅ Явная регистрация контроллеров присутствует" >> "$REPORT_FILE" echo " 📍 Зарегистрировано контроллеров: $REG_COUNT" >> "$REPORT_FILE" else echo "❌ НАРУШЕНИЕ: нет явной регистрации application.register" >> "$REPORT_FILE" fi # Проверка на импорты из текущей директории if grep -v "^[[:space:]]*//" "$INDEX_JS" | grep -q "import \"./\|from \"./"; then echo "⚠️ Найдены относительные импорты (не критично, но лучше использовать абсолютные пути)" >> "$REPORT_FILE" fi else echo "❌ НАРУШЕНИЕ: index.js не найден" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 5. ПРОВЕРКА MANIFEST.JS (Наследие Sprockets) # ========================================= echo "📁 5. ПРОВЕРКА MANIFEST.JS" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if [ -f "app/assets/config/manifest.js" ]; then echo "❌ НАРУШЕНИЕ: app/assets/config/manifest.js существует (наследие Sprockets)" >> "$REPORT_FILE" else echo "✅ manifest.js отсутствует (чисто)" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 6. ПРОВЕРКА PWA # ========================================= echo "📁 6. ПРОВЕРКА PWA" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if [ -f "app/views/pwa/manifest.json.erb" ]; then echo "✅ Динамический манифест используется" >> "$REPORT_FILE" else echo "⚠️ Динамический манифест не найден" >> "$REPORT_FILE" fi if [ -f "public/manifest.json" ]; then echo "❌ НАРУШЕНИЕ: статический public/manifest.json существует" >> "$REPORT_FILE" else echo "✅ статический манифест отсутствует" >> "$REPORT_FILE" fi echo "" >> "$REPORT_FILE" # ========================================= # 7. ПРОВЕРКА ЗАПРЕЩЁННЫХ КОМАНД # ========================================= echo "📁 7. ПРОВЕРКА ИСТОРИИ ЗАПРЕЩЁННЫХ КОМАНД" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" if [ -f ".bash_history" ] || [ -f ".zsh_history" ]; then echo "⚠️ История команд доступна, но не анализируется автоматически" >> "$REPORT_FILE" fi echo " 🔍 Вручную проверь, не было ли запусков:" >> "$REPORT_FILE" echo " bin/rails stimulus:manifest:update" >> "$REPORT_FILE" echo "" >> "$REPORT_FILE" # ========================================= # 8. ФИНАЛЬНЫЙ ВЕРДИКТ # ========================================= echo "📋 8. ФИНАЛЬНЫЙ ВЕРДИКТ" >> "$REPORT_FILE" echo "----------------------------------------" >> "$REPORT_FILE" RED_COUNT=$(grep -c "❌" "$REPORT_FILE") YELLOW_COUNT=$(grep -c "⚠️" "$REPORT_FILE") GREEN_COUNT=$(grep -c "✅" "$REPORT_FILE") echo "🔴 Нарушений Конституции: $RED_COUNT" >> "$REPORT_FILE" echo "🟡 Предупреждений: $YELLOW_COUNT" >> "$REPORT_FILE" echo "🟢 Соблюдено: $GREEN_COUNT" >> "$REPORT_FILE" echo "" >> "$REPORT_FILE" if [ "$RED_COUNT" -eq 0 ]; then echo "🎉 КОНСТИТУЦИЯ СОБЛЮДАЕТСЯ! Проект стерилен." >> "$REPORT_FILE" else echo "⚠️ ЕСТЬ НАРУШЕНИЯ. Требуется исправление." >> "$REPORT_FILE" fi cat "$REPORT_FILE" | pbcopy echo "" echo "✅ АУДИТ КОНСТИТУЦИИ ЗАВЕРШЁН. Результат в буфере обмена." echo "" grep -E "✅|❌|⚠️|🎉" "$REPORT_FILE" | head -15 echo ""