/**
 * Vendor label / grouping key of an inbox document — shared by the inbox list (vendor filter,
 * group-by-vendor, sorting) so "the same vendor" means the same thing everywhere.
 *
 * The extracted seller name is often a whole letterhead line
 * ("easybell GmbH | Brückenstraße 5A | 10179 Berlin", "NetConnections GmbH - Jesinger Straße 52 - …"):
 * the label is its first segment, the key additionally ignores case, punctuation and legal forms
 * ("LogYou GmbH" = "LOGYOU GMBH, MÜHLENWEG 4"). A learned profile's vendor name wins.
 */
const LEGAL = /\b(gmbh|mbh|ag|ug|kg|kgaa|ohg|gbr|ek|co|inc|ltd|llc|plc|bv|sa|sarl|srl|se|ood|haftungsbeschraenkt)\b/g

export const inboxVendorLabel = (r: any): string => {
  const raw = String(r?.extracted?._profile?.vendorName || r?.extracted?.seller?.name
    || String(r?.vendorFingerprint || '').replace(/^name:/, '').replace(/^(layout|vat|iban):.*/, '') || '')
  const first = raw.split(/\s[|·•]\s|\s-\s|,\s|\s{3,}/)[0].trim()
  return (first || raw.trim()).slice(0, 48)
}

export const inboxVendorKey = (r: any): string => {
  const folded = inboxVendorLabel(r).toLowerCase()
    .replace(/ä/g, 'ae').replace(/ö/g, 'oe').replace(/ü/g, 'ue').replace(/ß/g, 'ss')
    .normalize('NFD').replace(/[̀-ͯ]/g, '')
    .replace(/[^a-z0-9Ѐ-ӿ ]/g, ' ')
  const key = folded.replace(LEGAL, ' ').replace(/\s+/g, '')
  return key || folded.replace(/\s+/g, '') || '—'
}
