"""因子目录 API:/api/factors(M7.1 起读 DB factor_definition)。 目录为空时自动从代码注册表 seed(幂等);随后可登记自定义因子元数据。 响应为 FactorDefinition 实体(含 requires 列表等)。 """ from __future__ import annotations from fastapi import APIRouter from app.api.deps import DbSession, FactorRepoDep from app.application.services.factor_catalog import seed_registry_factors from app.domain.entities.factor import FactorDefinition router = APIRouter(prefix="/factors", tags=["factors"]) @router.get("", summary="因子目录(含元数据,来自 factor_definition 表)") def list_factor_catalog(factor_repo: FactorRepoDep, session: DbSession) -> list[FactorDefinition]: if not factor_repo.list(): seed_registry_factors(factor_repo, session) # 首次:从代码注册表 seed return factor_repo.list()