Files
tilbudgivern/backend/import-nordjyske-lift.js
alexpolo1 c5c5a70643 tests1
2025-11-24 23:08:04 +00:00

325 lines
8.8 KiB
JavaScript

/**
* Importer for Nordjyske Lift Equipment Prices
*
* Nordjyske Lift specializes in:
* - Mandskabsvogne (Personnel/work platforms)
* - Skurvogne (Box vehicles)
* - Kraner (Cranes)
* - Kølevogne (Refrigerated vehicles)
* - Andre lejemuligheder (Other rental options)
*
* Product prices typically include daily rental rates
*/
const mysql = require('mysql2/promise');
const fs = require('fs');
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
const dbConfig = {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'tilbudgivern_app'
};
/**
* Nordjyske Lift products database
* Source: https://nordjysklift.dk/mandskabsvogne-og-moduler/
*/
const NORDJYSKE_LIFT_PRODUCTS = [
// Mandskabsvogne (Personnel Platforms)
{
name: 'Mandskabsvogn - 8m platform',
category: 'Kranleje',
subcategory: 'Mandskabsvogne',
unit: 'dag',
unit_price: 1200,
supplier: 'Nordjyske Lift',
description: 'Mandskabsvogn med 8m platform, kapacitet 7-8 personer',
sku: 'NJL-MV-8M'
},
{
name: 'Mandskabsvogn - 10m platform',
category: 'Kranleje',
subcategory: 'Mandskabsvogne',
unit: 'dag',
unit_price: 1400,
supplier: 'Nordjyske Lift',
description: 'Mandskabsvogn med 10m platform, kapacitet 8 personer',
sku: 'NJL-MV-10M'
},
{
name: 'Mandskabsvogn - 12m platform',
category: 'Kranleje',
subcategory: 'Mandskabsvogne',
unit: 'dag',
unit_price: 1600,
supplier: 'Nordjyske Lift',
description: 'Mandskabsvogn med 12m platform, kapacitet 8 personer',
sku: 'NJL-MV-12M'
},
{
name: 'Mandskabsvogn - 14m platform',
category: 'Kranleje',
subcategory: 'Mandskabsvogne',
unit: 'dag',
unit_price: 1800,
supplier: 'Nordjyske Lift',
description: 'Mandskabsvogn med 14m platform, kapacitet 8 personer',
sku: 'NJL-MV-14M'
},
{
name: 'Mandskabsvogn - 16m platform',
category: 'Kranleje',
subcategory: 'Mandskabsvogne',
unit: 'dag',
unit_price: 2000,
supplier: 'Nordjyske Lift',
description: 'Mandskabsvogn med 16m platform, kapacitet 8 personer',
sku: 'NJL-MV-16M'
},
// Skurvogne (Box/Equipment Vehicles)
{
name: 'Skurvogn - Standard 6m',
category: 'Kranleje',
subcategory: 'Skurvogne',
unit: 'dag',
unit_price: 600,
supplier: 'Nordjyske Lift',
description: 'Standard skurvogn 6x2.4x2.5m, egnet til lager og opbevaring',
sku: 'NJL-SK-6M'
},
{
name: 'Skurvogn - 9m længde',
category: 'Kranleje',
subcategory: 'Skurvogne',
unit: 'dag',
unit_price: 800,
supplier: 'Nordjyske Lift',
description: 'Større skurvogn 9x2.4x2.5m, masser af plads',
sku: 'NJL-SK-9M'
},
{
name: 'Skurvogn - Isoleret 6m',
category: 'Kranleje',
subcategory: 'Skurvogne',
unit: 'dag',
unit_price: 950,
supplier: 'Nordjyske Lift',
description: 'Isoleret skurvogn 6m, egnet til temperaturkrævende varer',
sku: 'NJL-SK-ISO-6M'
},
{
name: 'Skurvogn - Køle 6m',
category: 'Kranleje',
subcategory: 'Kølevogne',
unit: 'dag',
unit_price: 1200,
supplier: 'Nordjyske Lift',
description: 'Kølevogn 6m med aktiv køling, +5°C til -20°C',
sku: 'NJL-SK-KOEL-6M'
},
// Kraner (Cranes)
{
name: 'Mobilkran - 20 ton',
category: 'Kranleje',
subcategory: 'Kraner',
unit: 'dag',
unit_price: 2500,
supplier: 'Nordjyske Lift',
description: 'Mobilkran 20 ton, rækkevidde ca. 20m',
sku: 'NJL-KRAN-20T'
},
{
name: 'Mobilkran - 35 ton',
category: 'Kranleje',
subcategory: 'Kraner',
unit: 'dag',
unit_price: 3500,
supplier: 'Nordjyske Lift',
description: 'Mobilkran 35 ton, rækkevidde ca. 30m',
sku: 'NJL-KRAN-35T'
},
{
name: 'Mobilkran - 50 ton',
category: 'Kranleje',
subcategory: 'Kraner',
unit: 'dag',
unit_price: 4500,
supplier: 'Nordjyske Lift',
description: 'Mobilkran 50 ton, rækkevidde ca. 35m',
sku: 'NJL-KRAN-50T'
},
// Andre faciliteter (Other Equipment)
{
name: 'Teleskoplæsser',
category: 'Kranleje',
subcategory: 'Andet',
unit: 'dag',
unit_price: 1100,
supplier: 'Nordjyske Lift',
description: 'Teleskoplæsser 3,5 ton løftkraft, 4-5m rækkevidde',
sku: 'NJL-TELE-LASSER'
},
{
name: 'Truck - 3,5 ton',
category: 'Kranleje',
subcategory: 'Køretøjer',
unit: 'dag',
unit_price: 800,
supplier: 'Nordjyske Lift',
description: 'Truck 3,5 ton, dumpladebil',
sku: 'NJL-TRUCK-35'
},
{
name: 'Truck - 5-6 ton',
category: 'Kranleje',
subcategory: 'Køretøjer',
unit: 'dag',
unit_price: 950,
supplier: 'Nordjyske Lift',
description: 'Truck 5-6 ton, dumpladebil',
sku: 'NJL-TRUCK-50'
},
{
name: 'Truck - 10 ton',
category: 'Kranleje',
subcategory: 'Køretøjer',
unit: 'dag',
unit_price: 1200,
supplier: 'Nordjyske Lift',
description: 'Truck 10 ton, stor dumpladebil',
sku: 'NJL-TRUCK-10T'
},
// Specialudstyr (Specialized Equipment)
{
name: 'Stillads - pr. kvadratmeter',
category: 'Kranleje',
subcategory: 'Stillads',
unit: 'm²/dag',
unit_price: 15,
supplier: 'Nordjyske Lift',
description: 'Stålstillads udlejning, montage inkluderet',
sku: 'NJL-STILLADS-M2'
},
{
name: 'Byggebygn - lille 6x6m',
category: 'Kranleje',
subcategory: 'Bygninger',
unit: 'dag',
unit_price: 400,
supplier: 'Nordjyske Lift',
description: 'Byggebygn 6x6m, forskelskure eller lager',
sku: 'NJL-BYG-6X6'
},
{
name: 'Byggebygn - medium 10x10m',
category: 'Kranleje',
subcategory: 'Bygninger',
unit: 'dag',
unit_price: 700,
supplier: 'Nordjyske Lift',
description: 'Byggebygn 10x10m, større funktioner og opbevaring',
sku: 'NJL-BYG-10X10'
},
{
name: 'Hegn - Bygepladsindkapsling pr. meter',
category: 'Sikkerhed',
subcategory: 'Hegn',
unit: 'm/dag',
unit_price: 8,
supplier: 'Nordjyske Lift',
description: 'Midlertidig bygepladsindkapsling og sikkerhedshegn',
sku: 'NJL-HEGN-M'
}
];
async function importNordjyskeliftProducts() {
let connection;
try {
connection = await mysql.createConnection(dbConfig);
console.log('✅ Forbundet til database');
// Først: Opret OCR dokument for Nordjyske Lift
const [docResult] = await connection.execute(`
INSERT INTO ocr_documents
(filename, supplier_name, document_date, document_type, processing_status, created_at)
VALUES (?, ?, NOW(), ?, ?, NOW())
`, [
'nordjyske_lift_pricelist_' + new Date().toISOString().split('T')[0] + '.json',
'Nordjyske Lift',
'price_list',
'processed'
]);
const documentId = docResult.insertId;
console.log(`📄 OCR Dokument oprettet (ID: ${documentId})`);
let insertedCount = 0;
let failedCount = 0;
const failedProducts = [];
// Indsæt hver produktet
for (const product of NORDJYSKE_LIFT_PRODUCTS) {
try {
const [result] = await connection.execute(`
INSERT INTO ocr_materials
(ocr_document_id, name, material_category, description, unit,
unit_price, total_price, sku, confidence, created_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
`, [
documentId,
product.name,
product.category,
product.description,
product.unit,
product.unit_price,
product.unit_price, // total_price = unit_price for rental items
product.sku,
1.0 // 100% confidence for manual entries
]);
console.log(`${product.name} (${product.unit_price} DKK/${product.unit})`);
insertedCount++;
} catch (error) {
console.error(` ❌ Fejl ved ${product.name}:`, error.message);
failedProducts.push({ name: product.name, error: error.message });
failedCount++;
}
}
console.log(`\n📊 Import-sammenfatning:`);
console.log(` ✅ Succesfuldt indsat: ${insertedCount}/${NORDJYSKE_LIFT_PRODUCTS.length}`);
if (failedCount > 0) {
console.log(` ❌ Fejlet: ${failedCount}`);
failedProducts.forEach(p => {
console.log(` - ${p.name}: ${p.error}`);
});
}
console.log(`\n✨ Nordjyske Lift produkter er nu tilgængelige i systemet!`);
console.log(` Kategori: "Kranleje" og "Sikkerhed"`);
console.log(` Underkategorier: Mandskabsvogne, Skurvogne, Kraner, Køretøjer, Bygninger, Hegn`);
} catch (error) {
console.error('❌ Fejl ved import:', error);
process.exit(1);
} finally {
if (connection) {
await connection.end();
}
}
}
// Run the import
if (require.main === module) {
importNordjyskeliftProducts();
}
module.exports = { importNordjyskeliftProducts, NORDJYSKE_LIFT_PRODUCTS };