diff --git a/pricing/pricing.py b/pricing/pricing.py index 98cc0fe..cbc37ee 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -803,7 +803,15 @@ async def get_pricing_display(ppid, model=None): r = await PricingProgram.get_ppid_pricing(ppid) except Exception: return None - pricing_data_str = r.pricing_data + # get_ppid_pricing 缓存命中时返回 dict(Redis JSON 反序列化), + # 未命中时返回 DictObject(sqlor 行对象),两者都要兼容(同 buffered_charging 的处理, + # 2026-09-06 修复:此前缓存命中即抛 AttributeError 致展示价间歇性"定价数据为空")。 + if hasattr(r, 'pricing_data'): + pricing_data_str = r.pricing_data + elif isinstance(r, dict): + pricing_data_str = r.get('pricing_data') + else: + pricing_data_str = r['pricing_data'] d = yaml.safe_load(pricing_data_str) if not d: raise Exception(f'{ppid} pricing_data 为空')