"""
Bulk insert fashion rules for ALL product categories.
Run once: python worker/insert_bulk_rules.py
"""
import io
import sqlite3
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

from common.constants import SQLITE_DB_PATH

# ═══════════════════════════════════════════════════════
# RULES: anchor_category → target_category + match_role
# ═══════════════════════════════════════════════════════
RULES = [
    # ─── TOPS → BOTTOMS ────────────────────────────────
    ("Áo phông",    "di_choi",    "bottom", "Quần jean",     "Áo phông phối quần Jeans - Combo quốc dân cho mọi buổi đi chơi năng động."),
    ("Áo phông",    "hang_ngay",  "bottom", "Quần soóc",     "Áo phông với quần soóc — thoáng mát, thoải mái cho ngày thường."),
    ("Áo phông",    "hang_ngay",  "bottom", "Quần nỉ",       "Áo phông phối quần nỉ — năng động, dễ mặc hàng ngày."),
    ("Áo phông",    "hang_ngay",  "bottom", "Quần Khaki",    "Áo phông phối quần Khaki — gọn gàng, nam tính."),
    ("Áo phông",    "hang_ngay",  "bottom", "Quần dài",      "Áo phông phối quần dài — cơ bản và linh hoạt."),

    ("Áo Polo",     "hang_ngay",  "bottom", "Quần Khaki",    "Áo Polo và Quần Khaki là chân ái ngày thường, lịch sự và thoải mái."),
    ("Áo Polo",     "hang_ngay",  "bottom", "Quần jean",     "Áo Polo phối quần Jeans — smart casual thanh lịch."),
    ("Áo Polo",     "hang_ngay",  "bottom", "Quần soóc",     "Áo Polo cùng quần soóc — phong cách trẻ trung ngày hè."),
    ("Áo Polo",     "hang_ngay",  "bottom", "Quần dài",      "Áo Polo phối quần dài — lịch sự cho đi làm."),

    ("Áo Sơ mi",    "cong_so",    "bottom", "Quần Khaki",    "Áo Sơ mi phối quần Khaki — công thức công sở chuẩn mực."),
    ("Áo Sơ mi",    "cong_so",    "bottom", "Quần dài",      "Áo Sơ mi phối quần dài — thanh lịch cho môi trường công sở."),
    ("Áo Sơ mi",    "di_choi",    "bottom", "Quần jean",     "Áo Sơ mi phối quần Jeans — smart casual cho dạo phố."),

    ("Áo nỉ",       "hang_ngay",  "bottom", "Quần nỉ",       "Áo nỉ phối quần nỉ — đồng bộ ấm áp, năng động."),
    ("Áo nỉ",       "hang_ngay",  "bottom", "Quần jean",     "Áo nỉ phối quần Jeans — phong cách casual trẻ trung."),
    ("Áo nỉ",       "hang_ngay",  "bottom", "Quần soóc",     "Áo nỉ phối quần soóc — phong cách thể thao."),

    ("Áo nỉ có mũ", "hang_ngay",  "bottom", "Quần nỉ",       "Áo nỉ có mũ phối quần nỉ — set đồng bộ hoàn hảo."),
    ("Áo nỉ có mũ", "hang_ngay",  "bottom", "Quần jean",     "Áo nỉ có mũ phối quần Jeans — casual trendy."),
    ("Áo nỉ có mũ", "hang_ngay",  "bottom", "Quần soóc",     "Áo nỉ có mũ phối quần soóc — năng động cá tính."),

    ("Áo len",       "hang_ngay",  "bottom", "Quần jean",     "Áo len phối quần Jeans — ấm áp, thanh lịch cho mùa lạnh."),
    ("Áo len",       "hang_ngay",  "bottom", "Quần Khaki",    "Áo len phối quần Khaki — phong cách cổ điển tinh tế."),
    ("Áo len",       "hang_ngay",  "bottom", "Quần dài",      "Áo len phối quần dài — trang nhã cho mùa đông."),
    ("Áo len",       "hang_ngay",  "bottom", "Chân váy",      "Áo len phối chân váy — nữ tính, thời trang mùa thu đông."),

    ("Áo kiểu",     "di_choi",    "bottom", "Chân váy",      "Áo kiểu phối chân váy — nữ tính, thanh lịch cho dạo phố."),
    ("Áo kiểu",     "di_choi",    "bottom", "Quần jean",     "Áo kiểu phối quần Jeans — năng động mà vẫn đẹp."),
    ("Áo kiểu",     "cong_so",    "bottom", "Quần dài",      "Áo kiểu phối quần dài — thanh lịch cho công sở."),

    ("Áo ba lỗ",    "hang_ngay",  "bottom", "Quần soóc",     "Áo ba lỗ phối quần soóc — mát mẻ cho mùa hè."),
    ("Áo ba lỗ",    "hang_ngay",  "bottom", "Quần jean",     "Áo ba lỗ phối quần Jeans — phong cách thoải mái."),

    ("Áo Body",     "hang_ngay",  "bottom", "Quần jean",     "Áo Body phối quần Jeans — cơ bản, dễ mặc hàng ngày."),
    ("Áo Body",     "hang_ngay",  "bottom", "Quần dài",      "Áo Body phối quần dài — gọn gàng, dễ layer áo ngoài."),

    ("Áo giữ nhiệt","hang_ngay",  "bottom", "Quần giữ nhiệt","Áo giữ nhiệt phối quần giữ nhiệt — set giữ ấm đồng bộ."),
    ("Áo giữ nhiệt","hang_ngay",  "bottom", "Quần nỉ",       "Áo giữ nhiệt mặc trong, quần nỉ bên ngoài — ấm áp mùa đông."),

    ("Áo hai dây",  "di_choi",    "bottom", "Chân váy",      "Áo hai dây phối chân váy — nữ tính, thoáng mát."),
    ("Áo hai dây",  "di_choi",    "bottom", "Quần jean",     "Áo hai dây phối quần Jeans — phong cách trendy."),

    # ─── BOTTOMS → TOPS ────────────────────────────────
    ("Quần jean",    "di_choi",    "top",    "Áo phông",      "Quần Jeans phối áo phông — combo quốc dân."),
    ("Quần jean",    "hang_ngay",  "top",    "Áo nỉ",         "Quần Jeans phối áo nỉ — casual ấm áp."),
    ("Quần jean",    "cong_so",    "top",    "Áo Sơ mi",      "Quần Jeans phối áo Sơ mi — smart casual."),

    ("Quần Khaki",   "cong_so",    "top",    "Áo Polo",       "Quần Khaki phối áo Polo — lịch sự hàng ngày."),
    ("Quần Khaki",   "cong_so",    "top",    "Áo Sơ mi",      "Quần Khaki phối áo Sơ mi — công sở chuẩn mực."),

    ("Quần soóc",    "di_choi",    "top",    "Áo phông",      "Quần soóc phối áo phông — thoải mái cho đi chơi mùa hè."),
    ("Quần soóc",    "hang_ngay",  "top",    "Áo Polo",       "Quần soóc phối áo Polo — phong cách trẻ trung."),

    ("Quần nỉ",      "hang_ngay",  "top",    "Áo nỉ",         "Quần nỉ phối áo nỉ — set đồng bộ năng động."),
    ("Quần nỉ",      "hang_ngay",  "top",    "Áo nỉ có mũ",   "Quần nỉ phối áo nỉ có mũ — phong cách thể thao."),
    ("Quần nỉ",      "hang_ngay",  "top",    "Áo phông",      "Quần nỉ phối áo phông — thoải mái, casual."),

    ("Quần dài",     "cong_so",    "top",    "Áo Sơ mi",      "Quần dài phối áo Sơ mi — công sở chuẩn."),
    ("Quần dài",     "hang_ngay",  "top",    "Áo phông",      "Quần dài phối áo phông — cơ bản linh hoạt."),
    ("Quần dài",     "hang_ngay",  "top",    "Áo len",        "Quần dài phối áo len — ấm áp tinh tế."),

    ("Chân váy",     "di_choi",    "top",    "Áo phông",      "Chân váy phối áo phông — năng động nữ tính."),
    ("Chân váy",     "di_choi",    "top",    "Áo kiểu",       "Chân váy phối áo kiểu — thanh lịch cho dạo phố."),
    ("Chân váy",     "hang_ngay",  "top",    "Áo len",        "Chân váy phối áo len — ấm áp mùa đông."),
    ("Chân váy",     "hang_ngay",  "top",    "Áo Sơ mi",      "Chân váy phối áo Sơ mi — nữ tính công sở."),

    ("Quần váy",     "di_choi",    "top",    "Áo phông",      "Quần váy phối áo phông — năng động, nữ tính."),
    ("Quần váy",     "di_choi",    "top",    "Áo kiểu",       "Quần váy phối áo kiểu — thanh lịch dạo phố."),

    ("Quần leggings","hang_ngay",  "top",    "Áo phông",      "Quần leggings phối áo phông dáng dài — thoải mái."),
    ("Quần leggings","hang_ngay",  "top",    "Áo nỉ",         "Quần leggings phối áo nỉ — ấm áp, năng động."),

    # ─── OUTERWEAR → TOPS/BOTTOMS ──────────────────────
    ("Áo khoác gió",          "hang_ngay", "top",    "Áo phông",   "Áo khoác gió mặc ngoài áo phông — phong cách thể thao."),
    ("Áo khoác gió",          "hang_ngay", "bottom", "Quần nỉ",    "Áo khoác gió phối quần nỉ — năng động cho ngày lạnh."),
    ("Áo khoác gió",          "hang_ngay", "bottom", "Quần jean",  "Áo khoác gió phối quần Jeans — phong cách casual."),

    ("Áo khoác chống nắng",   "hang_ngay", "top",    "Áo phông",   "Áo khoác chống nắng mặc ngoài áo phông — bảo vệ da khi ra ngoài."),

    ("Áo khoác chần bông",    "hang_ngay", "top",    "Áo nỉ",      "Áo khoác chần bông mặc ngoài áo nỉ — ấm áp mùa đông."),
    ("Áo khoác chần bông",    "hang_ngay", "bottom", "Quần jean",  "Áo khoác chần bông phối quần Jeans — phong cách mùa đông."),
    ("Áo khoác chần bông",    "hang_ngay", "bottom", "Quần nỉ",    "Áo khoác chần bông phối quần nỉ — ấm áp, đồng bộ."),

    ("Áo khoác gilet chần bông","hang_ngay","top",    "Áo nỉ",      "Áo khoác gilet chần bông mặc ngoài áo nỉ — layering phong cách."),
    ("Áo khoác gilet chần bông","hang_ngay","top",    "Áo len",     "Áo khoác gilet chần bông mặc ngoài áo len — giữ ấm tinh tế."),

    ("Áo khoác dáng ngắn",    "di_choi",   "top",    "Áo phông",   "Áo khoác dáng ngắn phối áo phông — trendy cho dạo phố."),
    ("Áo khoác dáng ngắn",    "di_choi",   "bottom", "Quần jean",  "Áo khoác dáng ngắn phối quần Jeans — năng động."),
    ("Áo khoác dáng ngắn",    "di_choi",   "bottom", "Chân váy",   "Áo khoác dáng ngắn phối chân váy — nữ tính, cá tính."),

    ("Áo khoác nỉ không mũ",  "hang_ngay", "bottom", "Quần nỉ",    "Áo khoác nỉ không mũ phối quần nỉ — set đồng bộ."),
    ("Áo khoác nỉ không mũ",  "hang_ngay", "bottom", "Quần jean",  "Áo khoác nỉ không mũ phối quần Jeans — casual ấm áp."),

    ("Áo khoác nỉ có mũ",     "hang_ngay", "bottom", "Quần nỉ",    "Áo khoác nỉ có mũ phối quần nỉ — năng động, đồng bộ."),
    ("Áo khoác nỉ có mũ",     "hang_ngay", "bottom", "Quần jean",  "Áo khoác nỉ có mũ phối quần Jeans — trẻ trung."),

    ("Áo khoác lông vũ",      "hang_ngay", "top",    "Áo len",     "Áo khoác lông vũ mặc ngoài áo len — siêu ấm mùa đông."),
    ("Áo khoác lông vũ",      "hang_ngay", "bottom", "Quần dài",   "Áo khoác lông vũ phối quần dài — ấm áp, lịch sự."),

    ("Áo khoác dạ",           "cong_so",   "bottom", "Quần dài",   "Áo khoác dạ phối quần dài — đẳng cấp mùa đông."),
    ("Áo khoác dạ",           "cong_so",   "top",    "Áo len",     "Áo khoác dạ mặc ngoài áo len — sang trọng, thanh lịch."),

    ("Áo khoác",              "hang_ngay", "top",    "Áo phông",   "Áo khoác phối áo phông — cơ bản dễ mặc."),
    ("Áo khoác",              "hang_ngay", "bottom", "Quần jean",  "Áo khoác phối quần Jeans — casual linh hoạt."),

    ("Áo khoác sợi",          "hang_ngay", "top",    "Áo phông",   "Áo khoác sợi mặc ngoài áo phông — nhẹ nhàng, thời trang."),
    ("Áo khoác sợi",          "hang_ngay", "bottom", "Quần jean",  "Áo khoác sợi phối quần Jeans — phong cách casual."),

    ("Áo khoác gilet",        "hang_ngay", "top",    "Áo phông",   "Áo khoác gilet phối áo phông — layering đơn giản."),
    ("Áo khoác gilet",        "hang_ngay", "top",    "Áo Sơ mi",   "Áo khoác gilet phối áo Sơ mi — smart casual."),

    ("Áo len gilet",          "hang_ngay", "top",    "Áo Sơ mi",   "Áo len gilet phối áo Sơ mi — học đường/công sở preppy."),
    ("Áo len gilet",          "hang_ngay", "bottom", "Quần dài",   "Áo len gilet phối quần dài — phong cách Hàn Quốc."),

    ("Cardigan",              "hang_ngay", "top",    "Áo phông",   "Cardigan khoác ngoài áo phông — nhẹ nhàng, dễ thương."),
    ("Cardigan",              "hang_ngay", "bottom", "Quần jean",  "Cardigan phối quần Jeans — vintage, thời trang."),
    ("Cardigan",              "hang_ngay", "bottom", "Chân váy",   "Cardigan phối chân váy — nữ tính, nhẹ nhàng."),

    ("Blazer",                "cong_so",   "bottom", "Quần dài",   "Blazer phối quần dài — power suit, chuyên nghiệp."),
    ("Blazer",                "cong_so",   "top",    "Áo Sơ mi",   "Blazer mặc ngoài áo Sơ mi — công sở đỉnh cao."),
    ("Blazer",                "di_choi",   "bottom", "Quần jean",  "Blazer phối quần Jeans — smart casual sành điệu."),

    # ─── DRESSES → OUTERWEAR ──────────────────────────
    ("Váy liền",     "di_choi",    "outerwear", "Áo khoác dáng ngắn", "Váy liền phối áo khoác dáng ngắn — nữ tính, cá tính."),
    ("Váy liền",     "hang_ngay",  "outerwear", "Cardigan",           "Váy liền phối Cardigan — nhẹ nhàng, dễ thương."),
    ("Váy liền",     "cong_so",    "outerwear", "Blazer",             "Váy liền phối Blazer — thanh lịch cho công sở."),

    # ─── SETS ──────────────────────────────────────────
    ("Bộ mặc nhà",   "hang_ngay",  "bottom", "Quần mặc nhà",  "Bộ mặc nhà phối quần mặc nhà — thoải mái tại nhà."),
    ("Bộ thể thao",  "hang_ngay",  "bottom", "Quần nỉ",       "Bộ thể thao phối quần nỉ — năng động cho thể thao."),
    ("Pyjama",        "hang_ngay",  "bottom", "Quần mặc nhà",  "Pyjama phối quần mặc nhà — thoải mái cho giấc ngủ."),

    # ─── BOTTOMS → OUTERWEAR ──────────────────────────
    ("Quần jean",     "hang_ngay",  "outerwear", "Áo khoác gió",       "Quần Jeans phối áo khoác gió — phong cách casual."),
    ("Quần jean",     "hang_ngay",  "outerwear", "Áo khoác dáng ngắn", "Quần Jeans phối áo khoác dáng ngắn — trendy."),
    ("Quần nỉ",       "hang_ngay",  "outerwear", "Áo khoác gió",       "Quần nỉ phối áo khoác gió — thể thao năng động."),
    ("Quần Khaki",    "cong_so",    "outerwear", "Blazer",             "Quần Khaki phối Blazer — smart casual lịch sự."),

    # ─── HOMEWEAR & SETS ──────────────────────────────
    ("Quần mặc nhà",  "hang_ngay",  "top",    "Áo mặc nhà",   "Quần mặc nhà phối áo mặc nhà — thoải mái tại nhà."),
    ("Quần mặc nhà",  "hang_ngay",  "top",    "Áo phông",      "Quần mặc nhà phối áo phông — đơn giản, dễ chịu."),
    ("Áo mặc nhà",    "hang_ngay",  "bottom", "Quần mặc nhà",  "Áo mặc nhà phối quần mặc nhà — set đồng bộ tại nhà."),
    ("Áo mặc nhà",    "hang_ngay",  "bottom", "Quần soóc",     "Áo mặc nhà phối quần soóc — mát mẻ, thoải mái."),
    ("Bộ quần áo",    "hang_ngay",  "outerwear", "Áo khoác gió","Bộ quần áo phối áo khoác gió — năng động khi ra ngoài."),
    ("Bộ quần áo",    "hang_ngay",  "outerwear", "Áo khoác chống nắng", "Bộ quần áo phối áo khoác chống nắng — bảo vệ da."),
    ("Quần leggings mặc nhà", "hang_ngay", "top", "Áo mặc nhà", "Quần leggings mặc nhà phối áo mặc nhà — thoải mái tại nhà."),
    ("Quần leggings mặc nhà", "hang_ngay", "top", "Áo phông",   "Quần leggings mặc nhà phối áo phông — casual ở nhà."),
    ("Quần culottes",  "di_choi",    "top",    "Áo phông",      "Quần culottes phối áo phông — nữ tính, thoải mái dạo phố."),
    ("Quần culottes",  "di_choi",    "top",    "Áo kiểu",       "Quần culottes phối áo kiểu — thanh lịch, thời trang."),
    ("Quần Body",      "hang_ngay",  "top",    "Áo phông",      "Quần Body phối áo phông — cơ bản, tiện dụng."),
    ("Quần giữ nhiệt", "hang_ngay", "top",    "Áo giữ nhiệt",  "Quần giữ nhiệt phối áo giữ nhiệt — set giữ ấm đồng bộ."),
    ("Quần giữ nhiệt", "hang_ngay", "top",    "Áo nỉ",         "Quần giữ nhiệt phối áo nỉ — ấm áp mùa đông."),

    # ─── UNDERWEAR → TOPS (phối cùng outfit) ─────────
    ("Áo lót",         "hang_ngay",  "top",    "Áo phông",      "Áo lót mặc trong áo phông — lớp lót cơ bản."),
    ("Áo lót",         "hang_ngay",  "top",    "Áo Sơ mi",      "Áo lót mặc trong áo Sơ mi — gọn gàng công sở."),
    ("Quần lót",       "hang_ngay",  "bottom", "Quần jean",     "Quần lót mặc trong quần Jeans — lớp lót hàng ngày."),
    ("Quần lót",       "hang_ngay",  "bottom", "Quần dài",      "Quần lót mặc trong quần dài — cơ bản."),
    ("Quần lót đùi",   "hang_ngay",  "bottom", "Quần jean",     "Quần lót đùi mặc trong quần Jeans — thoải mái."),
    ("Quần lót đùi",   "hang_ngay",  "bottom", "Quần soóc",     "Quần lót đùi mặc trong quần soóc — gọn gàng."),
    ("Quần lót tam giác","hang_ngay","bottom", "Quần jean",     "Quần lót tam giác mặc trong quần Jeans — cơ bản."),
    ("Quần lót tam giác","hang_ngay","bottom", "Quần dài",      "Quần lót tam giác mặc trong quần dài — gọn gàng."),

    # ─── ACCESSORIES → OUTFITS ────────────────────────
    ("Tất",            "hang_ngay",  "top",    "Áo phông",      "Tất phối cùng áo phông — phụ kiện cơ bản cho mọi outfit."),
    ("Tất",            "hang_ngay",  "bottom", "Quần jean",     "Tất phối cùng quần Jeans — phụ kiện hàng ngày."),
    ("Tất",            "hang_ngay",  "bottom", "Quần nỉ",       "Tất phối cùng quần nỉ — ấm áp thể thao."),
    ("Mũ",             "hang_ngay",  "top",    "Áo phông",      "Mũ phối cùng áo phông — phụ kiện cho ngày nắng."),
    ("Mũ",             "hang_ngay",  "top",    "Áo khoác gió",  "Mũ phối cùng áo khoác gió — outfit thể thao."),
    ("Mũ thể thao",   "hang_ngay",  "top",    "Áo phông",      "Mũ thể thao phối áo phông — năng động, khỏe khoắn."),
    ("Mũ thể thao",   "hang_ngay",  "top",    "Áo Polo",       "Mũ thể thao phối áo Polo — phong cách thể thao lịch sự."),
    ("Khăn",           "hang_ngay",  "top",    "Áo len",        "Khăn phối cùng áo len — ấm áp mùa đông."),
    ("Khăn",           "hang_ngay",  "outerwear", "Áo khoác dạ", "Khăn phối áo khoác dạ — sang trọng mùa lạnh."),
    ("Túi xách",       "hang_ngay",  "top",    "Áo phông",      "Túi xách phối cùng áo phông — phụ kiện đi chơi."),
    ("Túi xách",       "cong_so",    "top",    "Áo Sơ mi",      "Túi xách phối cùng áo Sơ mi — phong cách công sở."),
    ("Găng tay chống nắng", "hang_ngay", "top", "Áo khoác chống nắng", "Găng tay chống nắng phối áo khoác chống nắng — bảo vệ toàn diện."),
    ("Găng tay chống nắng", "hang_ngay", "top", "Áo phông",     "Găng tay chống nắng phối áo phông — chống nắng khi ra ngoài."),
    ("Khẩu trang",     "hang_ngay",  "top",    "Áo phông",      "Khẩu trang phối cùng áo phông — phụ kiện bảo vệ."),
    ("Khẩu trang",     "hang_ngay",  "outerwear", "Áo khoác chống nắng", "Khẩu trang phối áo khoác chống nắng — bảo vệ toàn diện."),
]


def run():
    conn = sqlite3.connect(SQLITE_DB_PATH)
    c = conn.cursor()

    # Xóa rules cũ
    c.execute("DELETE FROM pg__dashboard_canifa__chatbot_fashion_rules")
    print(f"🧹 Đã xóa rules cũ.")

    inserted = 0
    for anchor, occasion, role, target, reason in RULES:
        c.execute("""
            INSERT INTO pg__dashboard_canifa__chatbot_fashion_rules
            (anchor_category, occasion_tag, match_role, target_category, ai_reason)
            VALUES (?, ?, ?, ?, ?)
        """, (anchor, occasion, role, target, reason))
        inserted += 1

    conn.commit()
    print(f"✅ Đã insert {inserted} rules!")

    # Verify
    c.execute("SELECT COUNT(*) FROM pg__dashboard_canifa__chatbot_fashion_rules")
    print(f"📊 Total rules in DB: {c.fetchone()[0]}")
    conn.close()


if __name__ == '__main__':
    run()
