diff --git a/services/service_auto_image_pipeline.py b/services/service_auto_image_pipeline.py index 802f7f1..65bcdae 100644 --- a/services/service_auto_image_pipeline.py +++ b/services/service_auto_image_pipeline.py @@ -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 ""), "") diff --git a/services/service_image_analyzer.py b/services/service_image_analyzer.py index bd371fd..35e74b7 100644 --- a/services/service_image_analyzer.py +++ b/services/service_image_analyzer.py @@ -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,