Commit 8c52a45d authored by Vũ Hoàng Anh's avatar Vũ Hoàng Anh

fix(agent): update product search magento_ref_code logic and prompt

parent 1929f6fe
...@@ -166,7 +166,7 @@ def format_product_results(products: list[dict]) -> list[dict]: ...@@ -166,7 +166,7 @@ def format_product_results(products: list[dict]) -> list[dict]:
else: else:
# New product - use first color's URL/thumbnail as default # New product - use first color's URL/thumbnail as default
product_entry = { product_entry = {
"sku": base_sku, "sku": magento_ref,
"sku_color": product_color_code, "sku_color": product_color_code,
"name": _neutralize_generic_print(name), "name": _neutralize_generic_print(name),
"color": color_name, # First color as default "color": color_name, # First color as default
......
...@@ -39,7 +39,7 @@ Bạn PHẢI trả về JSON thuần túy, KHÔNG ĐƯỢC wrap trong markdown b ...@@ -39,7 +39,7 @@ Bạn PHẢI trả về JSON thuần túy, KHÔNG ĐƯỢC wrap trong markdown b
```json ```json
{{ {{
"ai_response": "Câu trả lời ngắn gọn, KHÔNG chứa mã SKU — frontend tự render product card từ product_ids", "ai_response": "Câu trả lời ngắn gọn, KHÔNG chứa mã SKU — frontend tự render product card từ product_ids",
"product_ids": ["8TS24W001", "8TS24W002"], // LƯU Ý: CHỈ LẤY 9 KÝ TỰ ĐẦU TIÊN (MÃ TỔNG). Kể cả data là 6TS25A001-SN010 thì CẤM output nguyên cục, CHỈ CẮT LẤY "6TS25A001". "product_ids": ["8TS24W001", "8TS26S008-SA718"],
"user_insight": {{ "user_insight": {{
"USER": "...", "USER": "...",
"TARGET": "...", "TARGET": "...",
...@@ -53,7 +53,7 @@ Bạn PHẢI trả về JSON thuần túy, KHÔNG ĐƯỢC wrap trong markdown b ...@@ -53,7 +53,7 @@ Bạn PHẢI trả về JSON thuần túy, KHÔNG ĐƯỢC wrap trong markdown b
``` ```
**LƯU Ý:** **LƯU Ý:**
- `product_ids`: **BẮT BUỘC CHỈ ĐƯỢC CHỨA MÃ TỔNG (9 KÝ TỰ - VD: 6TS25A001)**. Nếu data có đuôi cắt ngang (VD: 6TS25A001-SN010) thì bạn PHẢI TỰ CẮT BỎ CÁI ĐUÔI ĐÓ ĐI, KHÔNG ĐƯỢC OUTPUT MÃ MÀU RA ĐÂY! - `product_ids`: **LẤY ĐÚNG NGUYÊN GIÁ TRỊ trường `sku` từ data tool trả về**. KHÔNG cắt xén, KHÔNG thêm bớt, KHÔNG bịa mã! Mã này có thể ngắn (VD: `1BK25S001`) hoặc dài kèm màu (VD: `8TS26S008-SA718`) tùy sản phẩm — cứ lấy nguyên xi.
- `user_insight` theo đúng format 6 tầng như mục 8 - `user_insight` theo đúng format 6 tầng như mục 8
- **LUÔN DÙNG NGOẶC KÉP `{{` và `}}` CHO JSON** - **LUÔN DÙNG NGOẶC KÉP `{{` và `}}` CHO JSON**
......
...@@ -2,8 +2,6 @@ import logging ...@@ -2,8 +2,6 @@ import logging
import os import os
import time import time
# Note: tracing handled by parent data_retrieval_tool via context manager
from common.embedding_service import create_embedding_async from common.embedding_service import create_embedding_async
...@@ -125,15 +123,15 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None) ...@@ -125,15 +123,15 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None)
sql_params = [magento_code, magento_code, magento_code] sql_params = [magento_code, magento_code, magento_code]
extra_where = "" extra_where = ""
# GHI CHÚ QUAN TRỌNG: # GHI CHÚ:
# KHÔNG filter cứng master_color ở cấp độ SQL khi tìm kiếm CHÍNH XÁC THEO MÃ (Code Search). # Subquery dò gốc internal_ref_code từ bất kỳ mã nào (tổng/màu/size).
# Lý do: Nếu mã tồn tại nhưng màu bị filter ra rỗng, AI sẽ nhận kq rỗng và bảo "Sản phẩm không tồn tại". # Nếu khách có kèm màu → filter thêm ở vòng ngoài (master_color LIKE).
# Thay vào đó, ta thả nổi để lấy vể TẤT CẢ các màu hiện có của mã đó. # Nếu không kèm màu → trả hết tất cả biến thể màu cho AI tự chọn.
# AI (với system prompt) sẽ tự check dict trả về:
# "À, mã này có màu Xanh, Đỏ nhưng không có màu Hồng như khách hỏi. Mình sẽ báo cho khách chuyển màu."
color_val = getattr(params, "master_color", None) color_val = getattr(params, "master_color", None)
if color_val: if color_val:
logger.info(f"🎨 [CODE SEARCH - NO SQL FILTER] Code: {magento_code}, Requested Color: {color_val}") extra_where = " AND LOWER(master_color) LIKE %s"
sql_params.append(f"%{color_val.lower()}%")
logger.info(f"🎨 [CODE SEARCH + COLOR FILTER] Code: {magento_code}, Color: {color_val}")
sql = f""" sql = f"""
SELECT SELECT
...@@ -178,9 +176,6 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None) ...@@ -178,9 +176,6 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None)
# Metadata filters (gender + age) # Metadata filters (gender + age)
where_clauses = _get_metadata_clauses(params, sql_params) where_clauses = _get_metadata_clauses(params, sql_params)
# Price filters # Price filters
where_clauses.extend(_get_price_clauses(params, sql_params)) where_clauses.extend(_get_price_clauses(params, sql_params))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment