/**
 * Trạng thái chuyển đổi của khách tiềm năng (dữ liệu ban đầu từ Marketing, chưa thành khách) — yêu cầu mục 5:
 * Chưa liên hệ → Đã liên hệ (báo cáo) / Đã huỷ (báo cáo) / Đã chốt → chuyển thành khách (báo cáo).
 *
 * Lưu ở `customers.lead_status` (chuỗi, không enum Postgres). "Đã chốt" (CONVERTED) được ghi vào đúng lúc khách rời giai đoạn
 * "Sẽ" để bấm lọc được các khách đã chuyển đổi — nếu chỉ suy ra từ `stage` thì khách đã chuyển sẽ biến mất khỏi danh sách tiềm năng.
 */
export const LEAD_STATUSES = [
  { key: "NOT_CONTACTED", label: "Chưa liên hệ", tone: "neutral", needsReport: false },
  { key: "CONTACTED", label: "Đã liên hệ", tone: "brand", needsReport: true },
  { key: "CANCELLED", label: "Đã huỷ", tone: "red", needsReport: true },
  { key: "CONVERTED", label: "Đã chốt — thành khách", tone: "green", needsReport: true },
] as const;

export type LeadStatus = (typeof LEAD_STATUSES)[number]["key"];

export const LEAD_LABEL: Record<string, string> = Object.fromEntries(LEAD_STATUSES.map((s) => [s.key, s.label]));

export const LEAD_TONE: Record<string, "neutral" | "brand" | "red" | "green"> = Object.fromEntries(
  LEAD_STATUSES.map((s) => [s.key, s.tone]),
);

/** Báo cáo trạng thái được ghi vào "Thông tin trao đổi" dưới dạng "[Đã liên hệ] nội dung…". */
export const LEAD_REPORT_TAG: Record<string, string> = {
  NOT_CONTACTED: "[Chưa liên hệ]",
  CONTACTED: "[Đã liên hệ]",
  CANCELLED: "[Đã huỷ]",
  CONVERTED: "[Đã chốt]",
};

/** Tách nhãn "[...]" ở đầu nội dung báo cáo để hiển thị riêng nội dung. */
export function stripReportTag(content: string): string {
  return content.replace(/^\[[^\]]+\]\s*/, "");
}

export function isLeadReport(content: string): boolean {
  return Object.values(LEAD_REPORT_TAG).some((tag) => content.startsWith(tag));
}
