"""
migrate_006_ao_phong_full.py
Seed FULL rules cho Áo phông (nữ / nam / unisex) × 4 dịp × tất cả product_line phù hợp
"""
import os
import sys

sys.path.insert(0, os.path.dirname(__file__) + "/../..")


RULES = []

# ─── NỮ ──────────────────────────────────────────────────────────────────────
def r(anchor, gender, occ, role, target, reason):
    RULES.append((anchor, gender, occ, role, target, reason))

# Áo phông nữ - Đi chơi / dạo phố
r("Áo phông","nu","di_choi","bottom","Quần jean","Áo phông + Quần jean: combo quốc dân đi chơi cuối tuần")
r("Áo phông","nu","di_choi","bottom","Quần soóc","Áo phông + Quần soóc: thoải mái, trẻ trung")
r("Áo phông","nu","di_choi","bottom","Chân váy","Áo phông + Chân váy: mix style nữ tính")
r("Áo phông","nu","di_choi","bottom","Quần nỉ","Áo phông + Quần nỉ: sporty, casual")
r("Áo phông","nu","di_choi","bottom","Quần dài","Áo phông + Quần dài: đơn giản, thanh lịch")
r("Áo phông","nu","di_choi","bottom","Váy liền","Áo phông tucked-in + Váy liền: style layering")
r("Áo phông","nu","di_choi","outerwear","Áo khoác chống nắng","Áo phông + Áo chống nắng: bảo vệ da khi ra ngoài")
r("Áo phông","nu","di_choi","outerwear","Áo khoác gió","Áo phông + Jacket gió: streetwear year-round")
r("Áo phông","nu","di_choi","outerwear","Áo khoác dáng ngắn","Áo phông + Khoác dáng ngắn: trendy")
r("Áo phông","nu","di_choi","outerwear","Áo len","Áo phông + Áo len: layering mùa thu")
r("Áo phông","nu","di_choi","outerwear","Cardigan","Áo phông + Cardigan: nhẹ nhàng, nữ tính")
r("Áo phông","nu","di_choi","accessory","Tất","Tất phối tông để hoàn thiện look")
r("Áo phông","nu","di_choi","accessory","Túi xách","Túi xách unisex hoàn thiện outfit đi chơi")
r("Áo phông","nu","di_choi","accessory","Mũ","Mũ che nắng/phối style khi đi chơi")

# Áo phông nữ - Đi làm công sở
r("Áo phông","nu","cong_so","bottom","Quần dài","Áo phông tuck-in + Quần dài: lịch sự, hiện đại")
r("Áo phông","nu","cong_so","bottom","Chân váy","Áo phông + Chân váy midi: nữ tính công sở")
r("Áo phông","nu","cong_so","bottom","Quần Khaki","Áo phông + Quần khaki: smart casual")
r("Áo phông","nu","cong_so","bottom","Quần jean","Áo phông + Jean công sở: casual Friday")
r("Áo phông","nu","cong_so","outerwear","Blazer","Áo phông + Blazer: smart casual đỉnh cao")
r("Áo phông","nu","cong_so","outerwear","Cardigan","Áo phông + Cardigan: thanh lịch văn phòng")
r("Áo phông","nu","cong_so","outerwear","Áo len gilet","Áo phông + Gilet len: phong cách công sở mùa lạnh")
r("Áo phông","nu","cong_so","accessory","Tất","Tất mỏng phối văn phòng")

# Áo phông nữ - Du lịch
r("Áo phông","nu","du_lich","bottom","Quần soóc","Áo phông + Shorts: thoải mái du lịch")
r("Áo phông","nu","du_lich","bottom","Quần jean","Áo phông + Jean: versatile khi đi du lịch")
r("Áo phông","nu","du_lich","bottom","Quần nỉ","Áo phông + Quần nỉ: di chuyển thoải mái xa")
r("Áo phông","nu","du_lich","bottom","Chân váy","Áo phông + Chân váy: nhẹ nhàng du lịch biển")
r("Áo phông","nu","du_lich","outerwear","Áo khoác chống nắng","Chống nắng hiệu quả khi khám phá ngoài trời")
r("Áo phông","nu","du_lich","outerwear","Áo khoác gió","Áo khoác gió nhẹ, gọn gàng khi du lịch")
r("Áo phông","nu","du_lich","outerwear","Áo khoác chần bông","Ấm áp khi đi du lịch miền lạnh")
r("Áo phông","nu","du_lich","accessory","Tất","Tất năng động phù hợp đi du lịch")
r("Áo phông","nu","du_lich","accessory","Túi xách","Túi xách gọn nhẹ tiện dụng du lịch")
r("Áo phông","nu","du_lich","accessory","Mũ","Mũ bảo vệ khi tham quan ngoài nắng")

# Áo phông nữ - Ở nhà
r("Áo phông","nu","mac_nha","bottom","Quần mặc nhà","Áo phông + Quần mặc nhà: ở nhà thoải mái")
r("Áo phông","nu","mac_nha","bottom","Quần nỉ","Áo phông + Quần nỉ: casual homewear")
r("Áo phông","nu","mac_nha","bottom","Pyjama","Áo phông + Pyjama: ngủ thoải mái")

# ─── NAM ─────────────────────────────────────────────────────────────────────
# Áo phông nam - Đi chơi
r("Áo phông","nam","di_choi","bottom","Quần jean","Áo phông + Jean: combo đi chơi kinh điển nam")
r("Áo phông","nam","di_choi","bottom","Quần soóc","Áo phông + Shorts: nam tính, năng động")
r("Áo phông","nam","di_choi","bottom","Quần nỉ","Áo phông + Quần nỉ: sporty casual nam")
r("Áo phông","nam","di_choi","bottom","Quần Khaki","Áo phông + Khaki: casual smart")
r("Áo phông","nam","di_choi","bottom","Quần dài","Áo phông + Quần dài đứng: gọn gàng")
r("Áo phông","nam","di_choi","outerwear","Áo khoác gió","Áo phông + Jacket gió: streetwear nam")
r("Áo phông","nam","di_choi","outerwear","Áo nỉ có mũ","Áo phông layered cùng hoodie: urban style")
r("Áo phông","nam","di_choi","outerwear","Áo khoác dáng ngắn","Khoác dáng ngắn tạo điểm nhấn")
r("Áo phông","nam","di_choi","outerwear","Áo khoác chống nắng","Chống nắng tiện lợi cho nam")
r("Áo phông","nam","di_choi","accessory","Tất","Tất phối đồng bộ với giày/sneaker")
r("Áo phông","nam","di_choi","accessory","Mũ","Mũ snapback/5 panel phối streetwear")
r("Áo phông","nam","di_choi","accessory","Túi xách","Túi tote/messenger: thực dụng khi ra ngoài")

# Áo phông nam - Đi làm
r("Áo phông","nam","cong_so","bottom","Quần Khaki","Áo phông + Quần khaki: casual Friday văn phòng")
r("Áo phông","nam","cong_so","bottom","Quần jean","Áo phông + Jean: công sở casual")
r("Áo phông","nam","cong_so","bottom","Quần dài","Áo phông + Quần dài: neat và lịch sự")
r("Áo phông","nam","cong_so","outerwear","Blazer","Áo phông + Blazer: smart casual hiện đại")
r("Áo phông","nam","cong_so","outerwear","Áo len","Áo phông layered + Len: business casual mùa lạnh")
r("Áo phông","nam","cong_so","accessory","Tất","Tất phẳng phối công sở")

# Áo phông nam - Du lịch
r("Áo phông","nam","du_lich","bottom","Quần soóc","Áo phông + Shorts: du lịch biển năng động")
r("Áo phông","nam","du_lich","bottom","Quần jean","Áo phông + Jean: versatile du lịch")
r("Áo phông","nam","du_lich","bottom","Quần nỉ","Áo phông + Nỉ: di chuyển thoải mái")
r("Áo phông","nam","du_lich","outerwear","Áo khoác chống nắng","Chống nắng gọn nhẹ du lịch ngoài trời")
r("Áo phông","nam","du_lich","outerwear","Áo khoác gió","Jacket gió nhẹ, gấp gọn du lịch")
r("Áo phông","nam","du_lich","outerwear","Áo khoác chần bông","Ấm khi du lịch miền núi/biển đêm")
r("Áo phông","nam","du_lich","accessory","Tất","Tất du lịch năng động")
r("Áo phông","nam","du_lich","accessory","Mũ","Mũ bảo vệ ngoài trời")
r("Áo phông","nam","du_lich","accessory","Túi xách","Túi crossbody gọn nhẹ du lịch")

# Áo phông nam - Ở nhà
r("Áo phông","nam","mac_nha","bottom","Quần mặc nhà","Áo phông + Quần mặc nhà: ở nhà thư giãn")
r("Áo phông","nam","mac_nha","bottom","Quần nỉ","Áo phông + Nỉ: thoải mái tối về nhà")

# ─── UNISEX ───────────────────────────────────────────────────────────────────
r("Áo phông","unisex","di_choi","bottom","Quần jean","Áo phông + Jean: phóng khoáng unisex")
r("Áo phông","unisex","di_choi","bottom","Quần soóc","Áo phông + Shorts: casual unisex")
r("Áo phông","unisex","di_choi","bottom","Quần nỉ","Áo phông + Nỉ: sporty unisex")
r("Áo phông","unisex","di_choi","outerwear","Áo khoác gió","Jacket gió unisex streetwear")
r("Áo phông","unisex","di_choi","outerwear","Áo khoác dáng ngắn","Khoác ngắn unisex trend")
r("Áo phông","unisex","di_choi","accessory","Tất","Tất phối unisex")
r("Áo phông","unisex","di_choi","accessory","Mũ","Mũ unisex streetstyle")
r("Áo phông","unisex","du_lich","bottom","Quần soóc","Shorts du lịch unisex")
r("Áo phông","unisex","du_lich","bottom","Quần jean","Jean du lịch unisex")
r("Áo phông","unisex","du_lich","outerwear","Áo khoác chống nắng","Chống nắng unisex")
r("Áo phông","unisex","du_lich","accessory","Mũ","Mũ du lịch unisex")


TABLE = "dashboard_canifa.chatbot_fashion_rules"


def run():
    import os
    import sys
    backend_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
    sys.path.insert(0, backend_dir)
    from common.pool_wrapper import get_pooled_connection_compat
    conn = None
    try:
        conn = get_pooled_connection_compat()
        cur = conn.cursor()
        upserted = 0
        for anchor, gender, occ, role, target, reason in RULES:
            cur.execute(f"""
                INSERT INTO {TABLE} (anchor_category, gender_target, occasion_tag, match_role, target_category, ai_reason)
                VALUES (%s, %s, %s, %s, %s, %s) ON CONFLICT DO NOTHING
            """, (anchor, gender, occ, role, target, reason))
            if cur.rowcount > 0:
                upserted += 1
        conn.commit()
        cur.close()
        print(f"[OK] migrate_006 done: +{upserted} rules upserted ({len(RULES)} total attempted)")
    except Exception as e:
        if conn: conn.rollback()
        print(f"[ERROR] {e}")
    finally:
        if conn: conn.close()

if __name__ == "__main__":
    run()
