Files
tilbudgivern/archive/test-files/test-package-calculation.js
T

105 lines
3.5 KiB
JavaScript

/**
* Test script til at teste SmartPackage geometri-beregninger
*/
const axios = require('axios');
const mysql = require('mysql2/promise');
const LOCAL_API = 'http://localhost:4031';
const dbConfig = {
host: 'localhost',
user: 'tilbudgivern_service',
password: process.env.DB_PASSWORD,
database: 'tilbudgivern'
};
async function testPackageCalculation() {
console.log('🧪 Tester SmartPackage geometri-beregning...\n');
try {
// Test geometri (eksempel hus)
const testGeometry = {
length_main: 15, // 15 meter facadelængde
width_main: 10, // 10 meter husbredde
total_area: 85, // 85 m² tagflade
stern_to_ridge_height: 3.5,
roof_angle_degrees: 30,
nedløb_antal: 4
};
console.log('📐 Test geometri:');
console.log(` Facadelængde: ${testGeometry.length_main}m`);
console.log(` Husbredde: ${testGeometry.width_main}m`);
console.log(` Tagflade: ${testGeometry.total_area}m²`);
console.log(` Nedløb antal: ${testGeometry.nedløb_antal}\n`);
// Test hver pakke
const packageIds = [97, 98, 99, 100, 101, 102]; // Tagrende, Nedløb, Spær, B7, Rygning, Taghætte
const packageNames = [
'Tagrende med Konsoljern',
'Nedløb komplet',
'Opretning af spær',
'B7 montering inkl. lægter',
'Rygning B7',
'Taghætte B7'
];
for (let i = 0; i < packageIds.length; i++) {
const packageId = packageIds[i];
const packageName = packageNames[i];
console.log(`\n${'='.repeat(60)}`);
console.log(`📦 ${packageName} (ID: ${packageId})`);
console.log('='.repeat(60));
try {
const response = await axios.post(
`${LOCAL_API}/api/smart-packages/${packageId}/calculate-with-geometry`,
{ geometry: testGeometry }
);
if (response.data.success) {
const result = response.data;
console.log(`\n✅ Beregning gennemført!`);
console.log(`\n📊 Materialer (${result.materials.length} stk):`);
result.materials.forEach((m, idx) => {
console.log(` ${idx + 1}. ${m.name}`);
console.log(` Antal: ${m.quantity}`);
console.log(` Pris: ${m.price.toFixed(2)} kr (inkl. 20% avance)`);
console.log(` Formel: ${m.formula_used}`);
console.log(` Total: ${(m.quantity * m.price).toFixed(2)} kr\n`);
});
console.log(`\n⏱️ Arbejde:`);
console.log(` Timer: ${result.labor.hours.toFixed(2)}`);
console.log(` Timepris: ${result.labor.hourly_rate} kr`);
console.log(` Arbejdsløn: ${result.labor.cost.toFixed(2)} kr`);
console.log(`\n💰 Totaler:`);
console.log(` Materialer: ${result.totals.material_cost.toFixed(2)} kr`);
console.log(` Arbejde: ${result.totals.labor_cost.toFixed(2)} kr`);
console.log(` ────────────────────────────────`);
console.log(` TOTAL: ${result.totals.total_cost.toFixed(2)} kr`);
} else {
console.log(`❌ Fejl: ${response.data.error}`);
}
} catch (error) {
console.log(`❌ Kunne ikke beregne pakke ${packageId}:`, error.response?.data?.error || error.message);
}
}
console.log(`\n${'='.repeat(60)}`);
console.log('✅ Test gennemført!');
console.log('='.repeat(60));
} catch (error) {
console.error('\n❌ Test fejlede:', error.message);
}
}
// Kør test
testPackageCalculation();