""" API 路由汇总 统一注册所有 API 路由,供 main.py 引入。 """ from importlib import import_module from fastapi import APIRouter from ..core.config import settings CORE_ROUTE_MODULES = ( "signals_api", "feedbacks", "experiments", "context", "tasks", "webhooks", "auth", "users_api", "endpoints.skill", "workloads", "skill_tags_api", "sstc_api", "projects_api", "scheduler", "notifications", "recipes", "operation_catalog", "audit", "task_briefs", "pmflow_os_api", "pmflow_launch_api", ) OPTIONAL_ROUTE_GROUPS = { "integrations": ("feishu_api", "wecom_api", "mcp_api", "dev_sync"), "knowledge": ("rag_api", "knowledge_graph", "semantic_facts_api", "ai_pmo_api"), "ai_control": ( "ai_steward_api", "llm_engines", "llm_providers", "ai_logs_api", "prompt_profiles", "signal_sources_api", "model_routing", ), } def _include_module(router: APIRouter, module_path: str) -> None: module = import_module(f"{__package__}.{module_path}") router.include_router(module.router) def _enabled_optional_groups() -> tuple[str, ...]: if settings.api_route_profile == "lean": return tuple(settings.api_optional_route_groups) if settings.api_optional_route_groups: return tuple(dict.fromkeys(settings.api_optional_route_groups)) return tuple(OPTIONAL_ROUTE_GROUPS.keys()) def build_api_router() -> APIRouter: router = APIRouter() for module_path in CORE_ROUTE_MODULES: _include_module(router, module_path) for group in _enabled_optional_groups(): for module_path in OPTIONAL_ROUTE_GROUPS.get(group, ()): _include_module(router, module_path) return router api_router = build_api_router()