const HerramientaSet = require('../models/HerramientaSet'); const HerramientaAsignacion = require('../models/HerramientaAsignacion'); const QRCode = require('qrcode'); async function testQrFlow() { console.log('=== TEST DE FLUJO DE CÓDIGOS QR Y MANIFIESTO HTML ==='); const companyId = 1; // 1. Obtener Sets existentes console.log('1. Consultando sets de herramientas de Telcotronics...'); const sets = await HerramientaSet.findAll(companyId); if (sets.length === 0) { throw new Error('No hay sets en Telcotronics para probar'); } const testSet = sets[0]; console.log(` ✓ Set encontrado: "${testSet.nombre}" (ID: ${testSet.id}, Código: ${testSet.codigo})`); console.log(` ✓ Token QR: ${testSet.qr_token}`); if (!testSet.qr_token) { throw new Error('El set no tiene qr_token'); } // 2. Probar findByToken console.log('2. Buscando set mediante findByToken(qr_token)...'); const setByToken = await HerramientaSet.findByToken(testSet.qr_token); if (!setByToken) { throw new Error('findByToken retornó null'); } console.log(` ✓ Set recuperado: ${setByToken.nombre} | Empresa: ${setByToken.company_name} | Herramientas: ${setByToken.herramientas.length}`); console.log(` ✓ Estado custodia actual: ${setByToken.custodia ? 'EN CUSTODIA de ' + setByToken.custodia.tecnico_nombre : 'DISPONIBLE EN BODEGA'}`); // 3. Generar código QR con la librería qrcode console.log('3. Generando código QR en formato Data URL...'); const scanUrl = `https://soporte.sigmac.app/qr/set/${testSet.qr_token}`; const qrDataUrl = await QRCode.toDataURL(scanUrl, { width: 260, margin: 1, color: { dark: '#000000', light: '#ffffff' } }); if (!qrDataUrl.startsWith('data:image/png;base64,')) { throw new Error('El QR generado no es un Data URL de PNG válido'); } console.log(` ✓ Código QR generado correctamente (longitud base64: ${qrDataUrl.length} bytes)`); console.log(` ✓ URL destino del QR: ${scanUrl}`); console.log('=== TEST DE QR Y MANIFIESTO FINALIZADO EXITOSAMENTE ==='); process.exit(0); } testQrFlow().catch(err => { console.error('ERROR EN TEST:', err); process.exit(1); });