Fix: Handle list mapping in process_packages_breakdown to resolve unhashable type error

This commit is contained in:
kim
2026-01-29 18:03:41 +08:00
parent d696c92879
commit 2ceec7f1c6
+22 -4
View File
@@ -569,22 +569,40 @@ def process_packages_breakdown(packages):
raw_code = pkg.get("ConfigurationCode", "") raw_code = pkg.get("ConfigurationCode", "")
raw_name = pkg.get("ConfigurationName", "Unknown") raw_name = pkg.get("ConfigurationName", "Unknown")
target_raw = raw_code if raw_code else raw_name target_raw = raw_code if raw_code else raw_name
model_name = normalize_volc_name(target_raw)
# 1. Normalize name (strips suffixes, handles case/hyphens)
norm_result = normalize_volc_name(target_raw)
available = pkg.get("AvailableAmount", 0) available = pkg.get("AvailableAmount", 0)
unit = pkg.get("Unit", "token") unit = pkg.get("Unit", "token")
# Debug log to trace mapping # 2. Handle 1-to-many mapping (e.g. doubao-seed-1-6 -> [v1, v2])
if DEBUG_MODE or "glm" in model_name or "doubao" in model_name: target_models = []
if isinstance(norm_result, list):
target_models = norm_result
else:
target_models = [norm_result]
# Debug log
if (
DEBUG_MODE
or "doubao" in str(target_models)
or "glm" in str(target_models)
):
print( print(
f"DEBUG: Pkg Raw='{target_raw}' -> Norm='{model_name}', Avail={available}", f"DEBUG: Pkg Raw='{target_raw}' -> Norm='{norm_result}', Avail={available}",
flush=True, flush=True,
) )
if unit.lower() == "token": if unit.lower() == "token":
for model_name in target_models:
if model_name == "unknown":
continue
# Aggregate balances
model_counts[model_name] = model_counts.get(model_name, 0) + int( model_counts[model_name] = model_counts.get(model_name, 0) + int(
available available
) )
except Exception as e: except Exception as e:
print(f"Error processing package: {e}") print(f"Error processing package: {e}")
continue continue