/
triv
/
GigaDocGen
Обзор
Документация
Войти
/
triv
/
GigaDocGen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
debug_config.py
180 строк
6 KB
triv
расширен дебаг и изменен подход работы с файлами
23 окт 2025, 14:53
23 окт 2025, 14:53
89fd19b
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Диагностика конфигурации Jenkins Documentation Generator Проверяет конфигурацию и выявляет возможные проблемы """ import json import sys from pathlib import Path def check_config_file(config_path: str = "config.json"): """Проверка файла конфигурации""" print(f"🔍 Проверка конфигурации: {config_path}") if not Path(config_path).exists(): print(f"❌ Файл конфигурации не найден: {config_path}") return False try: with open(config_path, 'r', encoding='utf-8') as f: config = json.load(f) print("✅ Файл конфигурации загружен успешно") except json.JSONDecodeError as e: print(f"❌ Ошибка JSON в конфигурации: {e}") return False except Exception as e: print(f"❌ Ошибка чтения конфигурации: {e}") return False return config def validate_config(config: dict): """Валидация конфигурации""" print("\n🔍 Валидация конфигурации...") errors = [] warnings = [] # Проверка обязательных секций required_sections = ['gigachat', 'processing', 'directories'] for section in required_sections: if section not in config: errors.append(f"Отсутствует обязательная секция: {section}") else: print(f"✅ Секция {section} найдена") # Проверка GigaChat конфигурации if 'gigachat' in config: gigachat_config = config['gigachat'] if 'credentials' not in gigachat_config: errors.append("Отсутствует credentials в секции gigachat") elif not gigachat_config['credentials'] or gigachat_config['credentials'] == "ваш_ключ_авторизации_здесь": warnings.append("Credentials не настроены (используется значение по умолчанию)") else: print("✅ GigaChat credentials настроены") # Проверка processing конфигурации if 'processing' in config: processing_config = config['processing'] required_processing = ['max_context_size', 'chunk_size', 'output_directory', 'supported_extensions'] for key in required_processing: if key not in processing_config: errors.append(f"Отсутствует {key} в секции processing") else: print(f"✅ {key}: {processing_config[key]}") # Проверка directories if 'directories' in config: directories = config['directories'] if not isinstance(directories, list): errors.append("directories должен быть списком") elif len(directories) == 0: warnings.append("Список directories пуст") else: print(f"✅ Директории для поиска: {directories}") # Проверка models if 'models' in config: models_config = config['models'] if 'light_model' not in models_config: warnings.append("Отсутствует light_model в секции models") if 'pro_model' not in models_config: warnings.append("Отсутствует pro_model в секции models") print(f"✅ Модели: {models_config}") # Вывод результатов if errors: print("\n❌ Ошибки конфигурации:") for error in errors: print(f" - {error}") if warnings: print("\n⚠️ Предупреждения:") for warning in warnings: print(f" - {warning}") if not errors and not warnings: print("\n✅ Конфигурация корректна") return len(errors) == 0 def check_directories(config: dict): """Проверка директорий""" print("\n🔍 Проверка директорий...") if 'directories' not in config: print("❌ Секция directories не найдена") return False directories = config['directories'] if not isinstance(directories, list): print("❌ directories должен быть списком") return False for directory in directories: if Path(directory).exists(): print(f"✅ Директория существует: {directory}") else: print(f"⚠️ Директория не найдена: {directory}") return True def check_prompts(): """Проверка файлов промптов""" print("\n🔍 Проверка промптов...") prompts_dir = Path("prompts") if not prompts_dir.exists(): print("❌ Директория prompts не найдена") return False required_prompts = ['system_prompt.txt', 'light_model_prompt.txt', 'pro_model_prompt.txt'] for prompt_file in required_prompts: prompt_path = prompts_dir / prompt_file if prompt_path.exists(): print(f"✅ Промпт найден: {prompt_file}") else: print(f"⚠️ Промпт не найден: {prompt_file}") return True def main(): """Основная функция диагностики""" print("=" * 60) print("Jenkins Documentation Generator - Диагностика конфигурации") print("=" * 60) # Проверка конфигурации config = check_config_file() if not config: sys.exit(1) # Валидация конфигурации is_valid = validate_config(config) # Проверка директорий check_directories(config) # Проверка промптов check_prompts() print("\n" + "=" * 60) if is_valid: print("✅ Диагностика завершена успешно") print("Конфигурация готова к использованию") else: print("❌ Обнаружены проблемы в конфигурации") print("Исправьте ошибки перед запуском генератора") print("=" * 60) return 0 if is_valid else 1 if __name__ == "__main__": sys.exit(main())