Files
tilbudgivern/archive/analysis/create-packages-simple.js
2025-10-30 18:28:58 +00:00

266 lines
9.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Script til at oprette erfaringsbaserede SmartPackages
* Version 2: Simpel version der opretter pakkerne med varenumre
* Priser tilføjes senere når materialer importeres fra Bygma/leverandører
*/
const axios = require('axios');
const LOCAL_API = 'http://localhost:4031';
/**
* Opret SmartPackage via API
*/
async function createSmartPackage(packageData) {
try {
const response = await axios.post(`${LOCAL_API}/api/smart-packages`, packageData);
console.log(`✅ Oprettet pakke: ${packageData.name} (ID: ${response.data.id})`);
return response.data;
} catch (error) {
console.error(`❌ Fejl ved oprettelse af ${packageData.name}:`, error.response?.data || error.message);
return null;
}
}
/**
* PAKKE 1: Tagrende med Konsoljern
*/
async function createTagrendePakke() {
const packageData = {
name: 'Tagrende med Konsoljern (Lindab)',
description: `Komplet tagrende system med konsoljern i stål fra Lindab.
MATERIALELISTE:
• 077424 - Tagrende 3 meter (beregnes fra facadelængde ÷ 3)
• 107744 - Ende bund (4 stk generisk)
• 077419 - Samle stykke (1 pr 3 meter tagrende)
• 077407 - Konsol jern (maks 60cm mellem)
• 077426 - Hjørne indvendig (1 stk til huskeliste)
• 077431 - Hjørne udvendig (1 stk til huskeliste)
ARBEJDSTID: 10 meter = 5 timer (0,5 time pr meter)
GEOMETRI KRÆVET: facadelængde (meter)`,
category: 'Tag - Tagrende',
difficulty_level: 'mellem',
estimated_hours: 5,
hourly_rate: 580,
installation_notes: 'Kræver facadelængde for beregning',
is_template: true,
created_by: 'system',
materials: [
{ name: 'Tagrende 3 meter (077424)', quantity: 1, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' },
{ name: 'Ende bund (107744)', quantity: 4, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' },
{ name: 'Samle stykke (077419)', quantity: 1, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' },
{ name: 'Konsol jern (077407)', quantity: 1, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' },
{ name: 'Hjørne indvendig (077426)', quantity: 1, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' },
{ name: 'Hjørne udvendig (077431)', quantity: 1, unit: 'stk', unitPrice: 0, category: 'tagrende', supplier: '', notes: '' }
]
};
return await createSmartPackage(packageData);
}
/**
* PAKKE 2: Nedløb
*/
async function createNedløbPakke() {
const packageData = {
name: 'Nedløb komplet',
description: `Komplet nedløbssystem med automatisk beregning af tilbehør.
MATERIALELISTE (pr nedløb):
• 077438 - Nedløb 3 meter (1 stk)
• 184937 - Rørholder (2 stk)
• 122214 - Tudstykke (1 stk)
• 050043 - Silikone (1 stk)
• 061637 - Brøndkrave (1 stk)
• 076623 - Bøjning (2 stk - varierer efter behov)
ARBEJDSTID: 1 nedløb = 1 time
GEOMETRI KRÆVET: Antal nedløb`,
category: 'Tag - Nedløb',
package_type: 'installation',
estimated_hours: 1,
hourly_rate: 580,
is_template: true,
materials: [
{ name: 'Nedløb 3 meter (077438)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Rørholder (184937)', quantity: 2, unit: 'stk', price: 0 },
{ name: 'Tudstykke (122214)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Silikone (050043)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Brøndkrave (061637)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Bøjning (076623)', quantity: 2, unit: 'stk', price: 0 }
]
};
return await createSmartPackage(packageData);
}
/**
* PAKKE 3: Opretning af spær
*/
async function createSpærPakke() {
const packageData = {
name: 'Opretning af spær',
description: `Komplet opretning af tagspær med materialer og værktøj.
MATERIALELISTE:
• 146304720010450 - Spær træ 200mm (LBM: (huslængde+1) × husbredde)
• 310615 - Spånskruer 5,0x100 (5 skruer pr LBM)
• 195408 - Muresnor (1 stk)
• 224770 - Bits TX 20 (1 stk)
• 064736 - Snorvatterpas (2 stk)
• 182788 - Rundsavsklinge (1 stk)
• 147761 - Stiksavsklinger (1 stk)
ARBEJDSTID: 5 meter = 0,5 time (0,1 time pr meter)
GEOMETRI KRÆVET: huslængde (meter), husbredde (meter)`,
category: 'Tag - Spær',
package_type: 'installation',
estimated_hours: 2.5,
hourly_rate: 580,
is_template: true,
materials: [
{ name: 'Spær træ 200mm (146304720010450)', quantity: 10, unit: 'løbende meter', price: 0 },
{ name: 'Spånskruer 5,0x100 (310615)', quantity: 50, unit: 'stk', price: 0 },
{ name: 'Muresnor (195408)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Bits TX 20 (224770)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Snorvatterpas (064736)', quantity: 2, unit: 'stk', price: 0 },
{ name: 'Rundsavsklinge (182788)', quantity: 1, unit: 'stk', price: 0 },
{ name: 'Stiksavsklinger (147761)', quantity: 1, unit: 'stk', price: 0 }
]
};
return await createSmartPackage(packageData);
}
/**
* PAKKE 4: B7 montering inkl. lægter
*/
async function createB7Pakke() {
const packageData = {
name: 'B7 montering inkl. lægter',
description: `Komplet B7 tagbeklædning med lægter og fastgørelse.
MATERIALELISTE (pr m²):
• 147072 - B7 Plade (2,13 plade pr m²)
• 1632038073 - Lægter 46cm afstand (2,17 meter pr m²)
• 119229 - Tagskruer (4,25 skruer pr m²)
• 101933 - Ringsøm pakke 2880 stk (15 søm pr m²)
• 029218 - EPDM bånd 30 meter (2,17 meter pr m²)
ARBEJDSTID: 0,5 time pr m²
GEOMETRI KRÆVET: tagflade (m²)`,
category: 'Tag - B7',
package_type: 'installation',
estimated_hours: 10,
hourly_rate: 580,
is_template: true,
materials: [
{ name: 'B7 Plade (147072)', quantity: 21.3, unit: 'stk', price: 0, description: '2,13 pr m²' },
{ name: 'Lægter (1632038073)', quantity: 21.7, unit: 'løbende meter', price: 0, description: '2,17m pr m²' },
{ name: 'Tagskruer (119229)', quantity: 42.5, unit: 'stk', price: 0, description: '4,25 pr m²' },
{ name: 'Ringsøm (101933)', quantity: 150, unit: 'stk', price: 0, description: '15 pr m²' },
{ name: 'EPDM bånd (029218)', quantity: 21.7, unit: 'løbende meter', price: 0, description: '2,17m pr m²' }
]
};
return await createSmartPackage(packageData);
}
/**
* PAKKE 5: Rygning B7
*/
async function createRygningB7Pakke() {
const packageData = {
name: 'Rygning B7',
description: `Komplet rygningsløsning til B7 tag.
MATERIALELISTE (pr løbende meter):
• 057437 - Rygning (1 stk pr meter)
• 038218 - Rygningselement (1 stk pr meter)
• 144855 - Tagskruer 100 stk (4 skruer pr meter)
• 029218 - EPDM bånd 30 meter (0,4 meter pr meter)
ARBEJDSTID: Ca 0,25 time pr meter (estimeret)
GEOMETRI KRÆVET: rygning_længde (meter)`,
category: 'Tag - Rygning',
package_type: 'installation',
estimated_hours: 2.5,
hourly_rate: 580,
is_template: true,
materials: [
{ name: 'Rygning (057437)', quantity: 10, unit: 'løbende meter', price: 0 },
{ name: 'Rygningselement (038218)', quantity: 10, unit: 'løbende meter', price: 0 },
{ name: 'Tagskruer (144855)', quantity: 40, unit: 'stk', price: 0, description: '4 pr meter' },
{ name: 'EPDM bånd (029218)', quantity: 4, unit: 'løbende meter', price: 0, description: '0,4m pr meter' }
]
};
return await createSmartPackage(packageData);
}
/**
* PAKKE 6: Taghætte B7
*/
async function createTaghætteB7Pakke() {
const packageData = {
name: 'Taghætte B7',
description: `Montering af taghætte til B7 tag.
MATERIALELISTE:
• 126813 - Taghætte (1 stk)
ARBEJDSTID: Ca 1 time (estimeret)`,
category: 'Tag - Taghætte',
package_type: 'installation',
estimated_hours: 1,
hourly_rate: 580,
is_template: true,
materials: [
{ name: 'Taghætte (126813)', quantity: 1, unit: 'stk', price: 0 }
]
};
return await createSmartPackage(packageData);
}
/**
* Hovedfunktion
*/
async function main() {
console.log('🚀 Starter oprettelse af erfaringsbaserede SmartPackages...\n');
console.log('📌 Pakker oprettes med varenumre - priser tilføjes senere\n');
const results = [];
// Opret alle pakker
results.push(await createTagrendePakke());
results.push(await createNedløbPakke());
results.push(await createSpærPakke());
results.push(await createB7Pakke());
results.push(await createRygningB7Pakke());
results.push(await createTaghætteB7Pakke());
const successful = results.filter(r => r !== null).length;
console.log(`\n✅ ${successful} af 6 pakker oprettet succesfuldt!`);
console.log('\n📝 Næste skridt:');
console.log(' 1. Import materialer fra Bygma/leverandører med varenumre');
console.log(' 2. Implementer geometri-gemning i database');
console.log(' 3. Byg beregningslogik for automatisk materialemængder');
console.log(' 4. Implementer 20% avance på alle materialerpriser');
console.log(' 5. Test pakkerne i frontend');
console.log(' 6. Få manglende pakker fra kunde (B6, Betontegl, Velux osv.)');
}
// Kør scriptet
if (require.main === module) {
main();
}