feat(api): expose strategy nick on portfolio items

This commit is contained in:
2026-08-16 13:13:39 +09:00
parent ee1af6ef49
commit 75e55fde9c
4 changed files with 8 additions and 1 deletions
+1
View File
@@ -108,6 +108,7 @@ def _portfolio_to_item(
# REQ-055: 전략·시장 메타데이터 additive 필드
active_strategy_id=portfolio.active_strategy_id,
strategy_name=portfolio.strategy_name,
strategy_nick=portfolio.strategy_nick,
strategy_params=portfolio.strategy_params,
strategy_revision=portfolio.strategy_revision,
markets=portfolio.markets,
+1
View File
@@ -120,6 +120,7 @@ class Portfolio:
profit_buffer: float = 0.0
active_strategy_id: str | None = None
strategy_name: str | None = None # REQ-055: strategy_sets.name JOIN 결과
strategy_nick: str | None = None # REQ-055: strategy_sets.nick JOIN 결과
strategy_params: dict[str, Any] = field(default_factory=dict) # REQ-055: strategy_sets.config 파싱 결과
strategy_revision: int | None = None
markets: list[str] = field(default_factory=list) # REQ-055: assets.markets JOIN 결과
+5 -1
View File
@@ -73,7 +73,8 @@ _SELECT_PORTFOLIO = """
ss.name,
ss.config,
a.markets,
ss.revision
ss.revision,
ss.nick
FROM portfolios p
JOIN assets a ON p.asset_id = a.asset_id
LEFT JOIN strategy_sets ss ON p.active_strategy_id = ss.id
@@ -572,6 +573,8 @@ class PostgresPortfolioRepository:
_markets_raw = row[21] if len(row) > 21 else None
markets: list[str] = list(_markets_raw) if _markets_raw else []
strategy_revision = int(row[22]) if len(row) > 22 and row[22] is not None else None
# REQ-055: strategy_nick (row[23] = ss.nick from LEFT JOIN strategy_sets)
strategy_nick: str | None = row[23] if len(row) > 23 else None
return Portfolio(
portfolio_id=row[0],
@@ -595,6 +598,7 @@ class PostgresPortfolioRepository:
tag_ids=[str(t) for t in row[17]] if len(row) > 17 and row[17] is not None else [],
display_name=row[18] if len(row) > 18 else None,
strategy_name=strategy_name,
strategy_nick=strategy_nick,
strategy_params=strategy_params,
strategy_revision=strategy_revision,
markets=markets,
+1
View File
@@ -286,6 +286,7 @@ class PortfolioItem(BaseModel):
# REQ-055: 전략·시장 메타데이터 additive 필드
active_strategy_id: str | None = None
strategy_name: str | None = None
strategy_nick: str | None = None
strategy_params: dict[str, Any] = Field(default_factory=dict)
strategy_revision: int | None = Field(default=None, ge=1)
markets: list[str] = Field(default_factory=list)