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]:
else:
# New product - use first color's URL/thumbnail as default
product_entry = {
"sku": base_sku,
"sku": magento_ref,
"sku_color": product_color_code,
"name": _neutralize_generic_print(name),
"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
```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",
"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": "...",
"TARGET": "...",
......@@ -53,7 +53,7 @@ Bạn PHẢI trả về JSON thuần túy, KHÔNG ĐƯỢC wrap trong markdown b
```
**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
- **LUÔN DÙNG NGOẶC KÉP `{{` và `}}` CHO JSON**
......
......@@ -2,8 +2,6 @@ import logging
import os
import time
# Note: tracing handled by parent data_retrieval_tool via context manager
from common.embedding_service import create_embedding_async
......@@ -125,15 +123,15 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None)
sql_params = [magento_code, magento_code, magento_code]
extra_where = ""
# GHI CHÚ QUAN TRỌNG:
# KHÔNG filter cứng master_color ở cấp độ SQL khi tìm kiếm CHÍNH XÁC THEO MÃ (Code Search).
# 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".
# Thay vào đó, ta thả nổi để lấy vể TẤT CẢ các màu hiện có của mã đó.
# 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."
# GHI CHÚ:
# Subquery dò gốc internal_ref_code từ bất kỳ mã nào (tổng/màu/size).
# Nếu khách có kèm màu → filter thêm ở vòng ngoài (master_color LIKE).
# Nếu không kèm màu → trả hết tất cả biến thể màu cho AI tự chọn.
color_val = getattr(params, "master_color", None)
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"""
SELECT
......@@ -157,7 +155,7 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None)
1.0 as similarity_score
FROM shared_source.magento_product_dimension_with_text_embedding
WHERE internal_ref_code IN (
SELECT internal_ref_code
SELECT internal_ref_code
FROM shared_source.magento_product_dimension_with_text_embedding
WHERE internal_ref_code = %s OR magento_ref_code = %s OR product_color_code = %s
){extra_where}
......@@ -178,9 +176,6 @@ async def build_starrocks_query(params, query_vector: list[float] | None = None)
# Metadata filters (gender + age)
where_clauses = _get_metadata_clauses(params, sql_params)
# Price filters
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