"""
migrate_004_remaining.py — seed 27 anchor categories còn thiếu
"""
import logging
import os
import sys

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
backend_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
if backend_dir not in sys.path:
    sys.path.insert(0, backend_dir)

TABLE = "dashboard_canifa.chatbot_fashion_rules"

RULES = [
    # Áo khoác chần bông NAM
    ("nam",    "Áo khoác chần bông", "hang_ngay","bottom","Quần jean",   "Áo khoác chần bông + Quần jean nam"),
    ("nam",    "Áo khoác chần bông", "di_choi",  "bottom","Quần jean",   "Áo khoác chần bông + Quần jean nam đi chơi"),
    ("nam",    "Áo khoác chần bông", "hang_ngay","top",   "Áo phông",    "Áo khoác chần bông phủ Áo phông nam"),

    # Áo Polo BE TRAI
    ("be_trai","Áo Polo",  "hang_ngay","bottom","Quần soóc",  "Áo Polo bé trai + Quần soóc hàng ngày"),
    ("be_trai","Áo Polo",  "hang_ngay","bottom","Quần khaki", "Áo Polo bé trai + Quần khaki"),
    ("be_trai","Áo Polo",  "du_lich",  "bottom","Quần soóc",  "Áo Polo bé trai + Quần soóc du lịch"),
    # Áo Polo UNISEX
    ("unisex", "Áo Polo",  "hang_ngay","bottom","Quần jean",  "Áo Polo unisex + Quần jean"),
    ("unisex", "Áo Polo",  "di_lam",   "bottom","Quần khaki", "Áo Polo unisex + Quần khaki công sở"),

    # Áo len BE TRAI
    ("be_trai","Áo len",   "hang_ngay","bottom","Quần nỉ",    "Áo len bé trai + Quần nỉ ấm"),
    ("be_trai","Áo len",   "hang_ngay","bottom","Quần dài",   "Áo len bé trai + Quần dài mùa lạnh"),

    # Quần Khaki BE GAI
    ("be_gai", "Quần Khaki","hang_ngay","top",  "Áo phông",   "Quần Khaki bé gái + Áo phông"),
    ("be_gai", "Quần Khaki","di_choi",  "top",  "Áo kiểu",    "Quần Khaki bé gái + Áo kiểu đi chơi"),

    # Khăn / Scarf (accessories — recommend top/bottom to go with)
    ("unisex", "Khăn",     "hang_ngay","top",   "Áo phông",   "Khăn + Áo phông: phụ kiện base"),
    ("unisex", "Khăn",     "di_choi",  "top",   "Áo nỉ",      "Khăn + Áo nỉ: mùa lạnh stylish"),

    # Quần lót (underwear — minimal rules)
    ("nu",     "Quần lót", "mac_nha",  "top",   "Áo phông",   "Quần lót + Áo phông: lounge basic"),
    ("be_gai", "Quần lót", "mac_nha",  "top",   "Áo phông",   "Quần lót bé gái + Áo phông nhà"),

    # Áo khoác sợi NAM
    ("nam",    "Áo khoác sợi","di_choi", "bottom","Quần jean", "Áo khoác sợi nam + Quần jean"),
    ("nam",    "Áo khoác sợi","hang_ngay","top",  "Áo phông",  "Áo khoác sợi phủ Áo phông nam"),

    # Pyjama BE TRAI
    ("be_trai","Pyjama",   "mac_nha",  "outerwear","Áo nỉ",    "Pyjama bé trai + Áo nỉ mùa lạnh"),

    # Áo khoác gilet chần bông (gilet)
    ("be_gai", "Áo khoác gilet chần bông","hang_ngay","top","Áo phông","Gilet chần bông + Áo phông bé gái"),
    ("be_gai", "Áo khoác gilet chần bông","hang_ngay","bottom","Quần nỉ","Gilet chần bông + Quần nỉ bé gái"),
    ("unisex", "Áo khoác gilet chần bông","hang_ngay","top","Áo phông", "Gilet chần bông + Áo phông unisex"),
    ("nu",     "Áo khoác gilet chần bông","di_choi",  "bottom","Quần jean","Gilet chần bông + Quần jean nữ"),

    # Áo giữ nhiệt BE GAI
    ("be_gai", "Áo giữ nhiệt","mac_nha","bottom","Quần nỉ",    "Áo giữ nhiệt + Quần nỉ bé gái ấm"),
    ("be_gai", "Áo giữ nhiệt","hang_ngay","outerwear","Áo nỉ", "Áo giữ nhiệt base + Áo nỉ phủ ngoài"),

    # Quần giữ nhiệt NAM
    ("nam",    "Quần giữ nhiệt","mac_nha","top","Áo giữ nhiệt","Quần giữ nhiệt + Áo giữ nhiệt base layer"),
    ("nam",    "Quần giữ nhiệt","mac_nha","top","Áo phông",    "Quần giữ nhiệt + Áo phông: thermal inside"),

    # Áo nỉ UNISEX
    ("unisex", "Áo nỉ",    "di_choi",  "bottom","Quần jean",   "Áo nỉ + Quần jean unisex casual"),
    ("unisex", "Áo nỉ",    "hang_ngay","bottom","Quần dài",    "Áo nỉ + Quần dài unisex chill"),

    # Áo mặc nhà NAM
    ("nam",    "Áo mặc nhà","mac_nha", "bottom","Quần mặc nhà","Áo mặc nhà + Quần mặc nhà: set nhà nam"),
    ("nam",    "Áo mặc nhà","mac_nha", "bottom","Quần nỉ",     "Áo mặc nhà + Quần nỉ nam winter home"),

    # Quần váy BE GAI
    ("be_gai", "Quần váy", "di_choi",  "top",   "Áo phông",   "Quần váy bé gái + Áo phông đi chơi"),
    ("be_gai", "Quần váy", "hang_ngay","top",   "Áo kiểu",    "Quần váy bé gái + Áo kiểu hàng ngày"),

    # Khăn mặt (towel) — non-fashion, skip meaningful pairing; add minimal
    ("all",    "Khăn mặt", "mac_nha",  "top",   "Áo mặc nhà", "Khăn mặt + Áo mặc nhà: home essentials"),

    # Bộ quần áo UNISEX
    ("unisex", "Bộ quần áo","hang_ngay","outerwear","Áo khoác gió","Bộ quần áo unisex + Khoác nhẹ"),

    # Áo khoác gilet chần bông WOMEN (đã có? thêm thêm)
    ("nu",     "Áo khoác gilet chần bông","di_choi","top","Áo phông","Gilet chần bông nữ + Áo phông base"),
]


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

if __name__ == "__main__":
    run()
