259 lines
6.7 KiB
JavaScript
259 lines
6.7 KiB
JavaScript
/**
|
||
* 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);
|