File size: 3,467 Bytes
b7e1a75
228113c
 
 
b7e1a75
 
 
 
228113c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7e1a75
228113c
 
 
 
 
 
 
 
b7e1a75
228113c
b7e1a75
228113c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a71140b
228113c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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()