"""دیتای پیش‌فرض: تگ‌های طبق مشخصات کارفرما (عیناً کپی از core/db_schema.py دسکتاپ) + کاربر ادمین اولیه."""
import secrets

from app.extensions import db
from app.models.tag import TagCategory, Tag
from app.models.user import User, Permission
from app.models.settings import AppSetting
from config import PAGE_PERMISSIONS

DEFAULT_TAGS = [
    ("علت عدم خرید", [
        "اجرت بالا", "مناسب نبودن مدل", "سرمایه اندک", "بازار خراب", "نبود تنوع",
        "از جای دیگری خرید میکند", "دست دوم", "تعویض سبک", "تغییر شغل",
    ]),
    ("تگ دیالوگ‌ها", [
        "مدل جدید اوردید", "کاهش اجرت داشتیم", "ارسال سریع", "اجرت مناسب",
        "تخفیف ویژه", "کار خاص و شیک", "شارژ محصولات پرفروش",
    ]),
    ("نیاز به تماس", [
        "منجر به خرید", "بازار ضعیف", "تنوع کم داریم", "اجرت بالا",
        "پاسخ نداد", "طلا ندارد", "بازار دسته دوم",
    ]),
    ("امتیاز مشتری", [
        "خوش حساب", "200 گرمی", "500 گرمی", "VIP", "نیاز به بررسی",
    ]),
    ("سبک خرید", [
        "ارزان فروش", "لوکس فروش", "آنلاین شاپ", "النگو فروش", "خرده ریز فروش",
        "مینیمال فروش", "معمولی فروش", "دسته دوم فروش", "سنگین فروش",
    ]),
    ("وضعیت خرید", [
        "هفتگی", "ماهانه", "فصلی", "فقط یکبار خریده", "بیش از 6 ماه نخریده", "خواب",
    ]),
    ("وضعیت مشتری", [
        "هنوز تماس نگرفته", "اولین تماس انجام شده", "پاسخ نداده", "مذاکره",
        "پیگیری موجود", "فعال", "VIP", "غیر فعال", "سوختی", "مشاوره", "اولین خرید",
    ]),
    ("تغییر مشتری", [
        "VIP", "فعال", "خوابیده", "خرید اول", "آنلاین شاپ", "استعلام گرفته و نخریده",
        "سید جدید", "کیفی", "مغازه‌دار", "روتین",
    ]),
    ("تگ محصول", [
        "سبک", "سنگین", "متوسط", "اقتصادی", "لوکس فروش", "نقدی",
        "خوش خواب", "بد خواب", "شهر تهران", "اقبال خرید", "اقبال حذف",
    ]),
]


def seed_tags():
    if TagCategory.query.count() > 0:
        return False
    for order, (cat_name, items) in enumerate(DEFAULT_TAGS):
        cat = TagCategory(name=cat_name, sort_order=order)
        db.session.add(cat)
        db.session.flush()
        for i, item in enumerate(items):
            db.session.add(Tag(category_id=cat.id, name=item, sort_order=i))
    db.session.commit()
    return True


def seed_admin():
    """کاربر ادمین اولیه با رمز تصادفی امن (نه admin123 دسکتاپ — این نسخه روی اینترنت است)."""
    if User.query.filter_by(role="admin").first():
        return None
    password = secrets.token_urlsafe(12)
    admin = User(username="admin", full_name="مدیر سیستم", role="admin", is_active_flag=True)
    admin.set_password(password)
    db.session.add(admin)
    db.session.flush()
    for key, _label in PAGE_PERMISSIONS:
        db.session.add(Permission(user_id=admin.id, page_key=key))
    db.session.commit()
    return password


def seed_settings():
    if not AppSetting.query.get("theme_mode"):
        db.session.add(AppSetting(key="theme_mode", value="dark"))
        db.session.commit()


def run_all():
    seed_tags()
    seed_settings()
    password = seed_admin()
    if password:
        print("=" * 60)
        print(" کاربر ادمین ساخته شد — این رمز را همین حالا ذخیره کنید:")
        print(f"   نام کاربری: admin")
        print(f"   رمز عبور:   {password}")
        print(" این رمز دیگر هیچ‌جا نمایش داده نمی‌شود.")
        print("=" * 60)
    else:
        print("کاربر ادمین از قبل وجود دارد — رد شد.")
