Files
dify/api/services/enterprise/human_input_contact_composition.py
T
8cbb6c0130 feat: HITL IM integration (#44864)
Co-authored-by: zxhlyh <jasonapring2015@outlook.com>
Co-authored-by: JzoNg <jzongcode@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-10-30 02:43:31 +00:00

32 lines
1.5 KiB
Python

"""Enterprise-only composition for Human Input Contact capabilities."""
from sqlalchemy.orm import Session
from repositories.human_input_v2.sqlalchemy_contact_repository import (
SQLAlchemyContactIMBindingRepository,
SQLAlchemyContactRepository,
)
from repositories.human_input_v2.sqlalchemy_im_channel_repository import DeploymentIMChannelReader
from repositories.human_input_v2.sqlalchemy_im_identity_repository import SQLAlchemyIMIdentityRepository
from services.human_input_v2.contact_service import ContactManagementService
from .human_input_contact_service import EnterpriseContactManagementService, EnterpriseOrganizationContactReader
def build_enterprise_contact_management_service(session: Session) -> EnterpriseContactManagementService:
repository = SQLAlchemyContactRepository(session)
channel = DeploymentIMChannelReader(session).get()
contact_queries = ContactManagementService(
repository,
SQLAlchemyContactIMBindingRepository(session, channel),
SQLAlchemyIMIdentityRepository(session, channel.id) if channel is not None else None,
)
return EnterpriseContactManagementService(repository, repository, contact_queries)
def build_enterprise_organization_contact_reader(session: Session) -> EnterpriseOrganizationContactReader:
return EnterpriseOrganizationContactReader(SQLAlchemyContactRepository(session))
__all__ = ["build_enterprise_contact_management_service", "build_enterprise_organization_contact_reader"]