Files
qlib/backend/app/domain/repositories/factor.py
T
Simon 8f47b5b603 feat(factor): M7.1 因子定义入库 + /api/factors 读库(目录契约源)
- factor_definition 表(migration b7f2a5e81c33,MySQL 已应用):name 主键 + 元数据
  (formula/brief/frequency/lookback/direction/requires JSON/version)+ FactorDefinition
  entity(from_registry_def 由代码注册表构造)
- FactorRepository Protocol + SQLAlchemy 实现(幂等 upsert/list/get)
- /api/factors 改读 DB;目录为空自动 seed 注册表(幂等)—— 保留自定义因子登记能力
  (计算仍须代码注册,引用未注册因子照常 FactorError,防伪因子)
- tests/test_factor_catalog.py(repo 幂等/roundtrip/registry seed、API seed+字段齐全);
  test_api 的 client fixture 补 tmp sqlite session(factors 读库);全量 pytest 通过
2026-09-09 00:28:16 +08:00

17 lines
473 B
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.
"""因子目录 Repository Protocol(M7.1)。"""
from __future__ import annotations
from typing import Protocol
from app.domain.entities.factor import FactorDefinition
class FactorRepository(Protocol):
def upsert_many(self, definitions: list[FactorDefinition]) -> int:
"""以 name 为幂等键批量写入/更新,返回处理条数。"""
def list(self) -> list[FactorDefinition]: ...
def get(self, name: str) -> FactorDefinition | None: ...