From 48c9c651d743369f569c592385f840c14d7218cf Mon Sep 17 00:00:00 2001 From: yunyaozhou Date: Sat, 8 Aug 2026 13:35:39 +0800 Subject: [PATCH] fix: preserve empty native group metadata --- pyproject.toml | 2 +- sub2api_quota_tui.py | 5 ++--- tests/test_payload.py | 20 ++++++++++++++++++++ uv.lock | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8ccb6d4..3ebf3ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "shusub2" -version = "0.3.7" +version = "0.3.8" description = "Aggregated operations TUI for Sub2API" readme = "README.md" requires-python = ">=3.11" diff --git a/sub2api_quota_tui.py b/sub2api_quota_tui.py index 505dbbd..e7569a6 100644 --- a/sub2api_quota_tui.py +++ b/sub2api_quota_tui.py @@ -27,7 +27,7 @@ from zoneinfo import ZoneInfo, ZoneInfoNotFoundError APP_NAME = "shusub2" -FALLBACK_VERSION = "0.3.7" +FALLBACK_VERSION = "0.3.8" DEFAULT_WORKSPACE_URL = "https://price.tailbeb9ad.ts.net/api/ui-data?view=workspace" DEFAULT_WORKSPACE_URL_CONFIG_FILE = "~/.config/shusub2/workspace-url" DEFAULT_API_URL = "http://127.0.0.1:18318/api/tui/accounts" @@ -1985,8 +1985,7 @@ def account_group_display(account: dict[str, Any]) -> str: name = str(raw_name or "").strip() if name and name not in names: names.append(name) - if names: - return "、".join(names) + return "、".join(names) if names else "-" fallback = str(account.get("routing_group") or "").strip() return fallback or "-" diff --git a/tests/test_payload.py b/tests/test_payload.py index 7413bdc..eb97bf0 100644 --- a/tests/test_payload.py +++ b/tests/test_payload.py @@ -282,6 +282,7 @@ class Sub2APIQuotaTUITests(unittest.TestCase): self.assertEqual(rows["oai-quota-unknown"]["pricing_source"], "-") self.assertEqual(rows["oai-quota-ycy-primary"]["pricing_source"], "ycy") self.assertEqual(rows["oai-quota-ycy-primary"]["pricing_state"], "error") + self.assertIn("error", rows["oai-quota-ycy-primary"]["pricing_fetch"]) self.assertIsNone(rows["oai-quota-ycy-primary"]["pricing_cny"]) self.assertEqual(rows["oai-quota-codeplan--primary"]["pricing_source"], "-") self.assertEqual(rows["oai-quota-codeplan-primary-"]["pricing_source"], "-") @@ -342,6 +343,25 @@ class Sub2APIQuotaTUITests(unittest.TestCase): self.assertIsNone(failed["pricing_cny"]) self.assertIn("upstream_error", failed["pricing_fetch"]) + def test_new_projection_does_not_use_key_group_as_native_group_fallback(self) -> None: + mod = load_module() + rows = mod.normalize_account_rows( + { + "accounts": [ + { + "id": 1, + "name": "ordinary-account", + "routing_group": "key-group", + "account_group_names": [], + "kind": "quota_limited", + } + ] + } + ) + + self.assertEqual(rows[0]["routing_group"], "key-group") + self.assertEqual(rows[0]["groups"], "-") + def test_normalize_pricing_rows_uses_pricing_monitor_source_balances(self) -> None: mod = load_module() payload = { diff --git a/uv.lock b/uv.lock index 39543e4..639d225 100644 --- a/uv.lock +++ b/uv.lock @@ -85,7 +85,7 @@ wheels = [ [[package]] name = "shusub2" -version = "0.3.7" +version = "0.3.8" source = { editable = "." } dependencies = [ { name = "textual" },