- 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 通过
17 lines
473 B
Python
17 lines
473 B
Python
"""因子目录 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: ...
|