"""因子目录领域实体(M7.1:因子元数据 DB 化,v2 §11)。 DB 是因子目录的契约源:元数据(含自定义因子登记)入库; 计算执行仍由代码注册表(quant/factors.py)提供 —— 登记但未注册计算的因子 在 score/condition 中引用时仍抛 FactorError(防静默伪因子)。 """ from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field class FactorDefinition(BaseModel): name: str = Field(min_length=1, max_length=64) description: str = "" formula: str = "" brief: str = "" frequency: str = "daily" lookback: int = 20 direction: str = Field(default="higher_is_better", pattern="^(higher_is_better|lower_is_better)$") requires: list[str] = Field(default_factory=list) version: str = "1" created_at: datetime | None = None @classmethod def from_registry_def(cls, d) -> FactorDefinition: """由 quant/factors.FactorDef(dataclass)构造目录实体(seed 用)。""" return cls( name=d.name, description=d.description, formula=d.formula, brief=d.brief, frequency=d.frequency, lookback=d.lookback, direction=d.direction, requires=list(d.requires), )