版本变更V3.34将图像的处理统一更换到新表当中
This commit is contained in:
@ -12,7 +12,9 @@ import traceback
|
||||
import json
|
||||
import io
|
||||
import datetime
|
||||
import numpy as np
|
||||
from app.utils.ai_vision import extract_and_embed
|
||||
from app.services.image_embedding_service import ImageEmbeddingService
|
||||
# 需要 pip install openpyxl
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill
|
||||
@ -556,10 +558,15 @@ class MaterialBaseService:
|
||||
product_image=json.dumps(data.get('generalImage', [])),
|
||||
is_enabled=is_enabled_val
|
||||
)
|
||||
# 实时提取产品图向量(失败不影响业务)
|
||||
if new_material.product_image:
|
||||
new_material.img_embedding = extract_and_embed(new_material.product_image)
|
||||
db.session.add(new_material)
|
||||
db.session.flush() # 获取 new_material.id
|
||||
|
||||
# 提取产品图向量到独立表(失败不影响业务)
|
||||
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
|
||||
)
|
||||
db.session.commit()
|
||||
return new_material
|
||||
|
||||
@ -588,11 +595,17 @@ class MaterialBaseService:
|
||||
if 'generalManual' in data:
|
||||
material.manual_link = json.dumps(data['generalManual'])
|
||||
if 'generalImage' in data:
|
||||
material.product_image = json.dumps(data['generalImage'])
|
||||
|
||||
# 补上这两行:提取新上传图片的向量!
|
||||
if material.product_image:
|
||||
material.img_embedding = extract_and_embed(material.product_image)
|
||||
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
|
||||
)
|
||||
else:
|
||||
material.product_image = None
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE, material.id
|
||||
)
|
||||
|
||||
# 【核心修改】:兼容前端传来的布尔值
|
||||
if 'isEnabled' in data:
|
||||
@ -659,6 +672,10 @@ class MaterialBaseService:
|
||||
f"请先清理相关库存或仅‘禁用’此条目。"
|
||||
)
|
||||
|
||||
# 删除时同步清理向量记录
|
||||
ImageEmbeddingService.delete_embeddings(
|
||||
ImageEmbeddingService.MODULE_MATERIAL_BASE, material.id
|
||||
)
|
||||
db.session.delete(material)
|
||||
db.session.commit()
|
||||
return material_name
|
||||
|
||||
Reference in New Issue
Block a user