/**
 * 原产品链接名结构化解析。
 *
 * 名称格式（与 admin 端 utils/origin-name.ts 的调查结论一致）：
 * `国家（物流备注）品名-SKU-工艺位置[-仓库名]`
 *
 * 仓库段为可选；段与段之间以 `-` 分隔，段 1 内国家与物流备注以全角（或半角）括号分隔。
 * 解析失败的字段置 null，不抛异常 —— 上游名称是自由文本，解析器必须容错。
 */
export interface ParsedOriginName {
  country: string | null;
  logisticsLabel: string | null;
  productName: string | null;
  skuCode: string | null;
  craftLabel: string | null;
  warehouseLabel: string | null;
}

const EMPTY: ParsedOriginName = {
  country: null,
  logisticsLabel: null,
  productName: null,
  skuCode: null,
  craftLabel: null,
  warehouseLabel: null,
};

function splitSegment1(seg: string): Pick<ParsedOriginName, 'country' | 'logisticsLabel' | 'productName'> {
  // SDS 上游名称存在半角/全角括号混用（如 `美国(不包邮）…`），先归一成全角再配对
  const normalized = seg.replace(/\(/g, '（').replace(/\)/g, '）');
  const openAt = normalized.indexOf('（');
  if (openAt >= 0) {
    const closeAt = normalized.indexOf('）', openAt);
    if (closeAt > openAt) {
      return {
        country: normalized.slice(0, openAt).trim() || null,
        logisticsLabel: normalized.slice(openAt + 1, closeAt).trim() || null,
        productName: normalized.slice(closeAt + 1).trim() || null,
      };
    }
  }
  return { country: normalized.trim() || null, logisticsLabel: null, productName: null };
}

export function parseOriginName(name: string | null | undefined): ParsedOriginName {
  if (!name) return EMPTY;
  const segs = name.split('-').map((s) => s.trim());
  if (segs.length === 0 || segs[0] === '') return EMPTY;
  return {
    ...splitSegment1(segs[0]),
    skuCode: segs[1] || null,
    craftLabel: segs[2] || null,
    // 仓库名本身可能含连字符，第 4 段起整体保留
    warehouseLabel: segs.length > 3 ? segs.slice(3).join('-') : null,
  };
}

/**
 * 分组键：与 admin 端 truncateToProcess（KEEP_SEGMENTS = 3）语义一致，
 * 保留按 `-` 分段的前 3 段，丢弃可选的仓库名段。
 */
export function originGroupKey(name: string | null | undefined): string {
  if (!name) return '';
  return name.split('-').slice(0, 3).join('-');
}
