feat: persist feature research and versioned alpha assessments

This commit is contained in:
yuxuanhui
2026-09-08 21:52:46 +08:00
parent f89ae211d2
commit eb4850a003
32 changed files with 2003 additions and 20 deletions
+56 -1
View File
@@ -6,8 +6,10 @@ from ..ai.capabilities import Capability
from ..catalog.research_metadata import ResearchMetadata
from ..schemas import Contract
from .assets import Assets
from .evaluations import Evaluations
from .experiments import Experiments
from .workspace_contracts import Expansion, SettingVariants
from .features import Features
from .workspace_contracts import AssetWrite, EvaluateInput, Expansion, FeatureSpec, SettingVariants
class AssetQuery(Contract):
@@ -21,6 +23,16 @@ class AssetReference(Contract):
version: int | None = Field(default=None, ge=1)
class FixedAssetReference(AssetReference):
version: int = Field(ge=1)
class FeatureWrite(Contract):
content: FeatureSpec
asset_id: str | None = Field(default=None, max_length=36)
version: int | None = Field(default=None, ge=1)
class ExperimentReference(Contract):
experiment_id: str = Field(min_length=1, max_length=36)
@@ -105,3 +117,46 @@ CAPABILITIES = (
),
),
)
CAPABILITIES += (
Capability(
name="search_feature_plans",
schema=AssetQuery,
description="搜索版本化特征方案。",
label="搜索特征方案",
renderer="research",
effect="query",
handler=lambda ctx, args: Assets(ctx.business.db).list("feature", **args.model_dump()),
),
Capability(
name="save_feature_plan",
schema=FeatureWrite,
description="保存固定输入、处理步骤和经济假设,不执行计算或回测。",
label="保存特征方案",
renderer="research",
effect="prepare",
handler=lambda ctx, args: Assets(ctx.business.db).save(
AssetWrite(kind="feature", content=args.content.model_dump(mode="json"), version=args.version),
args.asset_id,
),
),
Capability(
name="feature_to_template",
schema=FixedAssetReference,
description="将指定特征方案版本转为新模板,保留来源。",
label="特征转为模板",
renderer="research",
effect="prepare",
handler=lambda ctx, args: Features(ctx.business.db).to_template(args.asset_id, args.version),
),
Capability(
name="evaluate_research",
schema=EvaluateInput,
description="保存版本化规则评估,缺失数据不会作为通过,不修改研究状态。",
label="保存规则评估",
renderer="research",
effect="prepare",
handler=lambda ctx, args: Evaluations(ctx.business.db).create(args),
),
)