# 🛠️ Kiểm Thử & Xử Lý Sự Cố (Troubleshooting)

## 🧪 Kịch Bản Kiểm Thử Nhanh (Test Script)

Bro có thể tạo file `test_autotrain_flow.py` để chạy thử toàn bộ luồng nghiệp vụ từ Feedback đến Deploy:

```python
import requests

BASE_URL = "http://localhost:8000/autotrain"

def test_pipeline():
    # 1. Gửi Feedback giả lập
    print("--- Bước 1: Gửi Feedback ---")
    fb_data = {
        "query": "tìm váy cho người thấp",
        "ai_response": "Bạn nên mặc váy maxi dài chạm đất.",
        "feedback_text": "Váy dài quá tôi mặc bị lùn",
        "feedback_type": "bug"
    }
    fb_res = requests.post(f"{BASE_URL}/feedback", json=fb_data).json()
    fb_id = fb_res["feedback_id"]
    print(f"Thành công! ID: {fb_id}")

    # 2. Chạy AI sinh quy tắc
    print("\n--- Bước 2: AI Sinh Quy Tắc ---")
    requests.post(f"{BASE_URL}/run-all")
    rules = requests.get(f"{BASE_URL}/rules?status=pending").json()
    rule_id = rules[0]["rule_id"]
    print(f"Đã tạo Rule: {rule_id}")

    # 3. Phê duyệt & Deploy
    print("\n--- Bước 3: Phê duyệt & Deploy ---")
    requests.post(f"{BASE_URL}/rules/{rule_id}/approve")
    deploy_res = requests.post(f"{BASE_URL}/rules/{rule_id}/deploy").json()
    print(f"Kết quả Deploy: {deploy_res['status']}")
    print(f"File Backup: {deploy_res['backup_file']}")

if __name__ == "__main__":
    test_pipeline()
```

---

## 🔍 Các Lỗi Thường Gặp & Cách Xử Lý

### 1. Lỗi "Rule not found or not approved" (400)
**Nguyên nhân:** Bro cố tình gọi API `/deploy` khi quy tắc đó vẫn đang ở trạng thái `pending` hoặc đã bị `rejected`.
**Khắc phục:** Phải gọi API `/approve` trước khi gọi `/deploy`.

### 2. Lỗi "Validation Failed" (422)
**Nguyên nhân:** Quy tắc do AI sinh ra quá ngắn (dưới 10 ký tự) hoặc chứa các từ khóa nhạy cảm bị hệ thống chặn.
**Khắc phục:** Kiểm tra lại nội dung `feedback_text`, cung cấp thông tin chi tiết hơn để AI sinh nội dung tốt hơn.

### 3. Lỗi "Target file not found" (500)
**Nguyên nhân:** File `fashion_rules.json` bị di chuyển hoặc sai đường dẫn cấu hình trong `autotrain_route.py`.
**Khắc phục:** Đảm bảo file tồn tại tại `backend/worker/fashion_rules.json`.

---

## 🧹 Dọn Dẹp Dữ Liệu Thử Nghiệm

Nếu muốn reset lại toàn bộ DB để làm mới hệ thống, bro có thể xóa file DB:

```bash
# Xóa file database cũ (Windows)
del backend/database/autotrain.db

# Khởi tạo lại DB sạch
python -c "from backend.api.autotrain.autotrain_route import init_db; init_db()"
```

---

## ☎️ Hỗ Trợ Kỹ Thuật
Nếu gặp vấn đề về logic sinh quy tắc hoặc lỗi khi ghi file, hãy kiểm tra log của server backend. Mọi thao tác deploy đều được ghi lại chi tiết kèm theo `rule_id` để bro dễ dàng tra cứu.
