Files
xiaobaifupan/next/backend/features/screener/schemas.py
T

52 lines
1.1 KiB
Python

from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field
class ScreenerCatalogResponse(BaseModel):
factor_groups: dict[str, list[str]]
factors: dict[str, str]
stage: list[dict[str, Any]]
curated: list[dict[str, Any]]
class ScreenerWorkspaceResponse(BaseModel):
trade_date: str | None
message: str
catalog: ScreenerCatalogResponse
stage_runs: list[dict[str, Any]]
curated_runs: list[dict[str, Any]]
custom_strategies: list[dict[str, Any]]
custom_runs: list[dict[str, Any]] = Field(default_factory=list)
class ScreenerSyncResponse(BaseModel):
trade_date: str
factor_version: str
factor_count: int
phase: str
stage_runs: int
curated_runs: int
completed: int
failed: int
class CustomStrategyInput(BaseModel):
name: str = Field(min_length=1, max_length=30)
formula: dict[str, Any]
class TrackInput(BaseModel):
run_id: int = Field(gt=0)
identifier: str = Field(min_length=1, max_length=40)
class IdentifierResponse(BaseModel):
id: int
class MessageResponse(BaseModel):
message: str