# -*- coding: utf-8 -*-
"""DokoGen — настройки API для внешних сервисов проверки.

Хранятся в JSON рядом с программой (api_settings.json).
Поля:
- dadata_token  — API-ключ DaData (проверка организации по ИНН)
- ai_api_key    — API-ключ ИИ (OpenAI-совместимый: DeepSeek, ChatGPT и др.)
- ai_model      — модель ИИ (deepseek-chat, gpt-4o-mini, gpt-4o и т.п.)
- ai_base_url   — адрес API ИИ (по умолчанию DeepSeek)
"""

import os
import sys
import json

DEFAULT_SETTINGS = {
    'dadata_token': '431aa11706bf83f571cef0319259289aa750bcb1',
    'ai_api_key': 'sk-3c7e6673f245412697d0e14b6096435f',
    'ai_model': 'deepseek-chat',
    'ai_base_url': 'https://api.deepseek.com',
}

# Старые ключи (для совместимости со старым файлом api_settings.json)
_LEGACY_KEYS = {
    'deepseek_api_key': 'ai_api_key',
    'deepseek_model': 'ai_model',
}


def default_api_settings_path():
    """Путь к файлу настроек: рядом с exe (frozen) или рядом с модулем."""
    if getattr(sys, 'frozen', False):
        base = os.path.dirname(sys.executable)
    else:
        base = os.path.dirname(os.path.abspath(__file__))
    return os.path.join(base, 'api_settings.json')


def load_api_settings(path=None):
    """Загрузка настроек API из JSON-файла. Если файла нет — дефолт."""
    if path is None:
        path = default_api_settings_path()
    if not path or not os.path.exists(path):
        return dict(DEFAULT_SETTINGS)
    try:
        with open(path, encoding='utf-8-sig') as f:
            loaded = json.load(f)
        merged = dict(DEFAULT_SETTINGS)
        for k, v in loaded.items():
            # переносим старые ключи в новые
            if k in _LEGACY_KEYS and not loaded.get(_LEGACY_KEYS[k]):
                merged[_LEGACY_KEYS[k]] = v
            elif k in merged:
                merged[k] = v
        return merged
    except Exception:
        return dict(DEFAULT_SETTINGS)


def save_api_settings(settings, path=None):
    """Сохранение настроек API. Возвращает True/False."""
    if path is None:
        path = default_api_settings_path()
    try:
        os.makedirs(os.path.dirname(path), exist_ok=True)
        with open(path, 'w', encoding='utf-8') as f:
            json.dump(settings, f, ensure_ascii=False, indent=2)
        return True
    except Exception:
        return False
