import os import sys import logging from pathlib import Path from dotenv import load_dotenv from src.interface import launch_interface from src.utils import setup_logging logging.basicConfig( level=logging.DEBUG, # встановлюємо DEBUG, щоб бачити всі повідомлення format='%(asctime)s - %(levelname)s - %(message)s' ) def verify_environment() -> bool: """ Перевірка наявності необхідних змінних середовища та структури проекту. Returns: bool: True якщо всі перевірки пройдені, False в іншому випадку """ required_env_vars = [ 'OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'AZURE_API_KEY', 'AZURE_ENDPOINT' ] missing_vars = [var for var in required_env_vars if not os.getenv(var)] if missing_vars: logging.warning(f"Missing environment variables: {', '.join(missing_vars)}") return False required_dirs = [ Path('logs'), Path('docs'), Path('src/config'), Path('src/high-risk-symptoms-guidance') ] for directory in required_dirs: if not directory.exists(): try: directory.mkdir(parents=True, exist_ok=True) logging.info(f"Created directory: {directory}") except Exception as e: logging.error(f"Error creating directory {directory}: {str(e)}") return False return True def setup_project() -> None: """ Налаштування проекту: створення необхідних директорій та файлів. """ try: # Створення базової структури проекту project_structure = { 'logs': [], 'docs': ['HELP.md'], 'src/config': ['config.py', '__init__.py'], 'src/high-risk-symptoms-guidance': [] } root_dir = Path(__file__).parent for dir_path, files in project_structure.items(): directory = root_dir / dir_path directory.mkdir(parents=True, exist_ok=True) for file in files: file_path = directory / file if not file_path.exists(): file_path.touch() logging.info(f"Created file: {file_path}") logging.info("Project structure setup completed") except Exception as e: logging.error(f"Error setting up project structure: {str(e)}") sys.exit(1) def main() -> None: """ Головна функція програми. """ try: # Завантаження змінних середовища load_dotenv() # Налаштування логування setup_logging() # Перевірка середовища if not verify_environment(): logging.warning("Environment check failed, but continuing with available features") # Налаштування проекту setup_project() # Запуск веб-інтерфейсу launch_interface() except Exception as e: logging.error(f"Critical error in main: {str(e)}") sys.exit(1) if __name__ == "__main__": main()