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:
table = Table(title="Portfolios", expand=True)
table.add_column("ID", style="cyan", no_wrap=True)
table.add_column("Broker")
table.add_column("Status", no_wrap=True)
table.add_column("Symbol", no_wrap=True)
table.add_column("Cash", justify="right")
table.add_column("Qty", justify="right")
table.add_column("Price", justify="right")
table.add_column("Buffer", justify="right")
table.add_column("Total", justify="right")
for item in portfolios:
table.add_row(
item.portfolio_id,
item.broker,
item.status,
item.symbol,
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)
for i, item in enumerate(portfolios):
if i > 0:
console.print()
lines = [
f"id: {item.portfolio_id}",
f"broker: {item.broker}",
f"status: {item.status}",
f"symbol: {item.symbol}",
f"cash: {format_currency(item.cash_balance)}",
f"qty: {item.asset_quantity:g}",
f"price: {format_currency(item.price)}",
f"buffer: {format_currency(item.profit_buffer)}",
f"total: {format_currency(item.total_value)}",
]
for line in lines:
console.print(line)
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 "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: