fix(crm): servir el PDF de cotización por el backend (no exponer MinIO)

La URL prefirmada usaba el host interno http://minio:9000 (no accesible desde el
navegador). Se agrega GET /quotes/{id}/pdf que devuelve el PDF por el backend
(vía nginx) y el visor usa un blob autenticado (api.getBlob).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ernesto Herrera
2026-07-30 10:33:14 -06:00
parent e09cb02b8b
commit 03055cd377
3 changed files with 18 additions and 9 deletions

View File

@@ -146,8 +146,10 @@
if (!companyId || !quote) return;
busy = true;
try {
const { url } = await quotesAPI.pdfUrl(quote.id, companyId);
if (url) window.open(url, '_blank', 'noopener');
const blob = await quotesAPI.pdfBlob(quote.id, companyId);
const url = URL.createObjectURL(blob);
window.open(url, '_blank', 'noopener');
setTimeout(() => URL.revokeObjectURL(url), 60000);
} catch (e) {
toast.error(e instanceof Error ? e.message : 'No se pudo generar el PDF');
} finally {