import os from pathlib import Path from dotenv import load_dotenv # Завантаження змінних середовища з .env файлу, якщо він існує load_dotenv() # Базові шляхи BASE_DIR = Path(__file__).parent.absolute() DATA_DIR = BASE_DIR / "data" REPORTS_DIR = BASE_DIR / "reports" TEMP_DIR = BASE_DIR / "temp" LOG_DIR = BASE_DIR / "logs" # Створення директорій, якщо вони не існують DATA_DIR.mkdir(exist_ok=True, parents=True) REPORTS_DIR.mkdir(exist_ok=True, parents=True) TEMP_DIR.mkdir(exist_ok=True, parents=True) LOG_DIR.mkdir(exist_ok=True, parents=True) # Налаштування додатку APP_NAME = "Jira AI Assistant" APP_VERSION = "1.0.0" DEFAULT_INACTIVE_DAYS = 14 MAX_RESULTS = 500 # API ключі та налаштування JIRA_URL = os.getenv("JIRA_URL", "") JIRA_USERNAME = os.getenv("JIRA_USERNAME", "") JIRA_API_TOKEN = os.getenv("JIRA_API_TOKEN", "") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-3.5-turbo") GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "") GEMINI_MODEL = os.getenv("GEMINI_MODEL", "gemini-pro") SLACK_BOT_TOKEN = os.getenv("SLACK_BOT_TOKEN", "") # Налаштування логування LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") LOG_FILE = os.getenv("LOG_FILE", LOG_DIR / f"{APP_NAME.lower().replace(' ', '_')}.log") # Додаткові налаштування для Gradio GRADIO_THEME = "huggingface" # Доступні теми: default, huggingface, grass, peach GRADIO_AUTH = [] # Список кортежів (username, password) для авторизації GRADIO_SHARE = False # Чи використовувати публічний URL для додатку # Функція для збереження налаштувань у конфігураційний файл def save_config(): import json config = { "app_name": APP_NAME, "version": APP_VERSION, "data_dir": str(DATA_DIR), "reports_dir": str(REPORTS_DIR), "temp_dir": str(TEMP_DIR), "log_dir": str(LOG_DIR), "log_level": LOG_LEVEL, "default_inactive_days": DEFAULT_INACTIVE_DAYS, "openai_model": OPENAI_MODEL, "gemini_model": GEMINI_MODEL, "max_results": MAX_RESULTS, "gradio_theme": GRADIO_THEME, "gradio_share": GRADIO_SHARE } with open(BASE_DIR / "config.json", "w", encoding="utf-8") as f: json.dump(config, f, indent=2) # Функція для завантаження налаштувань з конфігураційного файлу def load_config(): import json config_file = BASE_DIR / "config.json" if config_file.exists(): with open(config_file, "r", encoding="utf-8") as f: config = json.load(f) return config return None # Створення конфігураційного файлу при імпорті, якщо він не існує if not (BASE_DIR / "config.json").exists(): save_config()