import type { Metadata } from "next";

import { getLocaleOption, type SupportedLocale } from "@/lib/i18n-config";
import { getLocalizedPublicPath, getPublicLanguageAlternates } from "@/lib/i18n-urls";
import { getPublicSiteUrl } from "@/lib/mail-urls";
import { OFFICIAL_MAIL_SITE_NAME } from "@/lib/official-mail-brand";

type SeoCopy = { description: string; title: string };
type SeoCopyRow = readonly [SeoCopy, SeoCopy, SeoCopy, SeoCopy, SeoCopy, SeoCopy];

export type PublicSeoPageKey =
  | "home"
  | "guide"
  | "blog"
  | "domainCheck"
  | "partner"
  | "terms"
  | "privacy"
  | "businessEmail"
  | "domainEmail"
  | "aiSummary"
  | "teamMailbox"
  | "secureEmail"
  | "faq";

const SEO_COPY: Record<PublicSeoPageKey, SeoCopyRow> = {
  home: [
    { title: "오피셜메일 | 무료 기업메일·회사 이메일 만들기", description: "회사 도메인 대표 메일 1개와 웹메일은 무료입니다. 성장 플랜에서 팀 메일함과 AI 메일 요약을 추가하세요." },
    { title: "OfficialMail | Business Email for Solo Founders and Teams", description: "One primary mailbox and webmail are free with your company domain. Team mailboxes and AI summaries are available on the Growth plan." },
    { title: "OfficialMail | 面向创业者和团队的企业邮箱", description: "公司域名的一个主邮箱和网页邮箱免费。团队邮箱和 AI 摘要可在成长方案中使用。" },
    { title: "OfficialMail | 個人事業主とチーム向けビジネスメール", description: "会社ドメインの代表メール1件とWebメールは無料です。チームメールボックスとAI要約は成長プランで利用できます。" },
    { title: "OfficialMail | Email doanh nghiệp cho nhà sáng lập và đội ngũ", description: "Một hộp thư chính và webmail với tên miền công ty được dùng miễn phí. Hộp thư nhóm và tóm tắt AI có trong gói Tăng trưởng." },
    { title: "OfficialMail | Деловая почта для предпринимателей и команд", description: "Один основной ящик и веб-почта на домене компании бесплатны. Командные ящики и AI-сводки доступны на тарифе «Рост»." },
  ],
  guide: [
    { title: "기업메일 설정 가이드 | 도메인 연결·MX·SPF·DKIM", description: "도메인 연결 위치부터 MX, SPF, DKIM, DMARC 입력과 검증, 메일 송수신 테스트까지 단계별로 확인하세요." },
    { title: "Business Email Setup Guide | Domain, MX, SPF and DKIM", description: "Follow each step to find your DNS manager, add and verify MX, SPF, DKIM and DMARC records, and test sending and receiving." },
    { title: "企业邮箱设置指南 | 域名、MX、SPF 与 DKIM", description: "逐步了解 DNS 管理位置、MX、SPF、DKIM、DMARC 记录的添加与验证，以及邮件收发测试。" },
    { title: "ビジネスメール設定ガイド | ドメイン・MX・SPF・DKIM", description: "DNS管理場所の確認からMX、SPF、DKIM、DMARCの登録・検証、送受信テストまで順番に案内します。" },
    { title: "Hướng dẫn thiết lập email doanh nghiệp | Tên miền, MX, SPF, DKIM", description: "Làm theo từng bước để tìm nơi quản lý DNS, thêm và xác minh MX, SPF, DKIM, DMARC rồi kiểm tra gửi nhận email." },
    { title: "Настройка деловой почты | Домен, MX, SPF и DKIM", description: "Пошаговая инструкция по поиску DNS, добавлению и проверке MX, SPF, DKIM, DMARC и тестированию отправки и получения." },
  ],
  blog: [
    { title: "오피셜메일 블로그 | 기업메일·도메인 메일 실무", description: "기업메일 만들기, 도메인 연결, MX·SPF·DKIM 설정, Gmail 반송 해결과 업무용 메일 운영 경험을 다룹니다." },
    { title: "OfficialMail Blog | Practical Business and Domain Email Guides", description: "Practical guides to business email, domain connection, MX, SPF and DKIM setup, Gmail bounce errors, and mailbox operations." },
    { title: "OfficialMail 博客 | 企业邮箱与域名邮箱实用指南", description: "涵盖企业邮箱创建、域名连接、MX、SPF、DKIM 设置、Gmail 退信处理与邮箱运营。" },
    { title: "OfficialMailブログ | ビジネスメールとドメインメール実務", description: "ビジネスメール作成、ドメイン接続、MX・SPF・DKIM設定、Gmail不達対策、メール運用を解説します。" },
    { title: "Blog OfficialMail | Hướng dẫn email doanh nghiệp và tên miền", description: "Hướng dẫn thực tế về email doanh nghiệp, kết nối tên miền, MX, SPF, DKIM, lỗi trả thư Gmail và vận hành hộp thư." },
    { title: "Блог OfficialMail | Деловая и доменная почта на практике", description: "Практические материалы о деловой почте, подключении домена, MX, SPF, DKIM, возвратах Gmail и работе с ящиками." },
  ],
  domainCheck: [
    { title: "도메인 메일 DNS 무료 진단 | MX·SPF·DKIM·DMARC 확인", description: "도메인을 입력하면 MX, SPF, DKIM, DMARC 레코드를 조회하고 Gmail 반송과 수신 오류 원인을 확인합니다." },
    { title: "Free Domain Email DNS Check | MX, SPF, DKIM and DMARC", description: "Enter a domain to inspect MX, SPF, DKIM and DMARC records and diagnose Gmail bounces or receiving problems." },
    { title: "免费域名邮箱 DNS 检测 | MX、SPF、DKIM、DMARC", description: "输入域名即可检查 MX、SPF、DKIM、DMARC 记录，并排查 Gmail 退信或收信问题。" },
    { title: "ドメインメールDNS無料診断 | MX・SPF・DKIM・DMARC", description: "ドメインを入力してMX、SPF、DKIM、DMARCを確認し、Gmail不達や受信問題の原因を診断します。" },
    { title: "Kiểm tra DNS email tên miền miễn phí | MX, SPF, DKIM, DMARC", description: "Nhập tên miền để kiểm tra MX, SPF, DKIM, DMARC và chẩn đoán thư Gmail bị trả lại hoặc lỗi nhận thư." },
    { title: "Бесплатная проверка DNS доменной почты | MX, SPF, DKIM, DMARC", description: "Введите домен, чтобы проверить MX, SPF, DKIM и DMARC и найти причины возвратов Gmail или проблем с приемом." },
  ],
  partner: [
    { title: "오피셜메일 제휴 문의 | 기업·기관 협업", description: "도메인, 웹사이트, 창업 지원, 교육과 커뮤니티 분야의 기업·기관 협업 제안을 받습니다." },
    { title: "OfficialMail Partnerships | Business and Institutional Collaboration", description: "Discuss partnerships in domains, websites, startup support, education, communities, and product integrations." },
    { title: "OfficialMail 合作咨询 | 企业与机构合作", description: "欢迎域名、网站、创业支持、教育、社区及产品集成领域的企业与机构洽谈合作。" },
    { title: "OfficialMail 提携お問い合わせ | 企業・機関との協業", description: "ドメイン、Webサイト、創業支援、教育、コミュニティ、製品連携に関する協業をご相談ください。" },
    { title: "Hợp tác cùng OfficialMail | Doanh nghiệp và tổ chức", description: "Trao đổi cơ hội hợp tác về tên miền, website, hỗ trợ khởi nghiệp, giáo dục, cộng đồng và tích hợp sản phẩm." },
    { title: "Партнерство с OfficialMail | Компании и организации", description: "Обсудите сотрудничество в сфере доменов, сайтов, поддержки стартапов, образования, сообществ и интеграций." },
  ],
  terms: [
    { title: "이용약관 | 오피셜메일", description: "오피셜메일 서비스 이용약관" },
    { title: "Terms of Service | OfficialMail", description: "Terms governing the use of OfficialMail services." },
    { title: "服务条款 | OfficialMail", description: "OfficialMail 服务使用条款。" },
    { title: "利用規約 | OfficialMail", description: "OfficialMailサービスの利用規約です。" },
    { title: "Điều khoản sử dụng | OfficialMail", description: "Điều khoản áp dụng cho việc sử dụng dịch vụ OfficialMail." },
    { title: "Условия использования | OfficialMail", description: "Условия использования сервисов OfficialMail." },
  ],
  privacy: [
    { title: "개인정보처리방침 | 오피셜메일", description: "오피셜메일 서비스 개인정보처리방침" },
    { title: "Privacy Policy | OfficialMail", description: "OfficialMail privacy policy and personal data handling practices." },
    { title: "隐私政策 | OfficialMail", description: "OfficialMail 的隐私政策与个人信息处理方式。" },
    { title: "プライバシーポリシー | OfficialMail", description: "OfficialMailの個人情報保護方針です。" },
    { title: "Chính sách quyền riêng tư | OfficialMail", description: "Chính sách quyền riêng tư và xử lý dữ liệu cá nhân của OfficialMail." },
    { title: "Политика конфиденциальности | OfficialMail", description: "Политика OfficialMail в отношении конфиденциальности и персональных данных." },
  ],
  businessEmail: [
    { title: "무료 기업메일로 회사 이메일 만들기 | 오피셜메일", description: "회사 도메인 대표 메일 1개와 웹메일은 무료입니다. 팀 확장과 AI 요약은 성장 플랜에서 이용할 수 있습니다." },
    { title: "Create Business Email Free | OfficialMail", description: "One company mailbox and webmail are free. Team mailboxes and AI summaries are available on the Growth plan." },
    { title: "免费创建企业邮箱 | OfficialMail", description: "一个公司域名邮箱和网页邮箱免费。团队邮箱与 AI 摘要需使用成长方案。" },
    { title: "無料で会社メールを作成 | OfficialMail", description: "会社ドメインの代表メール1件とWebメールは無料です。チームメールボックスとAI要約は成長プランで利用できます。" },
    { title: "Tạo email doanh nghiệp miễn phí | OfficialMail", description: "Một hộp thư chính và webmail theo tên miền công ty được dùng miễn phí. Hộp thư nhóm và tóm tắt AI có trong gói Tăng trưởng." },
    { title: "Создать деловую почту бесплатно | OfficialMail", description: "Один ящик на домене компании и веб-почта бесплатны. Командные ящики и AI-сводки доступны на тарифе «Рост»." },
  ],
  domainEmail: [
    { title: "회사 이메일 도메인과 공식 주소 만들기 | 오피셜메일", description: "회사 도메인으로 contact@, support@ 같은 공식 주소를 만들고 MX, SPF, DKIM까지 연결하세요." },
    { title: "Create a Company Domain Email Address | OfficialMail", description: "Create official addresses such as contact@ or support@ on your company domain and configure MX, SPF, and DKIM." },
    { title: "创建公司域名邮箱地址 | OfficialMail", description: "使用公司域名创建 contact@、support@ 等官方地址，并配置 MX、SPF 和 DKIM。" },
    { title: "会社ドメインのメールアドレスを作成 | OfficialMail", description: "会社ドメインでcontact@やsupport@などの公式アドレスを作り、MX・SPF・DKIMを設定します。" },
    { title: "Tạo địa chỉ email theo tên miền công ty | OfficialMail", description: "Tạo địa chỉ chính thức như contact@ hoặc support@ trên tên miền công ty và thiết lập MX, SPF, DKIM." },
    { title: "Создать почту на домене компании | OfficialMail", description: "Создайте адреса contact@ или support@ на домене компании и настройте MX, SPF и DKIM." },
  ],
  aiSummary: [
    { title: "AI 메일 요약으로 긴 이메일 핵심 확인 | 오피셜메일", description: "수신 메일의 핵심, 확인할 사항과 답장 방향을 AI가 요약해 보조 이메일로 전달합니다." },
    { title: "AI Email Summaries for Business Mail | OfficialMail", description: "Receive concise summaries of key points, action items, and reply direction for incoming business emails." },
    { title: "AI 企业邮件摘要 | OfficialMail", description: "AI 提取来信重点、待办事项和回复方向，并发送到您的辅助邮箱。" },
    { title: "AIメール要約で長文の要点を確認 | OfficialMail", description: "受信メールの要点、確認事項、返信方針をAIが要約して補助メールへ届けます。" },
    { title: "Tóm tắt email doanh nghiệp bằng AI | OfficialMail", description: "AI tóm tắt điểm chính, việc cần làm và hướng trả lời của email đến rồi gửi đến email phụ của bạn." },
    { title: "AI-сводки деловых писем | OfficialMail", description: "AI выделяет ключевые мысли, задачи и направление ответа во входящих письмах и отправляет сводку на резервный email." },
  ],
  teamMailbox: [
    { title: "대표 메일에서 팀 메일함으로 확장 | 오피셜메일", description: "대표 메일을 유지하면서 고객지원, 영업과 운영 담당자별 메일함을 추가해 팀 업무를 분리하세요." },
    { title: "Expand from One Mailbox to Team Email | OfficialMail", description: "Keep your primary address and add separate mailboxes for support, sales, and operations as your team grows." },
    { title: "从主邮箱扩展到团队邮箱 | OfficialMail", description: "保留主邮箱，并随着团队发展为客服、销售和运营添加独立邮箱。" },
    { title: "代表メールからチームメールへ拡張 | OfficialMail", description: "代表アドレスを維持しながら、サポート、営業、運用担当者のメールボックスを追加できます。" },
    { title: "Mở rộng từ hộp thư chính sang email nhóm | OfficialMail", description: "Giữ địa chỉ chính và thêm hộp thư riêng cho hỗ trợ, bán hàng, vận hành khi đội ngũ phát triển." },
    { title: "От основного ящика к командной почте | OfficialMail", description: "Сохраните основной адрес и добавляйте отдельные ящики поддержки, продаж и операций по мере роста команды." },
  ],
  secureEmail: [
    { title: "안전한 기업메일 운영과 발신 인증 | 오피셜메일", description: "업무 메일을 개인 계정과 분리하고 SPF, DKIM, DMARC 발신 인증과 스팸 필터로 안전하게 운영하세요." },
    { title: "Secure Business Email and Sender Authentication | OfficialMail", description: "Separate work from personal mail and improve security with SPF, DKIM, DMARC, and spam filtering." },
    { title: "安全的企业邮箱与发件人认证 | OfficialMail", description: "将工作邮件与个人邮箱分离，并通过 SPF、DKIM、DMARC 和垃圾邮件过滤提升安全性。" },
    { title: "安全なビジネスメールと送信認証 | OfficialMail", description: "業務メールを個人アカウントから分離し、SPF・DKIM・DMARCと迷惑メール対策で安全に運用します。" },
    { title: "Email doanh nghiệp an toàn và xác thực người gửi | OfficialMail", description: "Tách email công việc khỏi cá nhân và tăng bảo mật bằng SPF, DKIM, DMARC cùng bộ lọc thư rác." },
    { title: "Безопасная деловая почта и аутентификация | OfficialMail", description: "Отделите рабочую почту от личной и повысьте безопасность с SPF, DKIM, DMARC и фильтрацией спама." },
  ],
  faq: [
    { title: "오피셜메일 자주 묻는 질문 | 무료 기업메일·도메인 연결", description: "무료 대표 메일, 도메인 연결, AI 요약, 팀 확장과 결제에 관한 자주 묻는 질문을 확인하세요." },
    { title: "OfficialMail FAQ | Free Business Email and Domain Setup", description: "Answers about the free primary mailbox, domain connection, AI summaries, team expansion, and billing." },
    { title: "OfficialMail 常见问题 | 免费企业邮箱与域名连接", description: "了解免费主邮箱、域名连接、AI 摘要、团队扩展和付款相关问题。" },
    { title: "OfficialMail よくある質問 | 無料ビジネスメールとドメイン接続", description: "無料代表メール、ドメイン接続、AI要約、チーム拡張、支払いに関する質問を確認できます。" },
    { title: "Câu hỏi thường gặp về OfficialMail | Email miễn phí và tên miền", description: "Giải đáp về hộp thư chính miễn phí, kết nối tên miền, tóm tắt AI, mở rộng nhóm và thanh toán." },
    { title: "Вопросы об OfficialMail | Бесплатная почта и подключение домена", description: "Ответы о бесплатном основном ящике, подключении домена, AI-сводках, расширении команды и оплате." },
  ],
};

const localeIndex: Record<SupportedLocale, number> = {
  ko: 0,
  en: 1,
  zh: 2,
  ja: 3,
  vi: 4,
  ru: 5,
};

const openGraphLocale: Record<SupportedLocale, string> = {
  ko: "ko_KR",
  en: "en_US",
  zh: "zh_CN",
  ja: "ja_JP",
  vi: "vi_VN",
  ru: "ru_RU",
};

export function getPublicSeoCopy(page: PublicSeoPageKey, locale: SupportedLocale) {
  return SEO_COPY[page][localeIndex[locale]];
}

export function buildPublicPageMetadata({
  locale,
  page,
  pathname,
  imageUrl = "/images/officialmail-og-20260923.png",
  type = "website",
}: {
  imageUrl?: string;
  locale: SupportedLocale;
  page: PublicSeoPageKey;
  pathname: string;
  type?: "article" | "website";
}): Metadata {
  const origin = getPublicSiteUrl();
  const copy = getPublicSeoCopy(page, locale);
  const canonical = new URL(getLocalizedPublicPath(pathname, locale), origin).toString();

  return {
    title: copy.title,
    description: copy.description,
    alternates: {
      canonical,
      languages: getPublicLanguageAlternates(pathname, origin),
    },
    openGraph: {
      title: copy.title,
      description: copy.description,
      images: [imageUrl],
      locale: openGraphLocale[locale],
      siteName: OFFICIAL_MAIL_SITE_NAME,
      type,
      url: canonical,
    },
    twitter: {
      card: "summary_large_image",
      title: copy.title,
      description: copy.description,
      images: [imageUrl],
    },
  };
}

export function getPageHtmlLanguage(locale: SupportedLocale) {
  return getLocaleOption(locale).htmlLang;
}
