export function slugify(text: string): string { return text .normalize('NFD') .replace(/[̀-ͯ]/g, '') // eliminar diacríticos (á→a, ñ→n, ü→u) .toLowerCase() .replace(/[^a-z0-9]+/g, '-') // todo lo no-alfanumérico → guión .replace(/^-+|-+$/g, '') // recortar guiones del inicio/fin .slice(0, 60) // limitar longitud para nombres de archivo } export function buildFileName( processName: string, clientName: string | undefined, date: Date, ext: 'pdf' | 'csv', suffix = '' // '_actual' | '_automatizado' | '_roi' | '' ): string { const dateStr = [ date.getFullYear(), String(date.getMonth() + 1).padStart(2, '0'), String(date.getDate()).padStart(2, '0'), ].join('') const parts = [slugify(processName)] if (clientName?.trim()) parts.push(slugify(clientName.trim())) parts.push(dateStr) return `${parts.join('_')}${suffix}.${ext}` }