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:
2026-05-01 07:03:04 +00:00
parent af7b010e55
commit 371d72887e
2 changed files with 39 additions and 27 deletions

View File

@@ -301,23 +301,13 @@ def create_item():
if compat_source in ('qwen', 'both'): if compat_source in ('qwen', 'both'):
try: try:
from services.qwen_fitment import get_vehicle_fitment from services.qwen_fitment import get_vehicle_fitment
from services.inventory_vehicle_compat import save_qwen_fitment
fitment = get_vehicle_fitment( fitment = get_vehicle_fitment(
data['part_number'], data['part_number'],
data['name'], data['name'],
data.get('brand', '') data.get('brand', '')
) )
for v in fitment.get('vehicles', []): qwen_added = save_qwen_fitment(conn, item_id, fitment)
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()
except Exception as qwen_err: except Exception as qwen_err:
print(f"[qwen_fitment] Error for item {item_id}: {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': if compat_source == 'qwen':
try: try:
from services.qwen_fitment import get_vehicle_fitment 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) fitment = get_vehicle_fitment(part_number, name, brand)
# Insert results inserted = save_qwen_fitment(conn, item_id, fitment)
inserted = 0 conn.close()
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()
return jsonify({ return jsonify({
'matched': inserted > 0, 'matched': inserted > 0,
'matches': [], 'matches': [],

View File

@@ -369,3 +369,37 @@ def batch_add_compatibilities(tenant_conn, inventory_id, mye_ids, source='manual
tenant_conn.commit() tenant_conn.commit()
cur.close() cur.close()
return inserted 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