// Loop 10 (actions.ts zerlegen, Schnitt 4): der Dateinamens-Sanitizer der
// XLSX-Exporte — als EINE Quelle für den Summary-Export (eigene Datei) und
// die drei deferred-Exporte (verbleiben in actions.ts; nur dieser geteilte
// Helfer zieht um, ihre Funktionskörper bleiben unangetastet). Bewusst
// KEINE 'use server'-Datei. Wortgleich aus actions.ts verschoben.

export function sanitizeSheetFilePart(s: string | null): string {
  return (s ?? '').replace(/[^0-9A-Za-z_-]+/g, '_').replace(/^_+|_+$/g, '') || 'QAF'
}
