From 38ff69ca556095a4876beb0ea4d2d6b99d495733 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 5 Jun 2026 18:34:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80pricing=5Fdisplay?= =?UTF-8?q?,=20tiered=E5=8F=AA=E4=BF=9D=E7=95=99=E6=9C=89=E6=84=8F?= =?UTF-8?q?=E4=B9=89filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 过滤内部参数: value_mode, xxx_tokens 区间条件不展示 - tiered 只保留 model 等有意义的 filter key - display_text 去掉冗余 prefix --- pricing/pricing.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pricing/pricing.py b/pricing/pricing.py index 5a23b7a..ee0292a 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -856,17 +856,22 @@ async def get_pricing_display(ppid): 'unit_label': unit_label }] - # 处理 filters 区间定价 + # 处理 filters 区间定价 - 只保留有意义的 filter(如 model) if 'filters' in p: tiered_pricing = [] for fi in p['filters']: fi_copy = fi.copy() raw_tier_price = fi.get('unit_prices', unit_price) fi_copy.pop('unit_prices', None) - tiered_pricing.append({ - 'filters': fi_copy, - 'unit_prices': raw_tier_price # 新格式已是展示价 - }) + fi_copy.pop('value_mode', None) # 内部参数不展示 + # 只保留有意义的 filter key + meaningful_filters = {k: v for k, v in fi_copy.items() + if not k.endswith('_tokens') and k != 'value_mode'} + if meaningful_filters: # 有 model 等有意义 filter 才加 tiered + tiered_pricing.append({ + 'filters': meaningful_filters, + 'unit_prices': raw_tier_price + }) if tiered_pricing: price_factors_display[0]['tiered'] = tiered_pricing @@ -906,16 +911,12 @@ async def get_pricing_display(ppid): # 生成可读价格表 display_lines = [f"【{getattr(r, 'name', '')}】定价:"] for item in items: - prefix = '' - if item.get('filter_labels'): - labels = ', '.join(f"{k}: {v}" for k, v in item['filter_labels'].items()) - prefix = f" ({labels})" for pf in item.get('price_factors', []): label = pf.get('label', pf.get('factor', '')) up = pf.get('unit_price') ul = pf.get('unit_label', '') if up is not None: - display_lines.append(f" - {label}: {up} {ul}{prefix}") + display_lines.append(f" - {label}: {up} {ul}") if pf.get('tiered'): for t in pf['tiered']: t_filters = ', '.join(f"{k}={v}" for k, v in t.get('filters', {}).items())