Added new methods, new version

This commit is contained in:
2025-11-06 13:31:49 +03:00
parent 4cc7d0ac7b
commit de881f4d15
3 changed files with 92 additions and 1 deletions

View File

@@ -86,6 +86,29 @@ class Focus(Request):
return {'success': False, 'message': e}
else:
return response
def finan(self, path: str = None):
"""В файле указана рейтинговая таблица и окончательное заключение о финансовых показателях компании.
:param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог, defaults to None
:type path: str, optional
"""
response = self.get('/finan')
current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M')
filename = f'Финансовый_анализ_{self.inn}_{current_datetime}.pdf'
if not path:
file_path = os.path.join(self._basedir, filename)
else:
file_path = os.path.join(path, filename)
try:
with open(file_path, mode='wb') as file:
file.write(response.content)
return {'success': True, 'filename': filename, 'path': file_path}
except Exception as e:
return {'success': False, 'message': e}
def founders_history(self):
"""История владения организацией

View File

@@ -7,6 +7,18 @@ from datetime import datetime
class FocusCompliance(Request):
_basedir = os.path.abspath(os.path.dirname(__file__))
_focus_base_url = None
check_models = [
{
'name': 'corporate',
'description': 'Корпоративный сегмент',
'risk_model_id': 'a9457161-0454-448a-bc2c-83a89cd51b42'
},
{
'name': '115-fz',
'description': '115 ФЗ для некредитных финансовых организаций',
'risk_model_id': '887ee87c-3a43-48d7-a4ad-05c0a64ff53a'
}
]
def __init__(self, inn: str = None, ogrn: str = None):
load_dotenv()
@@ -132,6 +144,33 @@ class FocusCompliance(Request):
return {'success': True, 'files': [result]}
def full_company_report(self, model: str = '115-fz', path: str = None) -> dict:
"""Запрос на полную проверку и построение печатного отчёта по организации
:param model: Идентификатор модели, по которой пройдет проверка.
Идентификатор возвращается в методе «Получение списка рисковых моделей организации»
GET /banks/{bankId}/models, defaults to '115-fz'
:type model: str, optional
:param path: Путь сохранения файла, по-умолчанию файл сохраняется в текущий каталог, defaults to None
:type path: str, optional
:return: Отчет о результате сохранения файла
:rtype: dict
"""
if model == '115-fz':
model_id = [d['risk_model_id'] for d in self.check_models if d['name'] == model][0]
else:
model_id = [d['risk_model_id'] for d in self.check_models if d['name'] == 'corporate'][0]
response = self.get(f'{self._focus_base_url}/models/{model_id}/fullCompanyReport')
result = self._save_file(
filename='Полный_отчет',
content=response.content,
file_type='docx',
path=path
)
return {'success': True, 'files': [result]}
# Физлица
def person_is_foreign_agent(self):
"""Вхождение физлица в список иностранных агентов
@@ -157,6 +196,35 @@ class FocusCompliance(Request):
except KeyError:
return None
def full_individual_report(self, path: str = None, passport: str = None, fio: str = None) -> dict:
"""Запрос на построение печатного отчёта по физ лицу
Необходимо обязательно указать либо ИНН, либо ФИО и номер паспорта
:param path: Путь сохранения файла, по-умолчанию файл сохраняется в текущий каталог, defaults to None
:type path: str, optional
:param passport: Номер паспорты, defaults to None
:type passport: str, optional
:param fio: ФИО (хотя бы фамилия и имя), defaults to None
:type fio: str, optional
:return: Отчет о результате сохранения файла
:rtype: dict
"""
if self.inn:
response = self.get(path=f'{self._focus_base_url}/formFullIndividualReport')
if not self.inn and passport and fio:
response = self.get(path=f'{self._focus_base_url}/formFullIndividualReport', passportNumber=passport, fio=fio)
else:
return {'success': True, 'result': 'Необходимо указать: либо ИНН, либо ФИО (хотя бы фамилию и имя) и паспорт'}
result = self._save_file(
filename='Полный_отчет',
content=response.content,
file_type='docx',
path=path
)
return {'success': True, 'files': [result]}
# Иноагенты
def get_foreign_agents_list(self, fa_type: str = None) -> list: # Не работает, если нет подключенной лицензии
"""Получение списка иноагентов

View File

@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name="kontur_focus",
version="2025.10.0",
version="2025.11.0",
author="Ilya Sapunov",
author_email="sapunov@selectel.ru",
description="Библиотека-обертка для взаимодействия с REST API Контур.Фокус и Фокус.Комплаенс",