📋 BÁO CÁO VẤN ĐỀ TOOL CHECK TỒN KHO (check_is_stock)
Ngày: 30/03/2026 | VHA

══════════════════════════════════════════════
VẤN ĐỀ 1: DỄ LẪN VỚI TOOL TÌM CỬA HÀNG
══════════════════════════════════════════════

Trong quá trình thử nghiệm, bot dễ bị LẪN giữa 2 tool:
- check_is_stock: check tồn kho ONLINE (canifa.com)
- canifa_store_search: tìm địa chỉ cửa hàng

Khi user hỏi "còn hàng không?" sau khi tìm cửa hàng → bot nhầm tưởng
có thể check tồn TẠI cửa hàng → hallucinate.

VÍ DỤ THỰC TẾ:

  ❌ Case 1:
  User: "Cửa hàng Phúc Yên còn mẫu áo này không?"
  Bot:  "Mình check giúp bạn tại cửa hàng Phúc Yên luôn nhé!"
        → SAI! Tool CHỈ check được online, KHÔNG check được tại cửa hàng

  ❌ Case 2:
  User: "Shop ở Vincom Bà Triệu còn size L không?"
  Bot:  "Để mình kiểm tra tồn kho tại Vincom Bà Triệu cho bạn..."
        → SAI! Không có khả năng check tồn tại shop cụ thể

  ❌ Case 3:
  User: "Tìm cửa hàng gần đây" → Bot trả cửa hàng Hai Bà Trưng
  User: "Vậy ở đó còn mẫu 6TS25S012 không?"
        → Bot gọi check_is_stock → trả "còn hàng"
        → User TƯỞNG cửa hàng Hai Bà Trưng còn hàng
        → Thực tế đó là tồn kho ONLINE, không phải tại shop!

  ❌ Case 4:
  User: "Chỗ nào gần Cầu Giấy bán áo khoác?"
  Bot:  → Tìm cửa hàng → rồi gợi ý "check tồn kho luôn nhé?"
        → User nghĩ bot check được tồn tại shop đó

  ❌ Case 5:
  User: "Áo này ở cửa hàng Lê Văn Lương còn bao nhiêu cái?"
  Bot:  "Trên hệ thống còn 3 cái ạ" (dùng qty từ API online)
        → User hiểu "cửa hàng LVL còn 3 cái" → ĐẾN MUA → HẾT!

  ❌ Case 6:
  User: "Gần nhà mình có shop nào còn size M?"
        → Bot không thể trả lời chính xác vì:
           1) Tìm cửa hàng gần = canifa_store_search (OK)
           2) Check tồn tại shop đó = KHÔNG CÓ TOOL NÀO LÀM ĐƯỢC
        → Bot vẫn có thể hallucinate "shop X còn size M"

Dù đã train prompt cấm → vẫn dễ hallucinate vì 2 tool gần nghĩa nhau,
LLM dễ suy luận sai khi context có nhắc đến cửa hàng.

══════════════════════════════════════════════
VẤN ĐỀ 2: USER ÍT KHI HỎI TỒN KHO
══════════════════════════════════════════════

Thực tế user ít khi hỏi "còn hàng không?" mà thường:
- Xem sản phẩm → bấm link → mua luôn trên web
- Hoặc hỏi "size nào?" (đã có sẵn trong data_retrieval_tool)

→ Tool này ít được dùng nhưng khi dùng lại dễ sinh lỗi.
  Tỷ lệ dùng thấp + tỷ lệ hallucinate cao = ROI kém.

══════════════════════════════════════════════
VẤN ĐỀ 3: API CHỈ TRẢ MÃ MÀU, KHÔNG TRẢ TÊN MÀU
══════════════════════════════════════════════

Khi gọi API stock với SKU "6TO25W001", API trả về:

  6TO25W001-SK010-S   → còn hàng (3 cái)
  6TO25W001-SK010-M   → còn hàng (1 cái)
  6TO25W001-SK010-L   → còn hàng (2 cái)
  6TO25W001-SK010-XL  → hết hàng

"SK010" là MÃ MÀU → nhưng bot KHÔNG BIẾT SK010 = màu gì!

VÍ DỤ THỰC TẾ:
  User: "Mẫu 6TO25W001 còn màu nâu không?"
  Bot:  "Dạ màu NÂU còn hàng size S, M, L ạ!"
        → SAI! SK010 = Đen/Black, KHÔNG PHẢI Nâu!
        → Bot thấy user hỏi "nâu" + API trả "còn hàng" → tự khẳng định là nâu

Đã thử fix bằng cách query DB lấy tên màu → nhưng thêm dependency,
dễ gây lỗi runtime. Đã revert, tạm dùng prompt cấm bịa tên màu.

══════════════════════════════════════════════
ĐỀ XUẤT: BỎ TOOL CHECK TỒN Ở VERSION SAU
══════════════════════════════════════════════

Lý do đề xuất bỏ:
1. Tỷ lệ dùng thấp — user hiếm khi hỏi "còn hàng không?"
2. Tỷ lệ hallucinate cao — dù train prompt vẫn sai ~20%
3. Dễ lẫn với tool cửa hàng — 2 tool gần nghĩa, LLM khó phân biệt
4. API thiếu data — chỉ trả mã màu, bot phải đoán → sai
5. Giảm token cost — bớt 1 tool = bớt ~4,700 chars trong prompt
6. Giảm độ phức tạp — bot ít tool hơn → routing chính xác hơn

Thay thế bằng:
→ data_retrieval_tool đã có sẵn field "size_scale" (danh sách size)
→ User muốn mua → bấm link → web Canifa tự hiển thị tồn kho real-time
→ Bot chỉ cần gợi ý: "Bạn bấm vào link để xem chi tiết size + tồn kho nhé"
