fix: migrate legacy usage column prefs

This commit is contained in:
2026-07-07 11:46:28 +08:00
parent f12f6de523
commit c5fa238598
2 changed files with 38 additions and 23 deletions
+32 -23
View File
@@ -257,16 +257,24 @@ def request_table_column_key(value: Any) -> str:
return REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "") return REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "")
def request_table_column_keys(value: Any) -> list[str]:
token = request_table_column_token(value)
if token == "usage":
return ["in", "out", "cache"]
column_key = REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "")
return [column_key] if column_key else []
def request_table_column_order(value: Any) -> list[str]: def request_table_column_order(value: Any) -> list[str]:
requested = value if isinstance(value, (list, tuple, set)) else [] requested = value if isinstance(value, (list, tuple, set)) else []
columns = [] columns = []
seen: set[str] = set() seen: set[str] = set()
for item in requested: for item in requested:
column_key = request_table_column_key(item) for column_key in request_table_column_keys(item):
if not column_key or column_key in seen: if not column_key or column_key in seen:
continue continue
columns.append(column_key) columns.append(column_key)
seen.add(column_key) seen.add(column_key)
for column_key in REQUEST_TABLE_COLUMN_KEYS: for column_key in REQUEST_TABLE_COLUMN_KEYS:
if column_key not in seen: if column_key not in seen:
columns.append(column_key) columns.append(column_key)
@@ -279,11 +287,11 @@ def request_table_hidden_columns(value: Any, columns: list[str]) -> list[str]:
hidden = [] hidden = []
seen: set[str] = set() seen: set[str] = set()
for item in requested: for item in requested:
column_key = request_table_column_key(item) for column_key in request_table_column_keys(item):
if not column_key or column_key not in allowed or column_key in seen: if not column_key or column_key not in allowed or column_key in seen:
continue continue
hidden.append(column_key) hidden.append(column_key)
seen.add(column_key) seen.add(column_key)
return hidden return hidden
@@ -300,11 +308,11 @@ def normalize_request_table_preferences(data: Any) -> dict[str, Any]:
legacy_visible = [] legacy_visible = []
seen: set[str] = set() seen: set[str] = set()
for item in source.get("visible_columns") or []: for item in source.get("visible_columns") or []:
column_key = request_table_column_key(item) for column_key in request_table_column_keys(item):
if not column_key or column_key in seen: if not column_key or column_key in seen:
continue continue
legacy_visible.append(column_key) legacy_visible.append(column_key)
seen.add(column_key) seen.add(column_key)
columns = request_table_column_order(legacy_visible) columns = request_table_column_order(legacy_visible)
hidden_columns = [column_key for column_key in columns if column_key not in seen] hidden_columns = [column_key for column_key in columns if column_key not in seen]
else: else:
@@ -342,17 +350,18 @@ def request_table_preferences_from_text(text: str) -> dict[str, Any]:
token = token[1:].strip() token = token[1:].strip()
if not token: if not token:
continue continue
column_key = request_table_column_key(token) column_keys = request_table_column_keys(token)
if not column_key: if not column_keys:
if hidden: if hidden:
continue continue
raise ValueError(f"line {line_number}: unknown request column {token!r}") raise ValueError(f"line {line_number}: unknown request column {token!r}")
if column_key in seen: for column_key in column_keys:
continue if column_key in seen:
seen.add(column_key) continue
columns.append(column_key) seen.add(column_key)
if hidden: columns.append(column_key)
hidden_columns.append(column_key) if hidden:
hidden_columns.append(column_key)
if not columns: if not columns:
raise ValueError("no request columns found in editor document") raise ValueError("no request columns found in editor document")
missing = [column_key for column_key in REQUEST_TABLE_COLUMN_KEYS if column_key not in seen] missing = [column_key for column_key in REQUEST_TABLE_COLUMN_KEYS if column_key not in seen]
+6
View File
@@ -298,6 +298,12 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
self.assertEqual(prefs["columns"][:6], ["thread", "seq", "cache", "in", "out", "req_id"]) self.assertEqual(prefs["columns"][:6], ["thread", "seq", "cache", "in", "out", "req_id"])
self.assertIn("cache", prefs["hidden_columns"]) self.assertIn("cache", prefs["hidden_columns"])
def test_request_table_preferences_expand_legacy_usage_column(self) -> None:
mod = load_module()
prefs = mod.normalize_request_table_preferences({"visible_columns": ["seq", "usage", "status"]})
self.assertEqual(prefs["columns"][:5], ["seq", "in", "out", "cache", "status"])
self.assertEqual(prefs["hidden_columns"][:3], ["req_id", "resp_id", "thread"])
def test_sort_request_rows_supports_custom_column_and_missing_values(self) -> None: def test_sort_request_rows_supports_custom_column_and_missing_values(self) -> None:
mod = load_module() mod = load_module()
rows = [ rows = [