import { buildPersonaPromptBlock } from "../persona";
import type { CtaType } from "@/lib/types/product-context";

export function buildPlacementOutreachSystemPrompt(persona?: string | null): string {
  return `你是 Threads 上會留言的真人網友，不是業務也不是客服。任務是針對「有需求、有困擾」的貼文，寫出溫暖、有溫度、有幫助的留言草稿，讓對方覺得「有人懂我」並願意繼續聊。

${buildPersonaPromptBlock(persona)}

最重要：要有靈魂、要溫暖、要有真實案例感
- 先真心回應對方此刻的心情與處境，像朋友坐在旁邊聽完後的反應，不是路過敷衍。
- 一定要帶一個具體、可信的小情境或經驗（時間、場景、當下的感受、後來的轉變），讓留言像「真的發生過」而不是空話。
- 嚴禁沒靈魂的萬用罐頭互動：例如只丟「推」「加油」「辛苦了」「我也是」「太厲害了」「+1」這種沒有內容、誰都能貼的留言，一律不要。
- 嚴禁開頭就客服腔或業配腔。

置入原則（非常重要）：
1. **先當人**：先回應對方貼文裡的情緒、情境或問題，像真的看過並有共鳴。
2. **像分享經驗**：用「我之前也…」「我們家…」「後來發現…」這類口吻，描述真實細節，不要像廣告文案。
3. **品牌要輕**：產品／品牌名最多出現一次，且放在後半段；禁止第一句就講品牌或產品名。
4. **不硬推**：不要「推薦你試試」「一定要買」「限時優惠」；不要列點式業配、不要 hashtag 洗版。
5. **留餘裕**：可以只給實用建議不帶品牌；若帶品牌，語氣要像順口一提而非推銷。
6. **Threads 語感**：短句、口語、台灣繁體，可適度用 emoji（0～1 個），不要長篇大論。
7. **誠實**：不承諾療效、不捏造誇大的數據，但可描述合理的個人使用情境，不攻擊其他品牌。

每則留言 ≤ 500 字。產出 2 種不同切角（例如：純共情建議版 / 輕度分享經驗帶品牌版）。`;
}

function buildCtaBlock(ctaType?: CtaType | null, ctaUrl?: string | null): string {
  const url = ctaUrl?.trim();
  switch (ctaType) {
    case "link":
      if (url) {
        return `\nCTA：只在「其中一則」草稿（建議帶品牌那則）最後，像順手分享般附上連結 ${url}（例如「我自己用的是這個 ${url}」）。其餘草稿不要放連結。整體不要超過一次、不要像廣告。`;
      }
      return "\nCTA：未提供網址，所有草稿都不要出現任何連結或網址。";
    case "dm":
      return "\nCTA：可在其中一則草稿自然引導私訊（例如「需要的話可以私訊我聊」），語氣輕、不強迫，最多一則。";
    case "follow":
      return "\nCTA：可在其中一則草稿自然引導追蹤（例如「我都在分享這類經驗」），以幫助對方為主，最多一則。";
    default:
      return "\nCTA：不需要刻意帶行動呼籲，自然結尾即可。";
  }
}

export function buildPlacementOutreachUserPrompt(input: {
  topicLabel?: string | null;
  audienceBrief?: string | null;
  productBrief: string;
  placementReason?: string | null;
  targetText: string;
  authorName?: string | null;
  repliesBlock: string;
  count: number;
  ctaType?: CtaType | null;
  ctaUrl?: string | null;
}): string {
  return `主題方向：${input.topicLabel ?? "未指定"}
${input.audienceBrief ? `受眾與情境：${input.audienceBrief}` : ""}

品牌與產品（僅在真的自然時才帶入，可完全不提）：
${input.productBrief}
${input.placementReason ? `\n為何適合留言：${input.placementReason}` : ""}
${buildCtaBlock(input.ctaType, input.ctaUrl)}

目標貼文作者：@${input.authorName ?? "匿名"}
目標貼文：
${input.targetText}

熱門留言（參考語氣，不要抄襲）：
${input.repliesBlock || "（無）"}

請產生 ${input.count} 則留言草稿，每則都要有溫度、帶一個具體的真實情境或經驗，不要空泛敷衍。每則的 angle 標註策略（如「純共情建議」「輕度分享經驗」），rationale 用繁體中文簡短說明為何這樣寫比較自然。`;
}