feat(integrations): добавлен фундамент для интеграций с внешними сервисами
- Создано приложение integrations с базовой архитектурой - BaseIntegration (абстрактная модель) для всех интеграций - BaseIntegrationService (абстрактный сервисный класс) - IntegrationConfig модель для тумблеров в system_settings - Добавлена вкладка "Интеграции" в системные настройки - Заготовка UI с тумблерами для включения интеграций Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
3
myproject/integrations/services/__init__.py
Normal file
3
myproject/integrations/services/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .base import BaseIntegrationService
|
||||
|
||||
__all__ = ['BaseIntegrationService']
|
||||
48
myproject/integrations/services/base.py
Normal file
48
myproject/integrations/services/base.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Tuple
|
||||
|
||||
|
||||
class BaseIntegrationService(ABC):
|
||||
"""
|
||||
Базовый класс для всех интеграционных сервисов.
|
||||
Определяет общий интерфейс для работы с внешними API.
|
||||
"""
|
||||
|
||||
def __init__(self, config):
|
||||
"""
|
||||
Args:
|
||||
config: Экземпляр модели интеграции (наследник BaseIntegration)
|
||||
"""
|
||||
self.config = config
|
||||
|
||||
@abstractmethod
|
||||
def test_connection(self) -> Tuple[bool, str]:
|
||||
"""
|
||||
Проверить соединение с внешним API.
|
||||
|
||||
Returns:
|
||||
tuple: (success: bool, message: str)
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def sync(self) -> Tuple[bool, str]:
|
||||
"""
|
||||
Выполнить основную операцию синхронизации.
|
||||
|
||||
Returns:
|
||||
tuple: (success: bool, message: str)
|
||||
"""
|
||||
pass
|
||||
|
||||
def is_available(self) -> bool:
|
||||
"""
|
||||
Проверить, готова ли интеграция к использованию.
|
||||
|
||||
Returns:
|
||||
bool: True если интеграция активна и настроена
|
||||
"""
|
||||
return (
|
||||
self.config.is_active and
|
||||
self.config.is_configured
|
||||
)
|
||||
Reference in New Issue
Block a user