/**
 * product-description-generate
 * 通过统一 AI Provider 适配层生成商品描述。
 * Provider/模型由 ai_provider_configs 表的 purpose='product_description' 行控制。
 *
 * Body: { name: string; brand?: string; category?: string; current?: string }
 * Resp: { description: string; provider: string; model: string }
 */
import { corsHeaders, handlePreflight } from "../_shared/cors.ts";
import { generateText, loadProviderConfig } from "../_shared/aiProvider.ts";

function json(data: unknown, status = 200) {
  return new Response(JSON.stringify(data), {
    status,
    headers: { ...corsHeaders, "Content-Type": "application/json" },
  });
}

Deno.serve(async (req) => {
  const pre = handlePreflight(req);
  if (pre) return pre;

  try {
    const { name, brand, category, current } = await req.json().catch(() => ({}));
    if (!name || typeof name !== "string") {
      return json({ error: "name 必填" }, 400);
    }

    const systemPrompt =
      "你是资深电商文案撰写专家。请用中文写出有吸引力、结构清晰、面向消费者的商品描述。" +
      "要求：1) 200~350字；2) 突出卖点与使用场景；3) 简明分段（可使用短标题/项目符号）；" +
      "4) 不编造未知参数与价格；5) 不要返回 Markdown 代码块包裹。";

    const userPrompt = [
      `商品名称：${name}`,
      brand ? `品牌：${brand}` : "",
      category ? `分类：${category}` : "",
      current ? `参考已有描述（可改写优化）：${current}` : "",
      "请输出最终的商品描述正文。",
    ].filter(Boolean).join("\n");

    const cfg = await loadProviderConfig("product_description");
    const description = await generateText("product_description", {
      system: systemPrompt,
      user: userPrompt,
    });

    return json({ description, provider: cfg.provider, model: cfg.model });
  } catch (e: any) {
    console.error("product-description-generate error", e);
    const status = e?.status ?? 500;
    return json({ error: e?.message ?? String(e), code: e?.code }, status);
  }
});
