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() |