Initial commit

This commit is contained in:
s4luorth
2026-02-07 13:04:04 +01:00
commit 5e0fceab15
82 changed files with 30348 additions and 0 deletions

View File

@@ -0,0 +1,258 @@
/**
* 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);