/** * Generiert 9 Bestellungen mit allen Font/Format/Umschlag Kombinationen */ const http = require('http'); const API_URL = 'localhost'; const API_PORT = 4000; // Texte const TEXT_A4 = `Sehr geehrte Damen und Herren, hiermit bestätigen wir den Eingang Ihrer Bestellung und bedanken uns herzlich für Ihr Vertrauen. Ihre Bestellung wird schnellstmöglich bearbeitet und versendet. Sie erhalten in Kürze eine separate Versandbestätigung mit der Sendungsverfolgungsnummer. Sollten Sie Fragen zu Ihrer Bestellung haben, stehen wir Ihnen jederzeit gerne zur Verfügung. Wir wünschen Ihnen viel Freude mit Ihren bestellten Produkten und freuen uns auf eine weitere Zusammenarbeit. Mit freundlichen Grüßen Ihr Skrift-Team`; const TEXT_A6 = `Liebe Grüße! Vielen Dank für Ihre Bestellung. Wir wünschen Ihnen einen wundervollen Tag! Herzlichst, Ihr Skrift-Team`; const orders = [ // TILDA { orderNumber: 'SK-2026-01-02-TILDA-A4', font: 'tilda', format: 'a4', text: TEXT_A4, envelopeFormat: 'c6', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-TILDA-A6Q', font: 'tilda', format: 'a6l', text: TEXT_A6, envelopeFormat: 'din_lang', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-TILDA-A6H', font: 'tilda', format: 'a6p', text: TEXT_A6, envelopeFormat: 'c6', envelopeType: 'custom' }, // ALVA { orderNumber: 'SK-2026-01-02-ALVA-A4', font: 'alva', format: 'a4', text: TEXT_A4, envelopeFormat: 'c6', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-ALVA-A6Q', font: 'alva', format: 'a6l', text: TEXT_A6, envelopeFormat: 'din_lang', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-ALVA-A6H', font: 'alva', format: 'a6p', text: TEXT_A6, envelopeFormat: 'c6', envelopeType: 'custom' }, // ELLIE { orderNumber: 'SK-2026-01-02-ELLIE-A4', font: 'ellie', format: 'a4', text: TEXT_A4, envelopeFormat: 'c6', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-ELLIE-A6Q', font: 'ellie', format: 'a6l', text: TEXT_A6, envelopeFormat: 'din_lang', envelopeType: 'recipient' }, { orderNumber: 'SK-2026-01-02-ELLIE-A6H', font: 'ellie', format: 'a6p', text: TEXT_A6, envelopeFormat: 'c6', envelopeType: 'custom' } ]; async function generateOrder(order) { return new Promise((resolve, reject) => { const envelope = order.envelopeType === 'recipient' ? { index: 0, format: order.envelopeFormat, font: order.font, type: 'recipient', data: { Vorname: 'Max', Nachname: 'Mustermann', Strasse: 'Hauptstraße 1', PLZ: '10115', Ort: 'Berlin' } } : { index: 0, format: order.envelopeFormat, font: order.font, type: 'custom', data: { customText: 'Für unsere geschätzten Kunden' } }; const requestBody = { orderNumber: order.orderNumber, letters: [ { index: 0, format: order.format, font: order.font, text: order.text, placeholders: {} } ], envelopes: [envelope] }; const body = JSON.stringify(requestBody); const options = { hostname: API_URL, port: API_PORT, path: '/api/order/generate', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) }, timeout: 60000 }; const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { try { const result = JSON.parse(data); resolve({ order: order.orderNumber, result }); } catch (err) { reject({ order: order.orderNumber, error: err.message, data }); } }); }); req.on('error', (err) => { reject({ order: order.orderNumber, error: err.message }); }); req.on('timeout', () => { req.destroy(); reject({ order: order.orderNumber, error: 'timeout' }); }); req.write(body); req.end(); }); } async function generateAllOrders() { console.log('╔════════════════════════════════════════════════════════════╗'); console.log('║ GENERIERE 9 BESTELLUNGEN ║'); console.log('║ 3 Fonts × 3 Formate = 9 Kombinationen ║'); console.log('╚════════════════════════════════════════════════════════════╝\n'); const results = []; for (let i = 0; i < orders.length; i++) { const order = orders[i]; const num = i + 1; console.log(`\n[${num}/9] Generiere: ${order.orderNumber}`); console.log(` Font: ${order.font.toUpperCase()}`); console.log(` Format: ${order.format.toUpperCase()}`); console.log(` Umschlag: ${order.envelopeFormat} (${order.envelopeType})`); try { const result = await generateOrder(order); console.log(` ✅ Erfolgreich generiert`); results.push(result); } catch (err) { console.log(` ❌ Fehler: ${err.error || err.message}`); results.push({ order: order.orderNumber, error: err }); } // Pause zwischen Requests (Rate Limiting) if (i < orders.length - 1) { console.log(` ⏳ Warte 3 Sekunden...`); await new Promise(resolve => setTimeout(resolve, 3000)); } } console.log('\n\n' + '═'.repeat(60)); console.log('ZUSAMMENFASSUNG'); console.log('═'.repeat(60)); const successful = results.filter(r => !r.error); const failed = results.filter(r => r.error); console.log(`\n✅ Erfolgreich: ${successful.length}/9`); console.log(`❌ Fehlgeschlagen: ${failed.length}/9`); if (successful.length > 0) { console.log('\n📦 Generierte Bestellungen:'); successful.forEach(r => { console.log(` - ${r.order}`); }); } if (failed.length > 0) { console.log('\n❌ Fehlgeschlagene Bestellungen:'); failed.forEach(r => { console.log(` - ${r.order}: ${r.error.error || r.error.message}`); }); } console.log('\n' + '═'.repeat(60)); console.log('\n💾 Alle Dateien in: E:\\Dokumente\\05_Skrift\\Frontend_Backend_Konfigurator\\Docker Backend\\output\\'); } // Start generateAllOrders().catch(console.error);