/** Download CSV (UTF-8 BOM) so Excel opens Chinese columns correctly. */ export function downloadExcelCsv(csv: string, filename: string) { const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename.endsWith('.csv') ? filename : `${filename}.csv`; a.click(); URL.revokeObjectURL(url); } /** Download binary file from base64 payload returned by HQ export APIs. */ export function downloadBase64File(contentBase64: string, filename: string, mimeType: string) { const binary = atob(contentBase64); const bytes = new Uint8Array(binary.length); for (let i = 0; i < binary.length; i += 1) { bytes[i] = binary.charCodeAt(i); } const blob = new Blob([bytes], { type: mimeType }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; a.click(); URL.revokeObjectURL(url); }