-- Migration: Create smart_package_components table -- Description: LEGO-style reusable components for building SmartPackages -- Date: 2025-11-07 CREATE TABLE IF NOT EXISTS smart_package_components ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT, category ENUM('basis', 'special', 'finish', 'service') NOT NULL DEFAULT 'basis', base_hours DECIMAL(10, 2) DEFAULT 0, base_price DECIMAL(10, 2) DEFAULT 0, unit VARCHAR(50) DEFAULT 'stk', complexity_factors JSON, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_category (category), INDEX idx_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Insert sample LEGO components INSERT INTO smart_package_components (name, description, category, base_hours, base_price, unit, complexity_factors) VALUES ('Tag Nedtagning', 'Forsigtig nedtagning af eksisterende tagmaterialer med sortering til genanvendelse', 'basis', 16, 850, 'm²', '{"lille_parcelhus": 0.7, "eternit": 1.6, "tegl": 1.2}'), ('Moderne Isolering', 'Energieffektiv isolering med dampspærre og ventilation for optimal indeklima', 'basis', 32, 1650, 'm²', '{}'), ('Spær Inspektion', 'Grundig inspektion af spærkonstruktion med dokumentation og nødvendige forstærkninger', 'basis', 12, 650, 'stk', '{}'), ('Tagdækning B7', 'Professionel lægning af B7 tagplader inkl. lægter og fastgørelse', 'basis', 24, 1200, 'm²', '{}'), ('Køkken Nedrivning', 'Forsigtig nedrivning af eksisterende køkken med sortering til genanvendelse', 'basis', 14, 720, 'stk', '{}'), ('Køkken Montage', 'Præcis montering af nye køkkenskabe med justering og funktionstest', 'basis', 28, 1450, 'stk', '{}'), ('Badeværelse Membran', 'Vandtæt gulvmembran installation med 20 års vandskade-garanti', 'basis', 12, 850, 'm²', '{}'), ('Smart Home Integration', 'App-styring med automatiserede funktioner for belysning, varme, sikkerhed og energi-optimering', 'special', 16, 18500, 'stk', '{}'), ('Gulvvarme System', 'Komplet gulvvarme installation med smart termostatstyring og energioptimering', 'special', 24, 12500, 'm²', '{}'), ('Energi Optimering', 'A-klasse energimærke med 40% besparelse garanti - inkl. premium isolering og 3-lags vinduer', 'special', 48, 3500, 'm²', '{}'), ('Premium Finish', 'Håndværksmæssig perfektion med ekstra kvalitetskontrol og æstetisk finish', 'finish', 8, 6500, 'stk', '{}'), ('Miljøvenlig Behandling', 'Økologiske materialer med sundhedscertificering og bæredygtig finish', 'finish', 6, 4500, 'stk', '{}'), ('Garanti Plus', '10-års omfattende garanti med årlig servicekontrol og prioriteret support', 'service', 0, 5000, 'stk', '{}'), ('Ekspres Service', '24/7 respons med samme-dag reparation og dedikeret hotline', 'service', 0, 8500, 'stk', '{}') ON DUPLICATE KEY UPDATE updated_at = CURRENT_TIMESTAMP; -- Verify insertion SELECT category, COUNT(*) as count, SUM(base_price) as total_value FROM smart_package_components GROUP BY category ORDER BY FIELD(category, 'basis', 'special', 'finish', 'service');