ForcePilot/backend/package/yuxi/external_systems/__init__.py

70 lines
2.8 KiB
Python
Raw Normal View History

"""外部系统限界上下文重构包。
开发期间根目录为 ``external_systems/``切换日重命名为 ``external_systems/``
本包采用轻量六边形架构Ports & Adapters
- ``core/``数据类 + 端口定义 + 校验函数不依赖任何外部
- ``use_cases/``用例编排 + DTO + Mapper + Context 构建依赖 ``core/``
- ``framework/`` + ``adapters/persistence/``实现端口依赖 ``core/`` 端口
详见 ``docs/vibe/v1.1/设计方案/2026-06-17-外部系统六边形架构重构-设计方案-最终版.md``
"""
from __future__ import annotations
from yuxi.utils import logger
def register_adapters() -> None:
"""显式注册所有外部系统适配器、认证插件与集成包。
``server/utils/lifespan.py`` 在应用启动时调用切换日后接入
调用顺序蓝本 §12.1 8
1. ``discover_adapters()``扫描 ``framework/adapters/`` 注册协议适配器
2. ``discover_auth_plugins()``扫描 ``framework/auth_plugins/`` 注册 9 个框架插件
3. ``discover_integration_packages()``扫描 ``integrations/`` 注册厂商集成包
顺序约束说明adapters auth_plugins 互不依赖可任意顺序integrations 可能
注册渠道专属插件与适配器放最后三者均通过子包 ``__init__.py`` 自注册副作用完成
"""
# 1. 自动发现并注册所有协议适配器
from yuxi.external_systems.framework.registry.discovery import discover_adapters
discover_adapters()
# 2. 自动发现并注册所有认证插件
from yuxi.external_systems.framework.auth_plugins.discovery import discover_auth_plugins
discover_auth_plugins()
# 3. 自动发现并导入所有集成包(由子包 __init__.py 自注册)
from yuxi.external_systems.integrations.discovery import discover_integration_packages
discover_integration_packages()
async def shutdown_external_systems() -> None:
"""应用关闭时释放外部系统模块持有的资源。
``register_adapters`` 对称 ``server/utils/lifespan.py`` 在应用关停时调用
释放顺序
1. ``pool_manager.close_all()``释放所有连接池句柄httpx/gRPC
2. ``default_registry.aclose_all()``释放适配器实例缓存资源
任一步失败仅记录日志不中断后续清理best-effort
"""
from yuxi.external_systems.framework.runtime.pool_manager import pool_manager
from yuxi.external_systems.framework.registry.adapter_registry import default_registry
try:
await pool_manager.close_all()
except Exception:
logger.warning("释放外部系统连接池失败", exc_info=True)
try:
await default_registry.aclose_all()
except Exception:
logger.warning("释放外部系统适配器实例失败", exc_info=True)