版本变更V3.34将图像的处理统一更换到新表当中
This commit is contained in:
@ -9,7 +9,9 @@ from sqlalchemy import or_, func, text, and_
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
import traceback
|
||||
import json
|
||||
import numpy as np
|
||||
from app.utils.ai_vision import extract_and_embed
|
||||
from app.services.image_embedding_service import ImageEmbeddingService
|
||||
|
||||
|
||||
class ProductInboundService:
|
||||
@ -184,10 +186,14 @@ class ProductInboundService:
|
||||
sale_price=float(data.get('sale_price') or 0),
|
||||
order_id=data.get('order_id')
|
||||
)
|
||||
# 实时提取成品实拍图向量(失败不影响业务)
|
||||
if new_stock.product_photo:
|
||||
new_stock.arrival_image_embedding = extract_and_embed(new_stock.product_photo)
|
||||
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()
|
||||
return new_stock
|
||||
except Exception as e:
|
||||
@ -217,10 +223,17 @@ class ProductInboundService:
|
||||
if f in data: setattr(stock, f, data[f])
|
||||
|
||||
if 'product_photo' in data:
|
||||
imgs = data['product_photo']
|
||||
if isinstance(imgs, list): stock.product_photo = json.dumps(imgs)
|
||||
if stock.product_photo:
|
||||
stock.arrival_image_embedding = extract_and_embed(stock.product_photo)
|
||||
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
|
||||
)
|
||||
else:
|
||||
stock.product_photo = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT, stock.id
|
||||
)
|
||||
if 'quality_report_link' in data:
|
||||
imgs = data['quality_report_link']
|
||||
if isinstance(imgs, list): stock.quality_report_link = json.dumps(imgs)
|
||||
@ -261,8 +274,11 @@ class ProductInboundService:
|
||||
try:
|
||||
stock = StockProduct.query.get(stock_id)
|
||||
if stock:
|
||||
# 提前获取物料名称用于审计日志(通过外键关系 base.name 获取)
|
||||
material_name = stock.base.name if stock.base else '未知物料'
|
||||
# 删除时同步清理向量记录
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
ImageEmbeddingService.MODULE_STOCK_PRODUCT, stock.id
|
||||
)
|
||||
db.session.delete(stock)
|
||||
db.session.commit()
|
||||
return material_name
|
||||
|
||||
Reference in New Issue
Block a user