first commit
This commit is contained in:
52
app/schemas/score.py
Normal file
52
app/schemas/score.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""Pydantic schemas for scoring endpoints."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class DimensionScoreResponse(BaseModel):
|
||||
"""A single dimension score."""
|
||||
|
||||
dimension: str
|
||||
score: float
|
||||
is_stale: bool
|
||||
computed_at: datetime | None = None
|
||||
|
||||
|
||||
class ScoreResponse(BaseModel):
|
||||
"""Full score response for a ticker: composite + all dimensions."""
|
||||
|
||||
symbol: str
|
||||
composite_score: float | None = None
|
||||
composite_stale: bool = False
|
||||
weights: dict[str, float] = {}
|
||||
dimensions: list[DimensionScoreResponse] = []
|
||||
missing_dimensions: list[str] = []
|
||||
computed_at: datetime | None = None
|
||||
|
||||
|
||||
class WeightUpdateRequest(BaseModel):
|
||||
"""Request to update dimension weights."""
|
||||
|
||||
weights: dict[str, float] = Field(
|
||||
...,
|
||||
description="Dimension name → weight mapping. All weights must be positive.",
|
||||
)
|
||||
|
||||
|
||||
class RankingEntry(BaseModel):
|
||||
"""A single entry in the rankings list."""
|
||||
|
||||
symbol: str
|
||||
composite_score: float
|
||||
dimensions: list[DimensionScoreResponse] = []
|
||||
|
||||
|
||||
class RankingResponse(BaseModel):
|
||||
"""Rankings response: tickers sorted by composite score descending."""
|
||||
|
||||
rankings: list[RankingEntry] = []
|
||||
weights: dict[str, float] = {}
|
||||
Reference in New Issue
Block a user