diff --git a/pricing/pricing.py b/pricing/pricing.py index be3485f..a21fd29 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -983,9 +983,16 @@ async def get_pricing_program_timeing(pptid): return ppt async def test_pricing(pptid, data): - ppt = await get_pricing_program_timeing(pptid) - # ppt.pricing_data 已被 ppt_db2app 解析为 dict,需要转回 YAML 字符串 - yamlstr = yaml.dump(ppt.pricing_data, allow_unicode=True) if isinstance(ppt.pricing_data, dict) else ppt.pricing_data + # 直接从 DB 获取原始 pricing_data(不调用 ppt_db2app),避免 DictObject 序列化问题 + env = ServerEnv() + async with get_sor_context(env, 'pricing') as sor: + recs = await sor.R('pricing_program_timing', {'id': pptid}) + if len(recs) == 0: + return None + ppt = recs[0] + if ppt.pricing_data is None: + return None + yamlstr = ppt.pricing_data # 原始 YAML 字符串 prices = PricingProgram.get_pricing_from_ymalstr(data, yamlstr) if prices is None: return None