mirror of
https://github.com/ZhuLinsen/daily_stock_analysis
synced 2026-09-20 10:53:33 +08:00
feat: link decision signals with alerts and portfolio risk (#1715)
Co-authored-by: mumu <42829555+ZhuLinsen@users.noreply.github.com>
This commit is contained in:
@@ -93,6 +93,8 @@ from api.v1.schemas.portfolio import (
|
||||
PortfolioImportBrokerItem,
|
||||
PortfolioImportBrokerListResponse,
|
||||
PortfolioFxRefreshResponse,
|
||||
PortfolioDecisionSignalRiskBlock,
|
||||
PortfolioDecisionSignalRiskItem,
|
||||
PortfolioRiskResponse,
|
||||
)
|
||||
from api.v1.schemas.alerts import (
|
||||
@@ -204,6 +206,8 @@ __all__ = [
|
||||
"PortfolioImportBrokerItem",
|
||||
"PortfolioImportBrokerListResponse",
|
||||
"PortfolioFxRefreshResponse",
|
||||
"PortfolioDecisionSignalRiskBlock",
|
||||
"PortfolioDecisionSignalRiskItem",
|
||||
"PortfolioRiskResponse",
|
||||
# alerts
|
||||
"AlertDeleteResponse",
|
||||
|
||||
@@ -117,6 +117,7 @@ class AlertTriggerItem(BaseModel):
|
||||
"evaluator_snapshot / legacy_text / null"
|
||||
),
|
||||
)
|
||||
decision_signal_summary: Optional[Dict[str, Any]] = None
|
||||
|
||||
|
||||
class AlertTriggerListResponse(BaseModel):
|
||||
|
||||
@@ -263,6 +263,20 @@ class PortfolioFxRefreshResponse(BaseModel):
|
||||
error_count: int
|
||||
|
||||
|
||||
class PortfolioDecisionSignalRiskItem(BaseModel):
|
||||
account_id: Optional[int] = None
|
||||
symbol: str
|
||||
market: str
|
||||
signal: Dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class PortfolioDecisionSignalRiskBlock(BaseModel):
|
||||
available: bool = True
|
||||
total: int = 0
|
||||
actions: Dict[str, int] = Field(default_factory=dict)
|
||||
items: List[PortfolioDecisionSignalRiskItem] = Field(default_factory=list)
|
||||
|
||||
|
||||
class PortfolioRiskResponse(BaseModel):
|
||||
as_of: str
|
||||
account_id: Optional[int] = None
|
||||
@@ -273,3 +287,4 @@ class PortfolioRiskResponse(BaseModel):
|
||||
sector_concentration: Dict[str, Any] = Field(default_factory=dict)
|
||||
drawdown: Dict[str, Any] = Field(default_factory=dict)
|
||||
stop_loss: Dict[str, Any] = Field(default_factory=dict)
|
||||
decision_signal_risk: PortfolioDecisionSignalRiskBlock = Field(default_factory=PortfolioDecisionSignalRiskBlock)
|
||||
|
||||
Reference in New Issue
Block a user