"""因子目录用例:把代码注册表因子 seed 进 DB(M7.1)。 DB 为目录契约源;本服务在 /api/factors 首次读取为空时自动 seed(幂等), 后续代码新增因子也通过同一入口同步,保持目录与可计算因子一致。 """ from __future__ import annotations from app.domain.entities.factor import FactorDefinition from app.domain.repositories.factor import FactorRepository from app.quant.factors import list_factors def seed_registry_factors(repo: FactorRepository, session) -> int: """把 quant/factors 注册表的元数据 upsert 进 factor_definition(幂等)。""" defs = [FactorDefinition.from_registry_def(d) for d in list_factors()] if not defs: return 0 n = repo.upsert_many(defs) session.commit() return n