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'):
|
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': [],
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user