feat: derive tuhui title from image analysis
This commit is contained in:
@@ -79,6 +79,9 @@ def _build_processing_prompt(intent: str, requirement_text: str, analysis: Dict)
|
||||
|
||||
def _build_upload_title(intent: str, analysis: Dict, requirement_text: str, idx: int) -> str:
|
||||
analysis = analysis or {}
|
||||
suggested = _safe_name(str(analysis.get("title_suggest") or ""), "")
|
||||
if suggested:
|
||||
return f"{suggested}_{idx}"
|
||||
subject = _safe_name(str(analysis.get("subject") or ""), "")
|
||||
proc_type = _safe_name(str(analysis.get("proc_type") or ""), "")
|
||||
requirement = _safe_name(str(requirement_text or ""), "")
|
||||
|
||||
@@ -68,6 +68,26 @@ ANALYSIS_PROMPT = """你是一个电商图片处理评估专家。
|
||||
"""
|
||||
|
||||
|
||||
def _sanitize_title_part(text: str) -> str:
|
||||
value = str(text or "").strip()
|
||||
value = value.replace("/", "_").replace("\\", "_")
|
||||
value = " ".join(value.split())
|
||||
return value[:20]
|
||||
|
||||
|
||||
def _build_title_suggest(subject: str, proc_type: str, customer_requirement: str) -> str:
|
||||
subject_part = _sanitize_title_part(subject)
|
||||
proc_part = _sanitize_title_part(proc_type)
|
||||
req_part = _sanitize_title_part(customer_requirement)
|
||||
|
||||
parts = [part for part in (subject_part, proc_part) if part]
|
||||
if parts:
|
||||
return "_".join(parts[:2])
|
||||
if req_part:
|
||||
return req_part
|
||||
return "图片识别结果"
|
||||
|
||||
|
||||
class ImageAnalyzerService:
|
||||
"""图片分析服务 - 后台静默运行,不影响主流程"""
|
||||
|
||||
@@ -128,6 +148,7 @@ class ImageAnalyzerService:
|
||||
"perspective": no|mild|strong,
|
||||
"aspect_ratio": 比例,
|
||||
"gemini_prompt": 处理提示词,
|
||||
"title_suggest": 推荐标题,
|
||||
"note": 备注,
|
||||
"price_suggest": 建议价格,
|
||||
"width": 宽度,
|
||||
@@ -182,6 +203,11 @@ class ImageAnalyzerService:
|
||||
|
||||
result = self._parse_result(image_url, content)
|
||||
result["customer_requirement"] = customer_requirement
|
||||
result["title_suggest"] = _build_title_suggest(
|
||||
result.get("subject", ""),
|
||||
result.get("proc_type", ""),
|
||||
customer_requirement,
|
||||
)
|
||||
result["elapsed"] = round(elapsed, 2)
|
||||
|
||||
# 获取尺寸
|
||||
@@ -280,6 +306,11 @@ class ImageAnalyzerService:
|
||||
"difficulty": extract("难点", ""),
|
||||
"suggest_method": extract("建议方案", "AI处理"),
|
||||
"gemini_prompt": extract("提示词"),
|
||||
"title_suggest": _build_title_suggest(
|
||||
extract("主体"),
|
||||
extract("类型"),
|
||||
"",
|
||||
),
|
||||
"note": extract("备注"),
|
||||
"price_min": price_min,
|
||||
"price_max": price_max,
|
||||
@@ -320,6 +351,7 @@ class ImageAnalyzerService:
|
||||
"difficulty": "",
|
||||
"suggest_method": "",
|
||||
"gemini_prompt": "",
|
||||
"title_suggest": "图片识别结果",
|
||||
"note": "",
|
||||
"price_min": 15,
|
||||
"price_max": 20,
|
||||
|
||||
Reference in New Issue
Block a user