/
obuxxxov
/
CodeForge
Обзор
Документация
Войти
/
obuxxxov
/
CodeForge
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
comb
analyzer/main.py
167 строк
7 KB
ObliInSe
start
18 авг 2025, 00:31
18 авг 2025, 00:31
0671f4e
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Главный скрипт для запуска всего пайплайна анализа компетенций """ import os import sys import subprocess import time import webbrowser from pathlib import Path def run_script(script_name, description): """Запускает Python скрипт с обработкой ошибок""" print(f"\n{'='*60}") print(f"Запуск: {description}") print(f"Скрипт: {script_name}") print(f"{'='*60}") try: # Проверяем существование файла if not os.path.exists(script_name): print(f"Ошибка: Файл {script_name} не найден!") return False # Определяем Python интерпретатор из виртуального окружения python_executable = sys.executable if os.path.exists("venv/Scripts/python.exe"): python_executable = "venv/Scripts/python.exe" elif os.path.exists("venv/bin/python"): python_executable = "venv/bin/python" # Запускаем скрипт с обработкой кодировки try: # Для git_analyzer.py добавляем специальные аргументы if script_name == "git_analyzer.py": cmd = [python_executable, script_name, "--report", "report.json", "--excel", "Матрица компетенций Python.xlsx"] else: cmd = [python_executable, script_name] result = subprocess.run(cmd, capture_output=True, text=True, encoding='cp866') except UnicodeDecodeError: # Если cp866 не работает, пробуем без указания кодировки if script_name == "git_analyzer.py": cmd = [python_executable, script_name, "--report", "report.json", "--excel", "Матрица компетенций Python.xlsx"] else: cmd = [python_executable, script_name] result = subprocess.run(cmd, capture_output=True, text=True) # Выводим результат if result.stdout: print("Вывод:") print(result.stdout) if result.stderr: print("Предупреждения/ошибки:") print(result.stderr) if result.returncode == 0: print(f"{description} завершен успешно!") return True else: print(f"{description} завершился с ошибкой (код: {result.returncode})") return False except Exception as e: print(f"Ошибка при запуске {script_name}: {e}") return False def open_html_file(file_path): """Открывает HTML файл в браузере""" print(f"\n{'='*60}") print(f"Открытие HTML файла: {file_path}") print(f"{'='*60}") try: if not os.path.exists(file_path): print(f"Ошибка: Файл {file_path} не найден!") return False # Открываем в браузере webbrowser.open(f'file://{os.path.abspath(file_path)}') print(f"HTML файл открыт в браузере!") return True except Exception as e: print(f"Ошибка при открытии HTML файла: {e}") return False def check_dependencies(): """Проверяет наличие необходимых файлов и зависимостей""" print("🔍 Проверка зависимостей...") required_files = [ "git_analyzer.py", "makes_theme.py", "generate_article.py", "create_graph_matrix.py", "llm_index.html" ] missing_files = [] for file in required_files: if not os.path.exists(file): missing_files.append(file) if missing_files: print(f"Отсутствуют файлы: {missing_files}") return False print("Все необходимые файлы найдены!") return True def main(): """Главная функция""" print("Запуск пайплайна анализа компетенций") print("Порядок выполнения:") print(" 1. git_analyzer.py - Анализ Git репозитория") print(" 2. makes_theme.py - Генерация тем для изучения") print(" 3. generate_article.py - Создание обучающих статей") print(" 4. create_graph_matrix.py - Создание финального graph_matrix") print(" 5. llm_index.html - Открытие веб-интерфейса") # Проверяем зависимости if not check_dependencies(): print("Не удалось запустить пайплайн из-за отсутствующих файлов") return # Список скриптов для запуска scripts = [ ("git_analyzer.py", "Анализ Git репозитория и оценка компетенций"), ("makes_theme.py", "Генерация тем для изучения на основе проблемных областей"), ("generate_article.py", "Создание обучающих статей по темам"), ("create_graph_matrix.py", "Создание финального graph_matrix файла") ] # Запускаем скрипты по очереди success_count = 0 for script_name, description in scripts: if run_script(script_name, description): success_count += 1 else: print(f"Продолжаем выполнение пайплайна...") # Небольшая пауза между скриптами time.sleep(2) # Открываем HTML интерфейс print(f"\n{'='*60}") print(f"Результаты выполнения:") print(f" Успешно: {success_count}/{len(scripts)} скриптов") print(f"{'='*60}") if success_count > 0: print("Открываем веб-интерфейс для просмотра результатов...") open_html_file("llm_index.html") else: print("Ни один скрипт не выполнился успешно. Проверьте ошибки выше.") if __name__ == "__main__": main()