# D:\cnf\chatbot-canifa-feedback\.agent\workflows\fashion-rules-verification.md
# Fashion Rules Verification Loop

## Mục đích
Tự động hóa việc kiểm thử hàng loạt (batch testing) các luật phối đồ (fashion rules) trên danh mục sản phẩm. Đảm bảo rằng Engine recommend các sản phẩm chính xác theo Giới tính (Gender), Dịp mặc (Occasion) và Luật kết hợp (Pairing Rules) đã được cấu hình trong database.

## Quy trình (Workflow)

**Mục tiêu:** Kiểm tra N sản phẩm (ví dụ: 100) để xác minh:
1. Sản phẩm có nhận diện đúng Giới tính và Phân loại (Product Line) không.
2. Kết quả recommend có chứa các Dịp mặc (Occasion) được phép theo luật hay không.
3. Các sản phẩm gợi ý (Target Items) có thuộc đúng Product Line quy định trong `chatbot_fashion_rules` hay không.

### Bước 1: Viết script kiểm thử tự động
Bạn có thể tự động sinh ra một file script bằng Python để fetch catalog trực tiếp thông qua `StylistEngine` và test:

- **Input:** Lấy ngẫu nhiên X sản phẩm từ catalog, đảm bảo có đủ giới tính (Nữ, Nam, Unisex, Bé Gái, Bé Trai).
- **Process:** Khởi tạo `StylistEngine`, gọi `compute_dynamic_rule_matches(code)`.
- **Verify:**
  - Truy vấn luật trực tiếp từ hàm `_fetch_rules_with_reason(anchor_cat, gender)`.
  - Đối chiếu kết quả recommend từ engine so với tập luật này.
  - Ghi nhận: Dịp nào thiếu SP recommend (do catalog không có màu phù hợp), item nào bị recommend sai category (Vi phạm luật).
- **Output:** In ra báo cáo tóm tắt (Tổng số, Số SP pass, Số lượng lỗi if any).

### Bước 2: Chạy script và nhận report
// turbo
```bash
cd backend
python test_fashion_rules_batch.py --limit 100
```

### Bước 3: Đánh giá và Sửa lỗi
- Nếu phát hiện Occasion rỗng, nguyên nhân có thể do catalog thiếu sản phẩm có màu sắc phù hợp quy tắc phối, hoặc luật quá khắt khe.
- Nếu phát hiện Item recommend sai `product_line`, cần check lại hàm query rule của Engine hoặc việc fallback.
- Chỉnh sửa logic trong `stylist_engine.py` hoặc thêm/sửa rules trong bảng `chatbot_fashion_rules`. Lặp lại Bước 2.
