feat: проверка данных через Морфер/DaData/DeepSeek (ИИ)
- правая панель на вкладке «Организация»: проверка склонений (Морфер 3.0 — бесплатно, без ключа; DeepSeek — ИИ) и реквизитов (DaData по ИНН; DeepSeek — ИИ-рецензия) - мини-табло результата: источник, дисклеймер для ИИ («сгенерировано ИИ — перепроверьте»), кнопки «Применить»/«Очистить» - меню «Файл → Настройки…»: вкладка API-ключей (DaData, DeepSeek, модель), сохраняются в api_settings.json рядом с программой - веб-проверки показывают источник (morpher.ru / dadata.ru)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""DokoGen — настройки API для внешних сервисов проверки.
|
||||
|
||||
Хранятся в JSON рядом с программой (api_settings.json).
|
||||
Поля:
|
||||
- dadata_token — API-ключ DaData (проверка организации по ИНН)
|
||||
- deepseek_api_key — API-ключ DeepSeek (ИИ-проверки)
|
||||
- deepseek_model — модель DeepSeek (по умолчанию deepseek-chat)
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
|
||||
DEFAULT_SETTINGS = {
|
||||
'dadata_token': '',
|
||||
'deepseek_api_key': '',
|
||||
'deepseek_model': 'deepseek-chat',
|
||||
}
|
||||
|
||||
|
||||
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 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
|
||||
Reference in New Issue
Block a user