-- ============================================================
-- Migracja 014: Etap 11 - Pakiet 1 (P0) baseline content
-- Cel: minimalne wolumeny tresci zgodne z koncepcja:
-- - kategorie: min. 8
-- - produkty: min. 25
-- - uslugi: min. 4
-- - realizacje: min. 10
-- - strony lokalne: min. 2-3
-- Zasada: idempotentnie i bez destrukcyjnego nadpisywania.
-- ============================================================

SET collation_connection = 'utf8mb4_unicode_ci';

-- ------------------------------------------------------------
-- 1) Kategorie (8) + SEO + CTA
-- ------------------------------------------------------------
CREATE TEMPORARY TABLE stage11_seed_categories (
    `name` VARCHAR(200) NOT NULL,
    `slug` VARCHAR(220) NOT NULL,
    `description_seo` TEXT NULL,
    `meta_title` VARCHAR(70) NOT NULL DEFAULT '',
    `meta_description` VARCHAR(160) NOT NULL DEFAULT '',
    `show_on_home` TINYINT(1) NOT NULL DEFAULT 0,
    `sort_order` INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_categories
(`name`, `slug`, `description_seo`, `meta_title`, `meta_description`, `show_on_home`, `sort_order`)
VALUES
('Deski elewacyjne', 'deski-elewacyjne', '<p>Deski elewacyjne i szalowka do domow i obiektow uslugowych. <a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>', 'Deski elewacyjne i szalowka | Tartak Dana', 'Deski elewacyjne i szalowka: profile, doradztwo i szybka wycena.', 1, 10),
('Podbitka dachowa', 'podbitka-dachowa', '<p>Podbitka dachowa i boazeria pod okap. <a href="/kontakt/#wycena">Sprawdz wycene</a>.</p>', 'Podbitka dachowa drewniana | Tartak Dana', 'Podbitka dachowa z drewna suszonego i struganego.', 1, 20),
('Deski tarasowe', 'deski-tarasowe', '<p>Deski tarasowe gladkie i ryflowane. <a href="/kontakt/#wycena">Zapytaj o material</a>.</p>', 'Deski tarasowe | Tartak Dana', 'Deski tarasowe i legary do tarasow przydomowych.', 1, 30),
('Deski podlogowe', 'deski-podlogowe', '<p>Deski podlogowe do domow i pensjonatow. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'Deski podlogowe drewniane | Tartak Dana', 'Deski podlogowe drewniane o stabilnych parametrach.', 1, 40),
('Drewno konstrukcyjne', 'drewno-konstrukcyjne', '<p>Drewno konstrukcyjne C24, belki, laty i kontrlaty. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'Drewno konstrukcyjne C24 | Tartak Dana', 'Drewno konstrukcyjne C24 do wiezby i konstrukcji.', 1, 50),
('Wyroby ogrodowe', 'wyroby-ogrodowe', '<p>Wyroby ogrodowe z drewna na zamowienie. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'Wyroby ogrodowe z drewna | Tartak Dana', 'Wyroby ogrodowe drewniane pod zamowienie.', 0, 60),
('Pozostale produkty', 'pozostale', '<p>Pellet, opal i produkty uzupelniajace. <a href="/kontakt/#wycena">Zapytaj o dostepnosc</a>.</p>', 'Pozostale produkty tartaczne | Tartak Dana', 'Pellet i opal oraz pozostale produkty tartaczne.', 0, 70),
('Listwy wykonczeniowe', 'listwy-wykonczeniowe', '<p>Listwy i elementy wykonczeniowe z drewna. <a href="/kontakt/#wycena">Zamow wycene</a>.</p>', 'Listwy wykonczeniowe | Tartak Dana', 'Listwy wykonczeniowe drewniane do elewacji i podlog.', 0, 80);

INSERT INTO `categories`
(`name`, `slug`, `parent_id`, `description_seo`, `meta_title`, `meta_description`, `is_visible`, `show_on_home`, `sort_order`)
SELECT
    s.`name`,
    s.`slug`,
    NULL,
    s.`description_seo`,
    s.`meta_title`,
    s.`meta_description`,
    1,
    s.`show_on_home`,
    s.`sort_order`
FROM stage11_seed_categories s
ON DUPLICATE KEY UPDATE
    `name` = VALUES(`name`),
    `description_seo` = CASE
        WHEN TRIM(COALESCE(categories.`description_seo`, '')) = '' THEN VALUES(`description_seo`)
        ELSE categories.`description_seo`
    END,
    `meta_title` = CASE
        WHEN TRIM(COALESCE(categories.`meta_title`, '')) = '' THEN VALUES(`meta_title`)
        ELSE categories.`meta_title`
    END,
    `meta_description` = CASE
        WHEN TRIM(COALESCE(categories.`meta_description`, '')) = '' THEN VALUES(`meta_description`)
        ELSE categories.`meta_description`
    END,
    `is_visible` = 1,
    `show_on_home` = IF(categories.`show_on_home` = 1, 1, VALUES(`show_on_home`)),
    `sort_order` = CASE WHEN categories.`sort_order` = 0 THEN VALUES(`sort_order`) ELSE categories.`sort_order` END,
    `updated_at` = NOW();

-- ------------------------------------------------------------
-- 2) Produkty (27) + SEO + CTA
-- ------------------------------------------------------------
CREATE TEMPORARY TABLE stage11_seed_products (
    `category_slug` VARCHAR(220) NOT NULL,
    `name` VARCHAR(200) NOT NULL,
    `slug` VARCHAR(220) NOT NULL,
    `lead` VARCHAR(300) NOT NULL DEFAULT '',
    `description_html` TEXT NULL,
    `wood_species` VARCHAR(50) NOT NULL DEFAULT 'sosna',
    `profile` VARCHAR(60) NOT NULL DEFAULT '',
    `availability_status` VARCHAR(20) NOT NULL DEFAULT 'available',
    `is_featured` TINYINT(1) NOT NULL DEFAULT 0,
    `sort_order` INT NOT NULL DEFAULT 0,
    `meta_title` VARCHAR(70) NOT NULL DEFAULT '',
    `meta_description` VARCHAR(160) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_products
(`category_slug`, `name`, `slug`, `lead`, `description_html`, `wood_species`, `profile`, `availability_status`, `is_featured`, `sort_order`, `meta_title`, `meta_description`)
VALUES
('deski-elewacyjne', 'Szalowka na pioro wpust 105 mm', 'szalowka-na-pioro-wpust-105mm', 'Deska elewacyjna 105 mm, suszona komorowo.', '<p>Szalowka 105 mm do elewacji. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'sosna', 'pioro-wpust', 'available', 1, 10, 'Szalowka 105 mm | Tartak Dana', 'Szalowka pioro wpust 105 mm do elewacji.'),
('deski-elewacyjne', 'Szalowka na pioro wpust 130 mm', 'szalowka-na-pioro-wpust-130mm', 'Deska elewacyjna 130 mm o wysokiej estetyce.', '<p>Szalowka 130 mm do elewacji. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'sosna', 'pioro-wpust', 'available', 1, 20, 'Szalowka 130 mm | Tartak Dana', 'Szalowka pioro wpust 130 mm.'),
('deski-elewacyjne', 'Szalowka na zaklad 105 mm', 'szalowka-na-zaklad-105mm', 'Profil na zaklad do klasycznych elewacji.', '<p>Deska na zaklad 105 mm. <a href="/kontakt/#wycena">Sprawdz wycene</a>.</p>', 'sosna', 'na zaklad', 'available', 0, 30, 'Szalowka na zaklad 105 mm', 'Deska elewacyjna na zaklad 105 mm.'),
('deski-elewacyjne', 'Szalowka na zaklad 130 mm', 'szalowka-na-zaklad-130mm', 'Szalowka na zaklad 130 mm.', '<p>Profil 130 mm na zaklad. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'sosna', 'na zaklad', 'available', 0, 40, 'Szalowka na zaklad 130 mm', 'Szalowka na zaklad 130 mm.'),
('deski-elewacyjne', 'Szalowka polokragla 105 mm', 'szalowka-polokragla-105mm', 'Profil polokragly do elewacji drewnianych.', '<p>Szalowka polokragla 105 mm. <a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>', 'sosna', 'polokragly', 'on_order', 0, 50, 'Szalowka polokragla 105 mm', 'Szalowka polokragla 105 mm do elewacji.'),
('deski-elewacyjne', 'Szalowka z przedluzanym piorem 130 mm', 'szalowka-z-przedluzanym-piorem-130mm', 'Profil z przedluzanym piorem dla szczelnych elewacji.', '<p>Profil 130 mm z przedluzanym piorem. <a href="/kontakt/#wycena">Napisz po wycene</a>.</p>', 'sosna', 'z przedluzanym piorem', 'on_order', 1, 60, 'Szalowka z przedluzanym piorem', 'Szalowka 130 mm z przedluzanym piorem.'),

('podbitka-dachowa', 'Boazeria cienka 85 mm', 'boazeria-cienka-85mm', 'Podbitka dachowa 85 mm.', '<p>Boazeria cienka 85 mm do podbitki. <a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>', 'sosna', 'pioro-wpust', 'available', 0, 70, 'Boazeria cienka 85 mm', 'Boazeria cienka 85 mm do podbitki.'),
('podbitka-dachowa', 'Boazeria gruba 85 mm', 'boazeria-gruba-85mm', 'Podbitka gruba 85 mm o zwiekszonej sztywnosci.', '<p>Boazeria gruba 85 mm. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'sosna', 'pioro-wpust', 'available', 0, 80, 'Boazeria gruba 85 mm', 'Boazeria gruba 85 mm do podbitki dachowej.'),
('podbitka-dachowa', 'Podbitka premium 95 mm', 'podbitka-premium-95mm', 'Podbitka premium 95 mm do inwestycji premium.', '<p>Podbitka premium 95 mm. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'swierk', 'pioro-wpust', 'on_order', 0, 90, 'Podbitka premium 95 mm', 'Podbitka premium 95 mm z drewna.'),

('deski-tarasowe', 'Deska tarasowa gladka 27x145', 'deska-tarasowa-gladka-27x145', 'Deska tarasowa gladka 27x145.', '<p>Deska tarasowa gladka. <a href="/kontakt/#wycena">Zapytaj o material</a>.</p>', 'modrzew', 'gladka', 'available', 1, 100, 'Deska tarasowa gladka 27x145', 'Deska tarasowa gladka 27x145.'),
('deski-tarasowe', 'Deska tarasowa ryflowana 27x145', 'deska-tarasowa-ryflowana-27x145', 'Deska tarasowa ryflowana 27x145.', '<p>Deska tarasowa ryflowana. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'modrzew', 'ryflowana', 'available', 1, 110, 'Deska tarasowa ryflowana 27x145', 'Deska tarasowa ryflowana 27x145.'),
('deski-tarasowe', 'Legar tarasowy 45x70', 'legar-tarasowy-45x70', 'Legar tarasowy pod konstrukcje nosna.', '<p>Legar tarasowy 45x70. <a href="/kontakt/#wycena">Zapytaj o oferte</a>.</p>', 'sosna', 'inne', 'available', 0, 120, 'Legar tarasowy 45x70', 'Legar tarasowy 45x70 do tarasow.'),

('deski-podlogowe', 'Deska podlogowa 28x135', 'deska-podlogowa-28x135', 'Deska podlogowa 28x135 do obiektow mieszkalnych.', '<p>Deska podlogowa 28x135. <a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>', 'sosna', 'pioro-wpust', 'on_order', 0, 130, 'Deska podlogowa 28x135', 'Deska podlogowa 28x135.'),
('deski-podlogowe', 'Deska podlogowa 22x120', 'deska-podlogowa-22x120', 'Deska podlogowa 22x120 do remontow.', '<p>Deska podlogowa 22x120. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'sosna', 'pioro-wpust', 'on_order', 0, 140, 'Deska podlogowa 22x120', 'Deska podlogowa 22x120.'),

('drewno-konstrukcyjne', 'Tarcica konstrukcyjna C24', 'tarcica-konstrukcyjna-c24', 'Tarcica C24 do konstrukcji i wiezby.', '<p>Tarcica C24 pod konstrukcje. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'swierk', 'inne', 'available', 1, 150, 'Tarcica konstrukcyjna C24', 'Tarcica konstrukcyjna C24.'),
('drewno-konstrukcyjne', 'Belka konstrukcyjna 100x100', 'belka-konstrukcyjna-100x100', 'Belka 100x100 do konstrukcji.', '<p>Belka 100x100. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'sosna', 'inne', 'available', 0, 160, 'Belka konstrukcyjna 100x100', 'Belka konstrukcyjna 100x100.'),
('drewno-konstrukcyjne', 'Deska konstrukcyjna 32x150', 'deska-konstrukcyjna-32x150', 'Deska konstrukcyjna 32x150 do prac ciesielskich.', '<p>Deska konstrukcyjna 32x150. <a href="/kontakt/#wycena">Zapytaj o oferte</a>.</p>', 'sosna', 'inne', 'available', 0, 170, 'Deska konstrukcyjna 32x150', 'Deska konstrukcyjna 32x150.'),
('drewno-konstrukcyjne', 'Lata dachowa 40x60', 'lata-dachowa-40x60', 'Lata dachowa pod pokrycia dachowe.', '<p>Lata dachowa 40x60. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'sosna', 'inne', 'available', 0, 180, 'Lata dachowa 40x60', 'Lata dachowa 40x60.'),
('drewno-konstrukcyjne', 'Kontrlata dachowa 25x50', 'kontrlata-dachowa-25x50', 'Kontrlata dachowa do wentylacji polaci.', '<p>Kontrlata 25x50. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'sosna', 'inne', 'available', 0, 190, 'Kontrlata dachowa 25x50', 'Kontrlata dachowa 25x50.'),

('wyroby-ogrodowe', 'Meble ogrodowe drewniane', 'meble-ogrodowe-drewniane', 'Meble ogrodowe z drewna pod wymiar.', '<p>Meble ogrodowe na zamowienie. <a href="/kontakt/#wycena">Zapytaj o realizacje</a>.</p>', 'sosna', 'inne', 'on_order', 0, 200, 'Meble ogrodowe drewniane', 'Meble ogrodowe drewniane pod wymiar.'),
('wyroby-ogrodowe', 'Plac zabaw dla dzieci', 'plac-zabaw-dla-dzieci', 'Drewniane place zabaw pod zamowienie.', '<p>Plac zabaw z drewna. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'sosna', 'inne', 'on_order', 0, 210, 'Plac zabaw dla dzieci', 'Drewniany plac zabaw dla dzieci.'),
('wyroby-ogrodowe', 'Buda dla psa', 'buda-dla-psa', 'Buda dla psa pod wymiar.', '<p>Buda dla psa z drewna. <a href="/kontakt/#wycena">Zapytaj o oferte</a>.</p>', 'sosna', 'inne', 'on_order', 0, 220, 'Buda dla psa', 'Buda dla psa z drewna.'),
('wyroby-ogrodowe', 'Toaleta drewniana ogrodowa', 'toaleta-drewniana-ogrodowa', 'Toaleta drewniana do dzialki i ogrodu.', '<p>Toaleta drewniana ogrodowa. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'sosna', 'inne', 'on_order', 0, 230, 'Toaleta drewniana ogrodowa', 'Toaleta drewniana ogrodowa.'),

('pozostale', 'Pellet drzewny 15 kg', 'pellet-drzewny-15kg', 'Pellet drzewny workowany 15 kg.', '<p>Pellet drzewny 15 kg. <a href="/kontakt/#wycena">Sprawdz cene</a>.</p>', 'inne', 'inne', 'available', 1, 240, 'Pellet drzewny 15 kg', 'Pellet drzewny workowany 15 kg.'),
('pozostale', 'Drewno opalowe suche', 'drewno-opalowe-suche', 'Drewno opalowe suche na sezon grzewczy.', '<p>Drewno opalowe suche. <a href="/kontakt/#wycena">Zapytaj o transport</a>.</p>', 'sosna', 'inne', 'available', 0, 250, 'Drewno opalowe suche', 'Drewno opalowe suche i sezonowane.'),

('listwy-wykonczeniowe', 'Listwa wykonczeniowa sosna', 'listwa-wykonczeniowa-sosna', 'Listwa wykonczeniowa do detali elewacyjnych i podlog.', '<p>Listwa wykonczeniowa sosna. <a href="/kontakt/#wycena">Zapytaj o przekroje</a>.</p>', 'sosna', 'inne', 'available', 0, 260, 'Listwa wykonczeniowa sosna', 'Listwa wykonczeniowa z sosny.'),
('listwy-wykonczeniowe', 'Katownik drewniany 30x30', 'katownik-drewniany-30x30', 'Katownik drewniany do naroznikow i laczen.', '<p>Katownik 30x30. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'sosna', 'inne', 'available', 0, 270, 'Katownik drewniany 30x30', 'Katownik drewniany 30x30.');

INSERT INTO `products`
(`name`, `slug`, `category_id`, `lead`, `description`, `wood_species`, `profile`, `availability_status`, `status`, `is_featured`, `sort_order`, `meta_title`, `meta_description`, `unit`, `is_indexable`)
SELECT
    s.`name`,
    s.`slug`,
    c.`id`,
    s.`lead`,
    s.`description_html`,
    s.`wood_species`,
    s.`profile`,
    s.`availability_status`,
    'published',
    s.`is_featured`,
    s.`sort_order`,
    s.`meta_title`,
    s.`meta_description`,
    'mb',
    1
FROM stage11_seed_products s
JOIN categories c ON c.slug = s.category_slug
LEFT JOIN products p ON p.slug = s.slug
WHERE p.id IS NULL;

UPDATE `products` p
JOIN stage11_seed_products s ON s.slug = p.slug
LEFT JOIN categories c ON c.slug = s.category_slug
SET
    p.category_id = COALESCE(c.id, p.category_id),
    p.lead = CASE WHEN TRIM(COALESCE(p.lead, '')) = '' THEN s.lead ELSE p.lead END,
    p.description = CASE WHEN TRIM(COALESCE(p.description, '')) = '' THEN s.description_html ELSE p.description END,
    p.wood_species = CASE WHEN TRIM(COALESCE(p.wood_species, '')) = '' THEN s.wood_species ELSE p.wood_species END,
    p.profile = CASE WHEN TRIM(COALESCE(p.profile, '')) = '' THEN s.profile ELSE p.profile END,
    p.availability_status = CASE WHEN p.availability_status = 'unavailable' THEN s.availability_status ELSE p.availability_status END,
    p.status = CASE WHEN p.status IN ('draft', 'hidden') THEN 'published' ELSE p.status END,
    p.is_featured = IF(p.is_featured = 1, 1, s.is_featured),
    p.sort_order = CASE WHEN p.sort_order = 0 THEN s.sort_order ELSE p.sort_order END,
    p.meta_title = CASE WHEN TRIM(COALESCE(p.meta_title, '')) = '' THEN s.meta_title ELSE p.meta_title END,
    p.meta_description = CASE WHEN TRIM(COALESCE(p.meta_description, '')) = '' THEN s.meta_description ELSE p.meta_description END,
    p.is_indexable = 1,
    p.updated_at = NOW();

-- ------------------------------------------------------------
-- 3) Uslugi (4) + FAQ + relacje produktow
-- ------------------------------------------------------------
CREATE TEMPORARY TABLE stage11_seed_services (
    `title` VARCHAR(200) NOT NULL,
    `slug` VARCHAR(220) NOT NULL,
    `excerpt` VARCHAR(300) NOT NULL DEFAULT '',
    `content_html` TEXT NULL,
    `meta_title` VARCHAR(70) NOT NULL DEFAULT '',
    `meta_description` VARCHAR(160) NOT NULL DEFAULT '',
    `sort_order` INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_services
(`title`, `slug`, `excerpt`, `content_html`, `meta_title`, `meta_description`, `sort_order`)
VALUES
('Heblowanie drewna', 'heblowanie', 'Heblowanie elementow drewnianych pod wymiar.', '<p>Heblujemy drewno konstrukcyjne i wykonczeniowe. <a href="/kontakt/#wycena">Zapytaj o usluge</a>.</p>', 'Heblowanie drewna | Tartak Dana', 'Heblowanie drewna pod wymiar.', 10),
('Impregnacja drewna', 'impregnacja-drewna', 'Impregnacja elementow do zastosowan zewnetrznych.', '<p>Impregnujemy drewno pod warunki zewnetrzne. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'Impregnacja drewna | Tartak Dana', 'Impregnacja drewna konstrukcyjnego i wykonczeniowego.', 20),
('Przecieranie drewna', 'przecieranie-drewna', 'Przecieranie surowca na wskazane przekroje.', '<p>Przecieramy drewno pod wymiar i dlugosc. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'Przecieranie drewna | Tartak Dana', 'Przecieranie drewna na zamowione przekroje.', 30),
('Transport drewna', 'transport', 'Transport drewna pod wskazany adres inwestycji.', '<p>Realizujemy transport drewna lokalnie i regionalnie. <a href="/kontakt/#wycena">Zapytaj o dostawe</a>.</p>', 'Transport drewna | Tartak Dana', 'Transport drewna pod wskazany adres.', 40);

INSERT INTO `services`
(`title`, `slug`, `excerpt`, `content_html`, `meta_title`, `meta_description`, `is_published`, `sort_order`)
SELECT
    s.`title`,
    s.`slug`,
    s.`excerpt`,
    s.`content_html`,
    s.`meta_title`,
    s.`meta_description`,
    1,
    s.`sort_order`
FROM stage11_seed_services s
LEFT JOIN services existing ON existing.slug = s.slug
WHERE existing.id IS NULL;

UPDATE `services` sv
JOIN stage11_seed_services s ON s.slug = sv.slug
SET
    sv.excerpt = CASE WHEN TRIM(COALESCE(sv.excerpt, '')) = '' THEN s.excerpt ELSE sv.excerpt END,
    sv.content_html = CASE WHEN TRIM(COALESCE(sv.content_html, '')) = '' THEN s.content_html ELSE sv.content_html END,
    sv.meta_title = CASE WHEN TRIM(COALESCE(sv.meta_title, '')) = '' THEN s.meta_title ELSE sv.meta_title END,
    sv.meta_description = CASE WHEN TRIM(COALESCE(sv.meta_description, '')) = '' THEN s.meta_description ELSE sv.meta_description END,
    sv.is_published = 1,
    sv.sort_order = CASE WHEN sv.sort_order = 0 THEN s.sort_order ELSE sv.sort_order END,
    sv.updated_at = NOW();

CREATE TEMPORARY TABLE stage11_seed_service_faq (
    `service_slug` VARCHAR(220) NOT NULL,
    `question` VARCHAR(500) NOT NULL,
    `answer` TEXT NOT NULL,
    `sort_order` INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_service_faq (`service_slug`, `question`, `answer`, `sort_order`) VALUES
('heblowanie', 'Czy heblowanie jest pod konkretny wymiar?', 'Tak, ustalamy wymiar i tolerancje przed realizacja.', 10),
('impregnacja-drewna', 'Czy impregnowane drewno nadaje sie na zewnatrz?', 'Tak, to glowny cel uslugi impregnacji.', 10),
('przecieranie-drewna', 'Czy realizujecie male partie?', 'Tak, obslugujemy male i duze zamowienia.', 10),
('transport', 'Czy dowozicie drewno pod budowe?', 'Tak, realizujemy transport pod wskazany adres.', 10);

INSERT INTO `service_faq` (`service_id`, `question`, `answer`, `sort_order`)
SELECT
    sv.id,
    f.question,
    f.answer,
    f.sort_order
FROM stage11_seed_service_faq f
JOIN services sv ON sv.slug = f.service_slug
LEFT JOIN service_faq existing ON existing.service_id = sv.id AND existing.question = f.question
WHERE existing.id IS NULL;

CREATE TEMPORARY TABLE stage11_seed_service_products (
    `service_slug` VARCHAR(220) NOT NULL,
    `product_slug` VARCHAR(220) NOT NULL,
    `sort_order` INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_service_products (`service_slug`, `product_slug`, `sort_order`) VALUES
('heblowanie', 'deska-konstrukcyjna-32x150', 10),
('heblowanie', 'listwa-wykonczeniowa-sosna', 20),
('impregnacja-drewna', 'deska-tarasowa-ryflowana-27x145', 10),
('przecieranie-drewna', 'tarcica-konstrukcyjna-c24', 10),
('transport', 'tarcica-konstrukcyjna-c24', 10),
('transport', 'szalowka-na-pioro-wpust-130mm', 20);

INSERT INTO `service_products` (`service_id`, `product_id`, `sort_order`)
SELECT
    sv.id,
    p.id,
    rel.sort_order
FROM stage11_seed_service_products rel
JOIN services sv ON sv.slug = rel.service_slug
JOIN products p ON p.slug = rel.product_slug
LEFT JOIN service_products existing
    ON existing.service_id = sv.id
   AND existing.product_id = p.id
WHERE existing.service_id IS NULL;

-- ------------------------------------------------------------
-- 4) Realizacje (10) + SEO + CTA + relacje produktow
-- ------------------------------------------------------------
CREATE TEMPORARY TABLE stage11_seed_realizations (
    `title` VARCHAR(200) NOT NULL,
    `slug` VARCHAR(220) NOT NULL,
    `excerpt` VARCHAR(300) NOT NULL DEFAULT '',
    `content_html` TEXT NULL,
    `location_text` VARCHAR(200) NOT NULL DEFAULT '',
    `meta_title` VARCHAR(70) NOT NULL DEFAULT '',
    `meta_description` VARCHAR(160) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_realizations
(`title`, `slug`, `excerpt`, `content_html`, `location_text`, `meta_title`, `meta_description`)
VALUES
('Elewacja domu - szalowka 130 mm', 'elewacja-szalowka-elk', 'Elewacja z profilu pioro wpust 130 mm.', '<p>Elewacja z szalowki 130 mm. <a href="/kontakt/#wycena">Zapytaj o podobna realizacje</a>.</p>', 'Elk', 'Elewacja z szalowki 130 mm', 'Realizacja elewacji drewnianej w Elk.'),
('Taras ryflowany przy domu', 'taras-ryflowany-straduny', 'Taras z deski ryflowanej 27x145.', '<p>Taras z deski ryflowanej. <a href="/kontakt/#wycena">Popros o wycene</a>.</p>', 'Straduny', 'Taras ryflowany - realizacja', 'Realizacja tarasu ryflowanego w Stradunach.'),
('Podbitka domu jednorodzinnego', 'podbitka-dom-jednorodzinny-elk', 'Podbitka dachu boazeria 85 mm.', '<p>Podbitka z boazerii 85 mm. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'Elk', 'Podbitka dachu - realizacja', 'Realizacja podbitki dachu w Elk.'),
('Wiezba dachowa C24', 'wiezba-c24-gizycko', 'Dostawa tarcicy C24 pod wiezbe.', '<p>Wiezba z tarcicy C24. <a href="/kontakt/#wycena">Zapytaj o material</a>.</p>', 'Gizycko', 'Wiezba C24 - realizacja', 'Realizacja konstrukcji dachowej C24.'),
('Altana ogrodowa', 'altana-ogrodowa-olecko', 'Altana z belek i listew wykonczeniowych.', '<p>Altana ogrodowa z drewna. <a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>', 'Olecko', 'Altana ogrodowa - realizacja', 'Realizacja altany ogrodowej z drewna.'),
('Plac zabaw', 'plac-zabaw-elk', 'Drewniany plac zabaw pod inwestycje lokalna.', '<p>Plac zabaw z drewna. <a href="/kontakt/#wycena">Napisz do nas</a>.</p>', 'Elk', 'Plac zabaw - realizacja', 'Realizacja placu zabaw z drewna.'),
('Zabudowa gospodarcza', 'zabudowa-gospodarcza-pisz', 'Material na zabudowe gospodarcza.', '<p>Zabudowa gospodarcza z drewna. <a href="/kontakt/#wycena">Sprawdz oferte</a>.</p>', 'Pisz', 'Zabudowa gospodarcza - realizacja', 'Realizacja zabudowy gospodarczej z drewna.'),
('Taras gladki nad jeziorem', 'taras-gladki-mazury', 'Taras z deski gladkiej 27x145.', '<p>Taras gladki nad jeziorem. <a href="/kontakt/#wycena">Zapytaj o realizacje</a>.</p>', 'Warmia i Mazury', 'Taras gladki - realizacja', 'Realizacja tarasu gladkiego na Mazurach.'),
('Drewutnia i zaplecze opalu', 'drewutnia-opal-elk', 'Drewutnia i dostawa opalu.', '<p>Drewutnia i zaplecze opalu. <a href="/kontakt/#wycena">Zapytaj o cene</a>.</p>', 'Elk', 'Drewutnia i opal - realizacja', 'Realizacja drewutni i dostaw opalu.'),
('Podloga drewniana w pensjonacie', 'podloga-drewniana-pensjonat', 'Wykonczenie podlogi deska 28x135.', '<p>Podloga z deski 28x135. <a href="/kontakt/#wycena">Skontaktuj sie</a>.</p>', 'Mragowo', 'Podloga drewniana - realizacja', 'Realizacja podlogi drewnianej w pensjonacie.');

INSERT INTO `realizations`
(`title`, `slug`, `excerpt`, `content_html`, `location_text`, `meta_title`, `meta_description`, `is_published`)
SELECT
    s.`title`,
    s.`slug`,
    s.`excerpt`,
    s.`content_html`,
    s.`location_text`,
    s.`meta_title`,
    s.`meta_description`,
    1
FROM stage11_seed_realizations s
LEFT JOIN realizations r ON r.slug = s.slug
WHERE r.id IS NULL;

UPDATE `realizations` r
JOIN stage11_seed_realizations s ON s.slug = r.slug
SET
    r.excerpt = CASE WHEN TRIM(COALESCE(r.excerpt, '')) = '' THEN s.excerpt ELSE r.excerpt END,
    r.content_html = CASE WHEN TRIM(COALESCE(r.content_html, '')) = '' THEN s.content_html ELSE r.content_html END,
    r.location_text = CASE WHEN TRIM(COALESCE(r.location_text, '')) = '' THEN s.location_text ELSE r.location_text END,
    r.meta_title = CASE WHEN TRIM(COALESCE(r.meta_title, '')) = '' THEN s.meta_title ELSE r.meta_title END,
    r.meta_description = CASE WHEN TRIM(COALESCE(r.meta_description, '')) = '' THEN s.meta_description ELSE r.meta_description END,
    r.is_published = 1,
    r.updated_at = NOW();

CREATE TEMPORARY TABLE stage11_seed_realization_products (
    `realization_slug` VARCHAR(220) NOT NULL,
    `product_slug` VARCHAR(220) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO stage11_seed_realization_products (`realization_slug`, `product_slug`) VALUES
('elewacja-szalowka-elk', 'szalowka-na-pioro-wpust-130mm'),
('taras-ryflowany-straduny', 'deska-tarasowa-ryflowana-27x145'),
('podbitka-dom-jednorodzinny-elk', 'boazeria-gruba-85mm'),
('wiezba-c24-gizycko', 'tarcica-konstrukcyjna-c24'),
('wiezba-c24-gizycko', 'lata-dachowa-40x60'),
('altana-ogrodowa-olecko', 'belka-konstrukcyjna-100x100'),
('plac-zabaw-elk', 'plac-zabaw-dla-dzieci'),
('zabudowa-gospodarcza-pisz', 'deska-konstrukcyjna-32x150'),
('taras-gladki-mazury', 'deska-tarasowa-gladka-27x145'),
('drewutnia-opal-elk', 'drewno-opalowe-suche'),
('podloga-drewniana-pensjonat', 'deska-podlogowa-28x135');

INSERT INTO `realization_products` (`realization_id`, `product_id`)
SELECT
    r.id,
    p.id
FROM stage11_seed_realization_products rel
JOIN realizations r ON r.slug = rel.realization_slug
JOIN products p ON p.slug = rel.product_slug
LEFT JOIN realization_products existing
    ON existing.realization_id = r.id
   AND existing.product_id = p.id
WHERE existing.realization_id IS NULL;

-- ------------------------------------------------------------
-- 5) Strony lokalne (3) + SEO + CTA + ustawienia sekcji
-- ------------------------------------------------------------
SET @cat_deski_elewacyjne := (SELECT id FROM categories WHERE slug = 'deski-elewacyjne' LIMIT 1);
SET @cat_drewno_konstrukcyjne := (SELECT id FROM categories WHERE slug = 'drewno-konstrukcyjne' LIMIT 1);
SET @cat_deski_tarasowe := (SELECT id FROM categories WHERE slug = 'deski-tarasowe' LIMIT 1);
SET @cat_podbitka_dachowa := (SELECT id FROM categories WHERE slug = 'podbitka-dachowa' LIMIT 1);

INSERT INTO `pages`
(`title`, `slug`, `page_type`, `content_html`, `meta_title`, `meta_description`, `settings_json`, `is_published`)
VALUES
(
    'Tartak Elk i okolice',
    'elk-tartak',
    'local',
    '<p>Obslugujemy inwestycje w Elk i okolicy. Drewno konstrukcyjne, elewacyjne i tarasowe z szybka dostawa.</p><p><a href="/kontakt/#wycena">Zapytaj o wycene</a>.</p>',
    'Tartak Elk - drewno budowlane',
    'Drewno budowlane i wykonczeniowe dla klientow z Elku i okolic.',
    JSON_OBJECT(
        'map_iframe', '',
        'cta_heading', 'Potrzebujesz drewna w Elk?',
        'cta_lead', 'Przygotujemy wycene i termin dostawy.',
        'cta_primary_label', 'Zapytaj o wycene',
        'cta_secondary_label', 'Zobacz oferte',
        'area_served', JSON_ARRAY('Elk', 'Straduny', 'Powiat elcki'),
        'products_mode', 'category',
        'products_limit', 6,
        'product_category_ids', JSON_ARRAY(@cat_deski_elewacyjne, @cat_podbitka_dachowa, @cat_drewno_konstrukcyjne),
        'manual_product_ids', JSON_ARRAY(),
        'realizations_mode', 'location_keywords',
        'realizations_limit', 3,
        'realization_category_ids', JSON_ARRAY(),
        'manual_realization_ids', JSON_ARRAY(),
        'realization_location_keywords', JSON_ARRAY('Elk', 'Straduny')
    ),
    1
),
(
    'Drewno Warmia i Mazury',
    'warmia-mazury-drewno',
    'local',
    '<p>Dostarczamy drewno na teren calej Warmii i Mazur. Obsluga inwestycji prywatnych i firmowych.</p><p><a href="/kontakt/#wycena">Skontaktuj sie po wycene</a>.</p>',
    'Drewno Warmia i Mazury - oferta i transport',
    'Drewno budowlane i wykonczeniowe na terenie Warmii i Mazur.',
    JSON_OBJECT(
        'map_iframe', '',
        'cta_heading', 'Szukasz drewna na Warmii i Mazurach?',
        'cta_lead', 'Doradzimy i zorganizujemy dostawe pod inwestycje.',
        'cta_primary_label', 'Zapytaj o wycene',
        'cta_secondary_label', 'Sprawdz realizacje',
        'area_served', JSON_ARRAY('Warmia i Mazury', 'Gizycko', 'Pisz', 'Mragowo'),
        'products_mode', 'category',
        'products_limit', 6,
        'product_category_ids', JSON_ARRAY(@cat_deski_tarasowe, @cat_deski_elewacyjne, @cat_drewno_konstrukcyjne),
        'manual_product_ids', JSON_ARRAY(),
        'realizations_mode', 'location_keywords',
        'realizations_limit', 3,
        'realization_category_ids', JSON_ARRAY(),
        'manual_realization_ids', JSON_ARRAY(),
        'realization_location_keywords', JSON_ARRAY('Warmia', 'Mazury', 'Gizycko', 'Pisz')
    ),
    1
),
(
    'Drewno Podlasie',
    'podlasie-drewno',
    'local',
    '<p>Obslugujemy takze klientow z Podlasia. Oferujemy drewno konstrukcyjne i wykonczeniowe z transportem.</p><p><a href="/kontakt/#wycena">Zapytaj o dostawe</a>.</p>',
    'Drewno Podlasie - oferta Tartak Dana',
    'Drewno budowlane i wykonczeniowe dla klientow z Podlasia.',
    JSON_OBJECT(
        'map_iframe', '',
        'cta_heading', 'Potrzebujesz drewna z transportem na Podlasie?',
        'cta_lead', 'Przygotujemy oferte i harmonogram dostawy.',
        'cta_primary_label', 'Zapytaj o wycene',
        'cta_secondary_label', 'Zobacz uslugi',
        'area_served', JSON_ARRAY('Podlasie', 'Suwalki', 'Augustow', 'Bialystok'),
        'products_mode', 'category',
        'products_limit', 6,
        'product_category_ids', JSON_ARRAY(@cat_deski_elewacyjne, @cat_drewno_konstrukcyjne, @cat_deski_tarasowe),
        'manual_product_ids', JSON_ARRAY(),
        'realizations_mode', 'location_keywords',
        'realizations_limit', 3,
        'realization_category_ids', JSON_ARRAY(),
        'manual_realization_ids', JSON_ARRAY(),
        'realization_location_keywords', JSON_ARRAY('Podlasie', 'Suwalki', 'Augustow')
    ),
    1
)
ON DUPLICATE KEY UPDATE
    `page_type` = 'local',
    `title` = VALUES(`title`),
    `content_html` = CASE
        WHEN CHAR_LENGTH(TRIM(COALESCE(`content_html`, ''))) < 180 THEN VALUES(`content_html`)
        ELSE `content_html`
    END,
    `meta_title` = CASE
        WHEN TRIM(COALESCE(`meta_title`, '')) = '' THEN VALUES(`meta_title`)
        ELSE `meta_title`
    END,
    `meta_description` = CASE
        WHEN TRIM(COALESCE(`meta_description`, '')) = '' THEN VALUES(`meta_description`)
        ELSE `meta_description`
    END,
    `settings_json` = CASE
        WHEN `settings_json` IS NULL
          OR TRIM(COALESCE(`settings_json`, '')) = ''
          OR TRIM(COALESCE(`settings_json`, '')) = '{}'
          OR JSON_VALID(`settings_json`) = 0
        THEN VALUES(`settings_json`)
        ELSE `settings_json`
    END,
    `is_published` = 1,
    `updated_at` = NOW();

-- ------------------------------------------------------------
-- 6) Cleanup temp tables
-- ------------------------------------------------------------
DROP TEMPORARY TABLE IF EXISTS stage11_seed_categories;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_products;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_services;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_service_faq;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_service_products;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_realizations;
DROP TEMPORARY TABLE IF EXISTS stage11_seed_realization_products;
