refactor: change portfolio list output format from table to line-based

- Replace Rich Table format with line-based output for portfolio list display
- Each portfolio item now displays as individual key-value pairs
- Simplified output structure with better readability
- Update test assertion to match new output format
This commit is contained in:
2026-05-11 00:50:48 +00:00
parent 545d4da413
commit db5f476a22
2 changed files with 17 additions and 24 deletions
+16 -23
View File
@@ -39,29 +39,22 @@ def to_plain_data(value: Any) -> Any:
def print_portfolio_table(console: Console, portfolios: list[PortfolioListItem]) -> None: def print_portfolio_table(console: Console, portfolios: list[PortfolioListItem]) -> None:
table = Table(title="Portfolios", expand=True) for i, item in enumerate(portfolios):
table.add_column("ID", style="cyan", no_wrap=True) if i > 0:
table.add_column("Broker") console.print()
table.add_column("Status", no_wrap=True) lines = [
table.add_column("Symbol", no_wrap=True) f"id: {item.portfolio_id}",
table.add_column("Cash", justify="right") f"broker: {item.broker}",
table.add_column("Qty", justify="right") f"status: {item.status}",
table.add_column("Price", justify="right") f"symbol: {item.symbol}",
table.add_column("Buffer", justify="right") f"cash: {format_currency(item.cash_balance)}",
table.add_column("Total", justify="right") f"qty: {item.asset_quantity:g}",
for item in portfolios: f"price: {format_currency(item.price)}",
table.add_row( f"buffer: {format_currency(item.profit_buffer)}",
item.portfolio_id, f"total: {format_currency(item.total_value)}",
item.broker, ]
item.status, for line in lines:
item.symbol, console.print(line)
format_currency(item.cash_balance),
f"{item.asset_quantity:g}",
format_currency(item.price),
format_currency(item.profit_buffer),
format_currency(item.total_value),
)
console.print(table)
def print_portfolio_detail(console: Console, detail: PortfolioDetailResponse) -> None: def print_portfolio_detail(console: Console, detail: PortfolioDetailResponse) -> None:
+1 -1
View File
@@ -507,7 +507,7 @@ def test_cli_list_renders_table() -> None:
assert result.exit_code == 0 assert result.exit_code == 0
assert "005930:tv" in result.stdout assert "005930:tv" in result.stdout
assert "Portfolios" in result.stdout assert "id: 005930:tv" in result.stdout
def test_cli_status_supports_json_output() -> None: def test_cli_status_supports_json_output() -> None: