refactor: centralize QWEN fitment saving via save_qwen_fitment()
- Added save_qwen_fitment() in inventory_vehicle_compat.py to centralize inserting QWEN results into inventory_vehicle_compat - Simplified inventory_bp.py create_item() and auto_match_item_vehicles() to use the centralized function, removing duplicated INSERT logic
This commit is contained in:
@@ -301,23 +301,13 @@ def create_item():
|
||||
if compat_source in ('qwen', 'both'):
|
||||
try:
|
||||
from services.qwen_fitment import get_vehicle_fitment
|
||||
from services.inventory_vehicle_compat import save_qwen_fitment
|
||||
fitment = get_vehicle_fitment(
|
||||
data['part_number'],
|
||||
data['name'],
|
||||
data.get('brand', '')
|
||||
)
|
||||
for v in fitment.get('vehicles', []):
|
||||
if v.get('mye_id'):
|
||||
cur = conn.cursor()
|
||||
cur.execute("""
|
||||
INSERT INTO inventory_vehicle_compat
|
||||
(inventory_id, model_year_engine_id, source, confidence, created_at)
|
||||
VALUES (%s, %s, %s, %s, NOW())
|
||||
ON CONFLICT (inventory_id, model_year_engine_id) DO NOTHING
|
||||
""", (item_id, v['mye_id'], 'qwen_ai', fitment.get('confidence', 0)))
|
||||
cur.close()
|
||||
qwen_added += 1
|
||||
conn.commit()
|
||||
qwen_added = save_qwen_fitment(conn, item_id, fitment)
|
||||
except Exception as qwen_err:
|
||||
print(f"[qwen_fitment] Error for item {item_id}: {qwen_err}")
|
||||
|
||||
@@ -1385,22 +1375,10 @@ def auto_match_item_vehicles(item_id):
|
||||
if compat_source == 'qwen':
|
||||
try:
|
||||
from services.qwen_fitment import get_vehicle_fitment
|
||||
from services.inventory_vehicle_compat import save_qwen_fitment
|
||||
fitment = get_vehicle_fitment(part_number, name, brand)
|
||||
# Insert results
|
||||
inserted = 0
|
||||
cur2 = conn.cursor()
|
||||
for v in fitment.get('vehicles', []):
|
||||
if v.get('mye_id'):
|
||||
cur2.execute("""
|
||||
INSERT INTO inventory_vehicle_compat
|
||||
(inventory_id, model_year_engine_id, source, confidence, created_at)
|
||||
VALUES (%s, %s, %s, %s, NOW())
|
||||
ON CONFLICT (inventory_id, model_year_engine_id) DO NOTHING
|
||||
""", (item_id, v['mye_id'], 'qwen_ai', fitment.get('confidence', 0)))
|
||||
if cur2.rowcount > 0:
|
||||
inserted += 1
|
||||
conn.commit()
|
||||
cur2.close()
|
||||
inserted = save_qwen_fitment(conn, item_id, fitment)
|
||||
conn.close()
|
||||
return jsonify({
|
||||
'matched': inserted > 0,
|
||||
'matches': [],
|
||||
|
||||
@@ -369,3 +369,37 @@ def batch_add_compatibilities(tenant_conn, inventory_id, mye_ids, source='manual
|
||||
tenant_conn.commit()
|
||||
cur.close()
|
||||
return inserted
|
||||
|
||||
|
||||
def save_qwen_fitment(tenant_conn, inventory_id, fitment_result):
|
||||
"""Save QWEN fitment results into inventory_vehicle_compat.
|
||||
|
||||
Args:
|
||||
tenant_conn: Connection to tenant DB.
|
||||
inventory_id: The inventory item ID.
|
||||
fitment_result: Dict from get_vehicle_fitment() with 'vehicles' list.
|
||||
|
||||
Returns:
|
||||
int: Number of compatibilities inserted.
|
||||
"""
|
||||
vehicles = fitment_result.get('vehicles', [])
|
||||
if not vehicles:
|
||||
return 0
|
||||
|
||||
inserted = 0
|
||||
cur = tenant_conn.cursor()
|
||||
for v in vehicles:
|
||||
mye_id = v.get('mye_id')
|
||||
if not mye_id:
|
||||
continue
|
||||
cur.execute("""
|
||||
INSERT INTO inventory_vehicle_compat
|
||||
(inventory_id, model_year_engine_id, source, confidence, created_at)
|
||||
VALUES (%s, %s, 'qwen_ai', %s, NOW())
|
||||
ON CONFLICT (inventory_id, model_year_engine_id) DO NOTHING
|
||||
""", (inventory_id, mye_id, fitment_result.get('confidence', 0)))
|
||||
if cur.rowcount > 0:
|
||||
inserted += 1
|
||||
tenant_conn.commit()
|
||||
cur.close()
|
||||
return inserted
|
||||
|
||||
Reference in New Issue
Block a user