From 03a0bea51f09783686947e25f2f173d3ebb66c59 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Tue, 23 Jun 2026 17:04:13 +0800 Subject: [PATCH] Revert "fix: value_mode read from field definition, not filter_item - removed item_value_mode from filters loops (2 places) - check_value(f, fv, dv) now falls back to f.value_mode per field - fixes: filter-level value_mode:between was applied to ALL fields including model (string), causing between parse error on model name" This reverts commit 1e65451da4e97d77dc072113e2d1aab06fda80c0. --- pricing/pricing.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pricing/pricing.py b/pricing/pricing.py index b1826e4..856cc08 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -644,6 +644,7 @@ order by b.enabled_date desc""" if 'unit_prices' in filter_item: continue # tiered定价项,不在此处检查 item_ok = True + item_value_mode = filter_item.get('value_mode') for fk, fv in filter_item.items(): if fk in ('unit_prices', 'value_mode'): continue @@ -655,7 +656,7 @@ order by b.enabled_date desc""" if data_value is None: continue # 数据中没有该键,视为匹配 try: - flg = check_value(f, fv, data_value) + flg = check_value(f, fv, data_value, item_value_mode) if not flg: item_ok = False break @@ -683,6 +684,7 @@ order by b.enabled_date desc""" # 处理 filters 中的区间定价(查找匹配的 unit_prices) if 'filters' in p: for filter_item in p['filters']: + item_value_mode = filter_item.get('value_mode') for fk, fv in filter_item.items(): if fk in ('unit_prices', 'value_mode'): continue @@ -694,7 +696,7 @@ order by b.enabled_date desc""" if data_value is None: continue try: - flg = check_value(f, fv, data_value) + flg = check_value(f, fv, data_value, item_value_mode) if flg and 'unit_prices' in filter_item: unit_price = filter_item['unit_prices'] except: