backend redesign

This commit is contained in:
2026-03-11 18:47:11 -04:00
parent 8ff277c8c6
commit e99ef5d2dd
210 changed files with 12147 additions and 155 deletions

View File

@@ -0,0 +1,40 @@
from typing import Dict, Any, Optional, List
from pydantic import BaseModel, Field
class IndicatorInstance(BaseModel):
"""
Represents an instance of an indicator applied to a chart.
This schema holds both the TA-Lib metadata and TradingView-specific data
needed for synchronization.
"""
id: str = Field(..., description="Unique identifier for this indicator instance")
# TA-Lib metadata
talib_name: str = Field(..., description="TA-Lib indicator name (e.g., 'RSI', 'SMA', 'MACD')")
instance_name: str = Field(..., description="User-friendly instance name")
parameters: Dict[str, Any] = Field(default_factory=dict, description="TA-Lib indicator parameters")
# TradingView metadata
tv_study_id: Optional[str] = Field(default=None, description="TradingView study ID assigned by the chart widget")
tv_indicator_name: Optional[str] = Field(default=None, description="TradingView indicator name if different from TA-Lib")
tv_inputs: Optional[Dict[str, Any]] = Field(default=None, description="TradingView-specific input parameters")
# Visual properties
visible: bool = Field(default=True, description="Whether indicator is visible on chart")
pane: str = Field(default="chart", description="Pane where indicator is displayed ('chart' or 'separate')")
# Metadata
symbol: Optional[str] = Field(default=None, description="Symbol this indicator is applied to")
created_at: Optional[int] = Field(default=None, description="Creation timestamp (Unix seconds)")
modified_at: Optional[int] = Field(default=None, description="Last modification timestamp (Unix seconds)")
original_id: Optional[str] = Field(default=None, description="Original ID from backend before TradingView assigns its own ID")
class IndicatorCollection(BaseModel):
"""Collection of all indicator instances on the chart."""
indicators: Dict[str, IndicatorInstance] = Field(
default_factory=dict,
description="Dictionary of indicator instances keyed by ID"
)