/**
 * داده نمونه: ۳۰ محصول فرضی برای تست.
 * در مرحله ۲ همین داده از طریق prisma/seed.ts وارد دیتابیس می‌شود.
 */
import type { Product, ProductShape, ProductTag, ProductVariant, Review } from "@/types/catalog";
import { slugifyFa } from "@/lib/persian";
import { buildReviews } from "./reviews";

type SizeRow = [size: string, price: number, compareAt?: number, stock?: number];
type ColorRow = [name: string, hex: string, stock?: number];

interface ProductInput {
  id: number;
  name: string;
  brand: string;
  category: string;
  skin: string[];
  shape: ProductShape;
  tone: string;
  tags?: ProductTag[];
  daysAgo: number;
  summary: string;
  description: string;
  ingredients: string;
  madeIn: string;
  /** تنوع بر اساس حجم */
  sizes?: SizeRow[];
  /** تنوع بر اساس رنگ (با قیمت مشترک) */
  colors?: { price: number; compareAt?: number; size?: string; rows: ColorRow[] };
}

const ALL_SKIN = ["dry", "oily", "combination", "normal", "sensitive"];

const howToUseByCategory: Record<string, string> = {
  "c-serum": "صبح و شب، پس از پاک‌سازی و تونر، ۳ تا ۴ قطره را روی پوست صورت و گردن بزنید و با ضربه‌های آرام جذب کنید. سپس مرطوب‌کننده و در روز ضدآفتاب استفاده کنید.",
  "c-moisturizer": "به مقدار یک نخود روی پوست تمیز صورت و گردن پخش کنید. صبح‌ها قبل از ضدآفتاب و شب‌ها در آخرین مرحله روتین استفاده شود.",
  "c-cleanser": "صبح و شب روی پوست مرطوب ماساژ دهید و با آب ولرم بشویید. از تماس با چشم خودداری کنید.",
  "c-sunscreen": "۱۵ دقیقه پیش از قرار گرفتن در معرض آفتاب، به میزان کافی روی صورت و گردن بزنید و هر دو ساعت یک بار تمدید کنید.",
  "c-mask": "یک تا دو بار در هفته لایه‌ای یکنواخت روی پوست تمیز بزنید. پس از زمان توصیه‌شده با آب ولرم بشویید.",
  "c-face": "با برس، اسفنج یا نوک انگشتان از مرکز صورت به سمت بیرون پخش کنید و در صورت نیاز لایه دوم بزنید.",
  "c-eyes": "از ریشه یا گوشه داخلی چشم شروع کنید و به سمت بیرون بکشید. برای ماندگاری بیشتر از پرایمر چشم استفاده کنید.",
  "c-lips": "از مرکز لب به سمت گوشه‌ها بکشید. برای رنگ کامل‌تر، لایه دوم را پس از چند ثانیه اضافه کنید.",
  "c-fragrance": "از فاصله ۱۵ سانتی‌متری روی نقاط نبض مانند مچ دست و پشت گوش اسپری کنید. پس از اسپری، مچ‌ها را به هم نمالید.",
  "c-hair": "روی موی مرطوب ماساژ دهید، چند دقیقه صبر کنید و کاملاً آبکشی کنید.",
  "c-body": "پس از دوش روی پوست کمی مرطوب بدن ماساژ دهید تا کاملاً جذب شود.",
};

const inputs: ProductInput[] = [
  // ── مراقبت پوست ─────────────────────────────────────────
  {
    id: 1, name: "سرم ویتامین C ۱۵٪ روشن‌کننده", brand: "b-lumina", category: "c-serum", skin: ALL_SKIN,
    shape: "dropper", tone: "#e3b46a", tags: ["bestseller"], daysAgo: 160, madeIn: "فرانسه",
    summary: "سرم آنتی‌اکسیدان برای پوست درخشان و یکدست",
    description: "ترکیب ویتامین C پایدار با ویتامین E و فرولیک اسید که به کاهش کدری و لک‌های سطحی کمک می‌کند. بافت آبکی و سبک آن به‌سرعت جذب می‌شود و برای استفاده روزانه زیر ضدآفتاب مناسب است.",
    ingredients: "آب، اسکوربیک اسید ۱۵٪، گلیسیرین، توکوفرول، فرولیک اسید، پانتنول، سدیم هیالورونات",
    sizes: [["۳۰ میلی‌لیتر", 1_450_000, 1_690_000, 18], ["۵۰ میلی‌لیتر", 2_150_000, undefined, 6]],
  },
  {
    id: 2, name: "سرم هیالورونیک اسید آبرسان عمیق", brand: "b-lumina", category: "c-serum", skin: ["dry", "normal", "combination", "sensitive"],
    shape: "dropper", tone: "#c9dce6", tags: ["new"], daysAgo: 12, madeIn: "فرانسه",
    summary: "آبرسانی چندلایه با سه وزن مولکولی هیالورونیک اسید",
    description: "سه نوع هیالورونیک اسید با اندازه‌های مختلف، رطوبت را در لایه‌های متفاوت پوست نگه می‌دارند. پوست نرم، پر و شاداب‌تر به نظر می‌رسد بدون اینکه احساس چربی ایجاد شود.",
    ingredients: "آب، سدیم هیالورونات، هیالورونیک اسید هیدرولیز شده، پانتنول، بتائین، آلانتوئین",
    sizes: [["۳۰ میلی‌لیتر", 1_180_000, undefined, 30]],
  },
  {
    id: 3, name: "ژل‌کرم آبرسان سبک روزانه", brand: "b-lumina", category: "c-moisturizer", skin: ["oily", "combination", "normal"],
    shape: "jar", tone: "#ece6dc", daysAgo: 220, madeIn: "فرانسه",
    summary: "رطوبت سبک و بدون چربی برای پوست‌های مختلط تا چرب",
    description: "بافت ژل‌کرمی که مثل آب روی پوست پخش می‌شود و ظاهری مات و سالم باقی می‌گذارد. نیاسینامید به تعادل چربی و کوچک‌تر دیده شدن منافذ کمک می‌کند.",
    ingredients: "آب، اسکوالان، نیاسینامید ۴٪، گلیسیرین، عصاره چای سبز، سدیم هیالورونات",
    sizes: [["۵۰ میلی‌لیتر", 980_000, undefined, 22]],
  },
  {
    id: 4, name: "ژل شستشوی صورت چای سبز", brand: "b-avin", category: "c-cleanser", skin: ["oily", "combination"],
    shape: "pump", tone: "#b7c8a5", tags: ["bestseller"], daysAgo: 300, madeIn: "ایران",
    summary: "پاک‌کننده ملایم با کف لطیف برای پوست چرب",
    description: "چربی و آلودگی روزانه را بدون کشیدگی پوست پاک می‌کند. عصاره چای سبز و زینک PCA به کنترل براقی پوست در طول روز کمک می‌کنند.",
    ingredients: "آب، کوکو گلوکوزاید، گلیسیرین، عصاره برگ چای سبز، زینک PCA، پانتنول",
    sizes: [["۱۵۰ میلی‌لیتر", 420_000, undefined, 40], ["۲۵۰ میلی‌لیتر", 590_000, 650_000, 14]],
  },
  {
    id: 5, name: "شیر پاک‌کن گل رز", brand: "b-avin", category: "c-cleanser", skin: ["dry", "sensitive", "normal"],
    shape: "bottle", tone: "#ebc6c2", daysAgo: 190, madeIn: "ایران",
    summary: "پاک‌کننده کرمی برای آرایش و پوست خشک",
    description: "آرایش و ضدآفتاب را به نرمی پاک می‌کند و پوست را مرطوب و آرام باقی می‌گذارد. با گلاب و روغن بادام شیرین.",
    ingredients: "آب گل رز، روغن بادام شیرین، گلیسیرین، ستیل الکل، آلوئه‌ورا",
    sizes: [["۲۰۰ میلی‌لیتر", 465_000, undefined, 3]],
  },
  {
    id: 6, name: "ماسک خاک رس پاک‌کننده منافذ", brand: "b-avin", category: "c-mask", skin: ["oily", "combination"],
    shape: "jar", tone: "#b6afa4", daysAgo: 140, madeIn: "ایران",
    summary: "ماسک کائولن برای پوستی صاف‌تر و منافذ تمیزتر",
    description: "ترکیب کائولن و بنتونیت چربی اضافه را جذب می‌کند و بافت پوست را صاف‌تر نشان می‌دهد. عصاره بابونه از خشکی بیش از حد جلوگیری می‌کند.",
    ingredients: "کائولن، بنتونیت، آب، گلیسیرین، عصاره بابونه، زینک اکساید",
    sizes: [["۷۵ میلی‌لیتر", 520_000, undefined, 16]],
  },
  {
    id: 7, name: "تونر نیاسینامید ۵٪", brand: "b-avin", category: "c-cleanser", skin: ["oily", "combination", "normal"],
    shape: "bottle", tone: "#e4dfd6", tags: ["new"], daysAgo: 8, madeIn: "ایران",
    summary: "تونر متعادل‌کننده برای پوستی یکدست‌تر",
    description: "تونر بدون الکل که پس از شستشو پوست را برای جذب بهتر سرم آماده می‌کند. نیاسینامید به یکدستی رنگ پوست و تعادل چربی کمک می‌کند.",
    ingredients: "آب، نیاسینامید ۵٪، پانتنول، عصاره سنتلا، بتائین",
    sizes: [["۲۰۰ میلی‌لیتر", 610_000, undefined, 25]],
  },
  {
    id: 8, name: "کرم ضدآفتاب بی‌رنگ SPF50", brand: "b-zhiva", category: "c-sunscreen", skin: ALL_SKIN,
    shape: "tube", tone: "#f2eee6", tags: ["bestseller"], daysAgo: 400, madeIn: "کره جنوبی",
    summary: "محافظت گسترده بدون رد سفید، مناسب استفاده روزانه",
    description: "فیلترهای نسل جدید با بافتی سبک که اثر سفیدی روی پوست باقی نمی‌گذارد. زیر آرایش به‌خوبی می‌نشیند و پوست را مرطوب نگه می‌دارد.",
    ingredients: "آب، اتیل‌هگزیل تریازون، بیس‌اتیل‌هگزیلوکسی‌فنول متوکسی‌فنیل تریازین، نیاسینامید، عصاره سنتلا",
    sizes: [["۵۰ میلی‌لیتر", 690_000, 790_000, 50]],
  },
  {
    id: 9, name: "ضدآفتاب رنگی SPF50", brand: "b-zhiva", category: "c-sunscreen", skin: ["normal", "combination", "oily"],
    shape: "tube", tone: "#d9b693", tags: ["new"], daysAgo: 20, madeIn: "کره جنوبی",
    summary: "محافظت و پوشانندگی سبک در یک مرحله",
    description: "ضدآفتاب با پوشش سبک و طبیعی که ناهمواری‌های رنگی را محو می‌کند. در سه رنگ برای تطابق با طیف وسیعی از پوست‌ها.",
    ingredients: "آب، زینک اکساید، تیتانیوم دی‌اکساید، اکسیدهای آهن، گلیسیرین، اسکوالان",
    colors: { price: 720_000, size: "۵۰ میلی‌لیتر", rows: [["بژ روشن", "#e6c7a8", 12], ["بژ طبیعی", "#d4a882", 9], ["بژ تیره", "#b5835e", 0]] },
  },
  {
    id: 10, name: "کرم ترمیم‌کننده سرامید", brand: "b-zhiva", category: "c-moisturizer", skin: ["dry", "sensitive"],
    shape: "jar", tone: "#e6e1ee", daysAgo: 250, madeIn: "کره جنوبی",
    summary: "تقویت سد دفاعی پوست خشک و حساس",
    description: "سه نوع سرامید همراه با کلسترول و اسیدهای چرب، لایه محافظ پوست را بازسازی می‌کنند. برای پوست‌های قرمز، خشک و تحریک‌شده مناسب است.",
    ingredients: "آب، سرامید NP، سرامید AP، سرامید EOP، کلسترول، اسکوالان، پانتنول",
    sizes: [["۵۰ میلی‌لیتر", 1_050_000, undefined, 11]],
  },
  {
    id: 11, name: "کرم دور چشم پپتید", brand: "b-lumina", category: "c-moisturizer", skin: ALL_SKIN,
    shape: "tube", tone: "#d6cdc2", tags: ["limited"], daysAgo: 45, madeIn: "فرانسه",
    summary: "کاهش ظاهر پف و خطوط ریز دور چشم",
    description: "کمپلکس پپتیدی و کافئین برای پوست ظریف دور چشم. نوک فلزی خنک‌کننده اپلیکاتور به کاهش ظاهر پف صبحگاهی کمک می‌کند.",
    ingredients: "آب، پالمیتویل تری‌پپتید-۱، کافئین، گلیسیرین، شی باتر، توکوفرول",
    sizes: [["۱۵ میلی‌لیتر", 890_000, undefined, 2]],
  },
  {
    id: 12, name: "ماسک خواب شبانه لاوندر", brand: "b-zhiva", category: "c-mask", skin: ["dry", "normal", "sensitive"],
    shape: "jar", tone: "#c8c2dd", daysAgo: 120, madeIn: "کره جنوبی",
    summary: "ماسک ژله‌ای برای صبحی شاداب",
    description: "آخرین مرحله روتین شب که رطوبت را تا صبح در پوست حفظ می‌کند. رایحه ملایم اسطوخودوس حس آرامش ایجاد می‌کند.",
    ingredients: "آب، گلیسیرین، عصاره اسطوخودوس، بتا گلوکان، سدیم هیالورونات",
    sizes: [["۸۰ میلی‌لیتر", 760_000, 840_000, 19]],
  },

  // ── آرایش ──────────────────────────────────────────────
  {
    id: 13, name: "رژلب مات مخملی", brand: "b-mahroo", category: "c-lips", skin: [],
    shape: "lipstick", tone: "#b0645f", tags: ["bestseller"], daysAgo: 280, madeIn: "ایتالیا",
    summary: "رنگ کامل با یک بار کشیدن و حس مخملی روی لب",
    description: "فرمول مات و سبک که لب را خشک نمی‌کند. روغن جوجوبا و ویتامین E لطافت لب را در طول روز حفظ می‌کنند.",
    ingredients: "ایزودودکان، دی‌متیکون، روغن جوجوبا، توکوفرول، رنگ‌دانه‌ها",
    colors: { price: 480_000, size: "۳.۵ گرم", rows: [["رز خاکی", "#b0645f", 30], ["قرمز کلاسیک", "#b3202a", 22], ["نود گرم", "#c58f78", 15], ["آلبالویی", "#6e1f2e", 8], ["صورتی گرد", "#d48a96", 0], ["آجری", "#9c4a32", 12]] },
  },
  {
    id: 14, name: "برق لب مایع", brand: "b-mahroo", category: "c-lips", skin: [],
    shape: "wand", tone: "#e8a089", tags: ["new"], daysAgo: 6, madeIn: "ایتالیا",
    summary: "درخشش شیشه‌ای بدون چسبندگی",
    description: "برق لب با پوشش شفاف تا نیمه‌پوشان و حس آبرسانی. اپلیکاتور پهن برای کشیدن دقیق و سریع.",
    ingredients: "پلی‌بوتن، روغن هسته انگور، روغن کرچک، اسکوالان، رنگ‌دانه‌ها",
    colors: { price: 390_000, size: "۶ میلی‌لیتر", rows: [["شفاف", "#f0d9d6", 20], ["هلویی", "#e8a089", 18], ["صورتی", "#e27a96", 10], ["توتی", "#8e3050", 4]] },
  },
  {
    id: 15, name: "کرم پودر مات ماندگار", brand: "b-mahroo", category: "c-face", skin: ["oily", "combination", "normal"],
    shape: "pump", tone: "#d3a882", tags: ["bestseller"], daysAgo: 330, madeIn: "ایتالیا",
    summary: "پوشش متوسط تا کامل با پایان مات طبیعی",
    description: "تا ۲۴ ساعت ماندگاری بدون ترک خوردن یا تغییر رنگ. بافت قابل لایه‌گذاری که روی پوست سنگینی نمی‌کند.",
    ingredients: "آب، سیکلوپنتاسیلوکسان، تیتانیوم دی‌اکساید، اکسیدهای آهن، گلیسیرین، نیاسینامید",
    colors: { price: 1_280_000, compareAt: 1_420_000, size: "۳۰ میلی‌لیتر", rows: [["۱۰۱ عاجی", "#f0d5b8", 14], ["۱۰۲ بژ روشن", "#e4c19c", 20], ["۱۰۳ بژ", "#d3a882", 25], ["۱۰۴ عسلی", "#bf8f62", 9], ["۱۰۵ کاراملی", "#a3714a", 5]] },
  },
  {
    id: 16, name: "کانسیلر پوشش کامل", brand: "b-mahroo", category: "c-face", skin: ALL_SKIN,
    shape: "wand", tone: "#e2bf9c", daysAgo: 210, madeIn: "ایتالیا",
    summary: "پوشش تیرگی دور چشم و لک‌ها بدون چین خوردن",
    description: "بافت کرمی با پوشانندگی بالا که در خطوط ریز جمع نمی‌شود. اپلیکاتور اسفنجی برای پخش دقیق.",
    ingredients: "آب، دی‌متیکون، تیتانیوم دی‌اکساید، اکسیدهای آهن، کافئین",
    colors: { price: 560_000, size: "۷ میلی‌لیتر", rows: [["روشن", "#efd3b6", 16], ["متوسط", "#e2bf9c", 21], ["گندمی", "#c99b70", 7]] },
  },
  {
    id: 17, name: "پالت سایه چشم ۹ رنگ «غروب کویر»", brand: "b-parnian", category: "c-eyes", skin: [],
    shape: "palette", tone: "#b9825e", tags: ["limited", "exclusive"], daysAgo: 30, madeIn: "آلمان",
    summary: "طیف گرم خاکی، مسی و طلایی با پایان مات و شاین",
    description: "نه رنگ هماهنگ با الهام از رنگ‌های غروب کویر؛ از نودهای روزانه تا مسی‌های پررنگ برای شب. پیگمنت بالا و قابلیت محو شدن آسان.",
    ingredients: "تالک، میکا، منیزیم استئارات، دی‌متیکون، رنگ‌دانه‌ها",
    sizes: [["۹ × ۱.۲ گرم", 1_650_000, undefined, 7]],
  },
  {
    id: 18, name: "ریمل حجم‌دهنده", brand: "b-parnian", category: "c-eyes", skin: [],
    shape: "wand", tone: "#161616", tags: ["bestseller"], daysAgo: 370, madeIn: "آلمان",
    summary: "مژه‌های پرپشت و جدا از هم بدون گلوله شدن",
    description: "برس منحنی که مژه‌ها را از ریشه جدا و حجیم می‌کند. فرمول مقاوم در برابر رطوبت و ریزش.",
    ingredients: "آب، موم زنبور عسل، موم کارنوبا، پانتنول، اکسید آهن سیاه",
    colors: { price: 540_000, size: "۱۰ میلی‌لیتر", rows: [["مشکی", "#111111", 40], ["قهوه‌ای", "#4a3226", 12]] },
  },
  {
    id: 19, name: "خط چشم ماژیکی ضدآب", brand: "b-parnian", category: "c-eyes", skin: [],
    shape: "wand", tone: "#0e0e0e", daysAgo: 260, madeIn: "آلمان",
    summary: "خط دقیق و براق با نوک انعطاف‌پذیر",
    description: "نوک نمدی ظریف برای خط باریک تا پهن. ضدآب و ماندگار در تمام طول روز.",
    ingredients: "آب، اکریلات کوپلیمر، اکسید آهن سیاه، بوتیلن گلیکول",
    sizes: [["۰.۶ میلی‌لیتر", 360_000, undefined, 35]],
  },
  {
    id: 20, name: "پودر فشرده مات", brand: "b-parnian", category: "c-face", skin: ["oily", "combination"],
    shape: "compact", tone: "#dcb796", daysAgo: 180, madeIn: "آلمان",
    summary: "تثبیت آرایش و کنترل براقی در طول روز",
    description: "پودر بسیار نرم که براقی را بدون ایجاد حالت پودری کنترل می‌کند. آینه و پد داخل جعبه برای تمدید در طول روز.",
    ingredients: "تالک، میکا، سیلیکا، دی‌متیکون، اکسیدهای آهن",
    colors: { price: 690_000, size: "۹ گرم", rows: [["روشن", "#ecd2b8", 13], ["طبیعی", "#dcb796", 17], ["گرم", "#c69a72", 6]] },
  },
  {
    id: 21, name: "رژگونه پودری", brand: "b-parnian", category: "c-face", skin: [],
    shape: "compact", tone: "#e59a8c", tags: ["new"], daysAgo: 15, madeIn: "آلمان",
    summary: "رنگ طبیعی و قابل تنظیم برای گونه‌ها",
    description: "رنگ‌دانه‌های ریز که به‌راحتی محو می‌شوند و جلوه‌ای سالم و طبیعی می‌دهند.",
    ingredients: "تالک، میکا، زینک استئارات، اکسیدهای آهن",
    colors: { price: 520_000, size: "۵ گرم", rows: [["گلبهی", "#e59a8c", 15], ["هلویی", "#eaa57a", 11], ["رز", "#c96f7e", 9]] },
  },
  {
    id: 22, name: "هایلایتر نور ابریشمی", brand: "b-mahroo", category: "c-face", skin: [],
    shape: "compact", tone: "#efdcbd", tags: ["limited", "exclusive"], daysAgo: 25, madeIn: "ایتالیا",
    summary: "درخشش ظریف بدون اکلیل درشت",
    description: "پودر پخته با درخشش ابریشمی که روی بلندی‌های صورت نوری نرم و طبیعی ایجاد می‌کند.",
    ingredients: "میکا، تالک، دی‌متیکون، تیتانیوم دی‌اکساید، اکسیدهای آهن",
    colors: { price: 610_000, size: "۸ گرم", rows: [["شامپاینی", "#efdcbd", 6], ["رزگلد", "#e5bfae", 3]] },
  },
  {
    id: 23, name: "بالم لب رنگی ترمیم‌کننده", brand: "b-mahroo", category: "c-lips", skin: [],
    shape: "lipstick", tone: "#cf7d78", daysAgo: 95, madeIn: "ایتالیا",
    summary: "نرمی بالم با کمی رنگ",
    description: "شی باتر و روغن نارگیل لب‌های خشک را ترمیم می‌کنند و رنگ ملایمی برای ظاهری طبیعی باقی می‌ماند.",
    ingredients: "شی باتر، روغن نارگیل، موم زنبور عسل، ویتامین E، رنگ‌دانه‌ها",
    colors: { price: 290_000, size: "۳ گرم", rows: [["گلبهی", "#cf7d78", 28], ["تمشکی", "#a54860", 20], ["بی‌رنگ", "#ead9cf", 30]] },
  },

  // ── عطر ───────────────────────────────────────────────
  {
    id: 24, name: "ادوپرفیوم «شب‌بو» زنانه", brand: "b-termeh", category: "c-fragrance", skin: [],
    shape: "perfume", tone: "#d6bc98", tags: ["bestseller"], daysAgo: 420, madeIn: "فرانسه",
    summary: "گلی، پودری و گرم با ته‌مایه وانیل",
    description: "رایحه‌ای الهام‌گرفته از باغ‌های شب‌هنگام: نت آغازین ترنج، قلب شب‌بو و یاس، و پایه وانیل و مشک.",
    ingredients: "الکل، عطر، آب، بنزیل سالیسیلات، لینالول، کومارین",
    sizes: [["۵۰ میلی‌لیتر", 3_400_000, undefined, 10], ["۱۰۰ میلی‌لیتر", 5_200_000, 5_600_000, 4]],
  },
  {
    id: 25, name: "ادوپرفیوم «سرو» مردانه", brand: "b-termeh", category: "c-fragrance", skin: [],
    shape: "perfume", tone: "#8f9c8c", daysAgo: 230, madeIn: "فرانسه",
    summary: "چوبی و معطر با نت‌های سرو و وتیور",
    description: "رایحه‌ای خنک و چوبی؛ آغاز با برگاموت و فلفل صورتی، قلب سرو و اسطوخودوس و پایه وتیور و عنبر.",
    ingredients: "الکل، عطر، آب، لیمونن، لینالول، سیترال",
    sizes: [["۱۰۰ میلی‌لیتر", 4_800_000, undefined, 8]],
  },
  {
    id: 26, name: "ادوتوالت «بهارنارنج»", brand: "b-termeh", category: "c-fragrance", skin: [],
    shape: "perfume", tone: "#efe0ae", tags: ["new", "limited"], daysAgo: 4, madeIn: "فرانسه",
    summary: "مرکباتی و گلی؛ سبک و شاد برای روز",
    description: "نسخه محدود با رایحه شکوفه نارنج، نرولی و چای سفید. سبک و دلنشین برای استفاده روزانه.",
    ingredients: "الکل، آب، عطر، لیمونن، لینالول، ژرانیول",
    sizes: [["۵۰ میلی‌لیتر", 2_600_000, undefined, 12]],
  },

  // ── مو ────────────────────────────────────────────────
  {
    id: 27, name: "شامپو ترمیم‌کننده موهای آسیب‌دیده", brand: "b-nava", category: "c-hair", skin: [],
    shape: "pump", tone: "#e1d5c0", daysAgo: 200, madeIn: "اسپانیا",
    summary: "پاک‌سازی ملایم و تقویت موهای رنگ‌شده و شکننده",
    description: "شامپو بدون سولفات با پروتئین گندم و روغن آرگان که به کاهش شکنندگی و حفظ رنگ مو کمک می‌کند.",
    ingredients: "آب، سدیم کوکوئیل ایزتیونات، پروتئین گندم هیدرولیز شده، روغن آرگان، پانتنول",
    sizes: [["۴۰۰ میلی‌لیتر", 480_000, undefined, 26]],
  },
  {
    id: 28, name: "روغن آرگان مو", brand: "b-nava", category: "c-hair", skin: [],
    shape: "dropper", tone: "#c49c55", tags: ["bestseller"], daysAgo: 350, madeIn: "اسپانیا",
    summary: "درخشش و کنترل وز بدون چربی",
    description: "چند قطره روی موی مرطوب یا خشک، وز را مهار می‌کند و درخشش طبیعی به مو می‌دهد. محافظت در برابر حرارت سشوار تا ۲۰۰ درجه.",
    ingredients: "سیکلوپنتاسیلوکسان، روغن آرگان، روغن کتان، توکوفرول، عطر",
    sizes: [["۵۰ میلی‌لیتر", 690_000, 760_000, 33], ["۱۰۰ میلی‌لیتر", 1_090_000, undefined, 15]],
  },
  {
    id: 29, name: "ماسک مو کراتین", brand: "b-nava", category: "c-hair", skin: [],
    shape: "jar", tone: "#ebe3d8", daysAgo: 110, madeIn: "اسپانیا",
    summary: "تغذیه عمیق برای موهای خشک و وزدار",
    description: "ماسک غنی با کراتین گیاهی و شی باتر که در ۵ دقیقه مو را نرم و قابل‌حالت‌دهی می‌کند.",
    ingredients: "آب، ستیل الکل، کراتین گیاهی، شی باتر، روغن نارگیل، پانتنول",
    sizes: [["۲۵۰ میلی‌لیتر", 640_000, undefined, 0]],
  },

  // ── بدن ───────────────────────────────────────────────
  {
    id: 30, name: "لوسیون بدن شیر بادام", brand: "b-sepidar", category: "c-body", skin: ["dry", "normal", "sensitive"],
    shape: "pump", tone: "#ede4d3", daysAgo: 150, madeIn: "ایران",
    summary: "مرطوب‌کننده سبک با رایحه گرم بادام",
    description: "لوسیون سریع‌الجذب که پوست بدن را تا ۴۸ ساعت نرم نگه می‌دارد. مناسب استفاده روزانه پس از دوش.",
    ingredients: "آب، روغن بادام شیرین، گلیسیرین، شی باتر، آلانتوئین، عطر",
    sizes: [["۳۰۰ میلی‌لیتر", 450_000, undefined, 42]],
  },
];

const NOW = Date.parse("2026-10-27T09:00:00Z");

/** شماره مجوز بهداشتی (IRC) نمونه و قطعی برای هر محصول */
function sampleIrc(id: number): string {
  return `1228${String(104_700_000_000 + id * 37_011_917).padStart(12, "0")}`;
}

function reviewPool(categoryId: string) {
  if (["c-face", "c-eyes", "c-lips"].includes(categoryId)) return "makeup" as const;
  if (categoryId === "c-fragrance") return "fragrance" as const;
  if (["c-hair", "c-body"].includes(categoryId)) return "care" as const;
  return "skin" as const;
}

function buildVariants(p: ProductInput): ProductVariant[] {
  if (p.colors) {
    return p.colors.rows.map(([colorName, colorHex, stock = 20], i) => ({
      id: `v-${p.id}-${i + 1}`,
      sku: `ZH-${String(p.id).padStart(3, "0")}-${String(i + 1).padStart(2, "0")}`,
      colorName,
      colorHex,
      size: p.colors!.size,
      price: p.colors!.price,
      compareAtPrice: p.colors!.compareAt,
      stock,
    }));
  }
  return (p.sizes ?? []).map(([size, price, compareAtPrice, stock = 20], i) => ({
    id: `v-${p.id}-${i + 1}`,
    sku: `ZH-${String(p.id).padStart(3, "0")}-${String(i + 1).padStart(2, "0")}`,
    size,
    price,
    compareAtPrice,
    stock,
  }));
}

export const reviews: Review[] = inputs.flatMap((p) => buildReviews(p.id, reviewPool(p.category)));

export const products: Product[] = inputs.map((p) => {
  const own = reviews.filter((r) => r.productId === p.id);
  const avg = own.reduce((sum, r) => sum + r.rating, 0) / own.length;
  return {
    images: [],
    id: p.id,
    slug: slugifyFa(p.name),
    name: p.name,
    brandId: p.brand,
    categoryId: p.category,
    skinTypeIds: p.skin,
    shape: p.shape,
    tone: p.tone,
    summary: p.summary,
    description: p.description,
    howToUse: howToUseByCategory[p.category] ?? howToUseByCategory["c-body"],
    ingredients: p.ingredients,
    ircCode: sampleIrc(p.id),
    madeIn: p.madeIn,
    tags: p.tags ?? [],
    variants: buildVariants(p),
    rating: Math.round(avg * 10) / 10,
    reviewCount: own.length,
    soldCount: ((p.id * 2654435761) % 900) + (p.tags?.includes("bestseller") ? 1200 : 40),
    createdAt: new Date(NOW - p.daysAgo * 86_400_000).toISOString(),
  };
});
