ForcePilot/backend/package/yuxi/external_systems/__init__.py
Kris 9e095ee5ec feat: 完成多批次功能迭代与优化
本次提交包含大量功能完善与修复:
1. 新增多类操作的操作人审计字段与环境校验逻辑
2. 修复多集成的认证头生成逻辑,支持动态token类型
3. 新增通知派发适配器框架与多渠道实现
4. 完善健康检查返回结果与指标监控项
5. 优化JQL校验逻辑与资产导入规则
6. 补充各类DTO字段与持久层映射关系
7. 修复并优化测试用例、配额、密钥轮转等服务逻辑
2026-07-11 05:39:41 +08:00

70 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""外部系统限界上下文重构包。
开发期间根目录为 ``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.registry.adapter_registry import default_registry
from yuxi.external_systems.framework.runtime.pool_manager import pool_manager
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)