版本变更V3.35将图像的处理统一更换到新表当中
This commit is contained in:
@ -561,13 +561,20 @@ class MaterialBaseService:
|
||||
db.session.add(new_material)
|
||||
db.session.flush() # 获取 new_material.id
|
||||
|
||||
# 提取产品图向量到独立表(失败不影响业务)
|
||||
# 先提交主事务,图片向量异步后台提取
|
||||
db.session.commit()
|
||||
|
||||
image_list = data.get('generalImage', [])
|
||||
if isinstance(image_list, list) and image_list:
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE, new_material.id, image_list
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE,
|
||||
new_material.id,
|
||||
image_list
|
||||
)
|
||||
db.session.commit()
|
||||
return new_material
|
||||
|
||||
except Exception as e:
|
||||
@ -597,10 +604,17 @@ class MaterialBaseService:
|
||||
if 'generalImage' in data:
|
||||
new_photo_list = data['generalImage']
|
||||
material.product_image = json.dumps(new_photo_list)
|
||||
# 保存向量到独立表(全量替换)
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE, material.id, new_photo_list
|
||||
)
|
||||
# 立即触发异步向量提取,不阻塞主事务提交
|
||||
if isinstance(new_photo_list, list) and new_photo_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE,
|
||||
material.id,
|
||||
new_photo_list
|
||||
)
|
||||
else:
|
||||
material.product_image = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
|
||||
@ -183,13 +183,20 @@ class BuyInboundService:
|
||||
db.session.add(new_stock)
|
||||
db.session.flush() # 获取 new_stock.id
|
||||
|
||||
# 提取到货图片向量到新表(失败不影响业务)
|
||||
# 先提交主事务(入库单必须落盘),图片向量异步后台提取
|
||||
db.session.commit()
|
||||
|
||||
photo_list = data.get('arrival_photo', [])
|
||||
if isinstance(photo_list, list) and photo_list:
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_BUY, new_stock.id, photo_list
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_BUY,
|
||||
new_stock.id,
|
||||
photo_list
|
||||
)
|
||||
db.session.commit()
|
||||
return new_stock
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
@ -254,10 +261,17 @@ class BuyInboundService:
|
||||
if 'arrival_photo' in data:
|
||||
new_photo_list = data['arrival_photo']
|
||||
stock.arrival_photo = json.dumps(new_photo_list)
|
||||
# 保存向量到独立表(全量替换)
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_BUY, stock.id, new_photo_list
|
||||
)
|
||||
# 立即触发异步向量提取,不阻塞主事务提交
|
||||
if isinstance(new_photo_list, list) and new_photo_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_BUY,
|
||||
stock.id,
|
||||
new_photo_list
|
||||
)
|
||||
else:
|
||||
stock.arrival_photo = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
|
||||
@ -189,12 +189,19 @@ class ProductInboundService:
|
||||
db.session.add(new_stock)
|
||||
db.session.flush() # 获取 new_stock.id
|
||||
|
||||
# 提取产品图片向量到独立表(失败不影响业务)
|
||||
if isinstance(photo_list, list) and photo_list:
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT, new_stock.id, photo_list
|
||||
)
|
||||
# 先提交主事务,图片向量异步后台提取
|
||||
db.session.commit()
|
||||
|
||||
if isinstance(photo_list, list) and photo_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT,
|
||||
new_stock.id,
|
||||
photo_list
|
||||
)
|
||||
return new_stock
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
@ -225,10 +232,17 @@ class ProductInboundService:
|
||||
if 'product_photo' in data:
|
||||
new_photo_list = data['product_photo']
|
||||
stock.product_photo = json.dumps(new_photo_list)
|
||||
# 保存向量到独立表(全量替换)
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT, stock.id, new_photo_list
|
||||
)
|
||||
# 立即触发异步向量提取,不阻塞主事务提交
|
||||
if isinstance(new_photo_list, list) and new_photo_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT,
|
||||
stock.id,
|
||||
new_photo_list
|
||||
)
|
||||
else:
|
||||
stock.product_photo = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
|
||||
@ -226,12 +226,19 @@ class SemiInboundService:
|
||||
db.session.add(new_stock)
|
||||
db.session.flush() # 获取 new_stock.id
|
||||
|
||||
# 提取到货图片向量到独立表(失败不影响业务)
|
||||
if isinstance(arrival_list, list) and arrival_list:
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_SEMI, new_stock.id, arrival_list
|
||||
)
|
||||
# 先提交主事务,图片向量异步后台提取
|
||||
db.session.commit()
|
||||
|
||||
if isinstance(arrival_list, list) and arrival_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_SEMI,
|
||||
new_stock.id,
|
||||
arrival_list
|
||||
)
|
||||
return new_stock
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
@ -280,10 +287,17 @@ class SemiInboundService:
|
||||
if 'arrival_photo' in data:
|
||||
new_photo_list = data['arrival_photo']
|
||||
stock.arrival_photo = json.dumps(new_photo_list)
|
||||
# 保存向量到独立表(全量替换)
|
||||
ImageEmbeddingService.save_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_SEMI, stock.id, new_photo_list
|
||||
)
|
||||
# 立即触发异步向量提取,不阻塞主事务提交
|
||||
if isinstance(new_photo_list, list) and new_photo_list:
|
||||
from flask import current_app
|
||||
from app.utils.executor import run_embedding_task
|
||||
run_embedding_task(
|
||||
ImageEmbeddingService.save_embeddings_background,
|
||||
current_app._get_current_object(),
|
||||
ImageEmbeddingService.MODULE_STOCK_SEMI,
|
||||
stock.id,
|
||||
new_photo_list
|
||||
)
|
||||
else:
|
||||
stock.arrival_photo = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
|
||||
Reference in New Issue
Block a user