Files
tilbudgivern/archive/docs/BYGMA_SCRAPER_STATUS.md

5.2 KiB

Bygma Manual Scraping & Analysis System

Status: ⚠️ Delvist Funktionelt

Systemet er bygget og klar, men Bygma's PDF URLs er ikke længere tilgængelige.

📁 Filer Oprettet

Python Scripts

  • download_bygma_manuals.py - Hovedscript til download og analyse af Bygma manualer
  • analyze_manual_pdfs.py - Generisk PDF analyzer (til manuelt downloadede PDFs)
  • scrape_bygma_with_playwright.py - Playwright-baseret scraper
  • scrape_datablade.py - Scraper til Bygma datablade side
  • scrape_and_analyze_manuals.py - Original Selenium-baseret scraper
  • analyze_bygma_manuals_direct.py - Direkte PDF analyzer

Mapper

  • manuals/ - Mappe til downloadede PDF'er
  • installation_data/ - Mappe til analyse resultater (JSON + SQL)

🔧 Installerede Dependencies

# Python packages (installeret globally)
pip3 install --break-system-packages playwright selenium openai PyPDF2 requests

# Playwright browser
/home/alex/.local/bin/playwright install chromium

💡 Hvordan Systemet Virker

1. Download PDFs

# Fra Bygma (hvis URLs virker)
python3 download_bygma_manuals.py

# Eller placer manuelt downloadede PDFs i manuals/ mappen

2. AI Analyse

Systemet bruger OpenAI GPT-4o til at udtrække:

  • installation_steps - Konkrete monteringstrin
  • ⏱️ time_estimate_per_unit - Tid per m²
  • 🔧 required_tools - Nødvendigt værktøj
  • ⚠️ safety_requirements - Sikkerhedskrav
  • 📦 material_requirements - Tilhørende materialer
  • 🎯 skill_level - Sværhedsgrad (let/medium/svær)
  • 🌤️ weather_conditions - Vejrkrav
  • 📋 key_points - Vigtigste punkter

3. Database Migration

Genererer automatisk SQL migration:

CREATE TABLE installation_manuals (
  id INT AUTO_INCREMENT PRIMARY KEY,
  product_name VARCHAR(255),
  manufacturer VARCHAR(255),
  manual_url TEXT,
  manual_filename VARCHAR(255),
  manual_type ENUM('installation', 'manual', 'safety'),
  installation_steps JSON,
  time_estimate_per_unit DECIMAL(5,2),
  time_unit ENUM('per_sqm', 'per_piece', 'per_project'),
  required_tools JSON,
  safety_requirements JSON,
  material_requirements JSON,
  skill_level ENUM('let', 'medium', 'svær'),
  weather_conditions TEXT,
  key_points JSON,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

🚀 Brug Med Manuelle PDFs

Hvis automatisk scraping ikke virker (som nu):

# 1. Download PDFs manuelt fra Bygma og gem i manuals/
cd manuals/
wget https://example.com/manual.pdf  # eller download via browser

# 2. Kør analyzer
cd ..
export OPENAI_API_KEY="<OPENAI_API_KEY>"
python3 analyze_manual_pdfs.py

# 3. Import til database
mysql -u tilbudgivern_service -p"" tilbudgivern < installation_data/installation_manuals_migration.sql

🔗 Integration Med Smart Packages

// Hent installation data for et materiale
const getInstallationInfo = async (varenr) => {
  const result = await db.query(`
    SELECT 
      installation_steps,
      time_estimate_per_unit,
      required_tools,
      safety_requirements,
      key_points
    FROM installation_manuals 
    WHERE product_name LIKE ?
  `, [`%${varenr}%`]);
  
  return result[0];
};

// Beregn total tid for smart package
const calculatePackageTime = async (materials) => {
  let totalTime = 0;
  
  for (const material of materials) {
    const info = await getInstallationInfo(material.varenr);
    if (info) {
      const quantity = material.quantity; // antal m²
      totalTime += info.time_estimate_per_unit * quantity;
    }
  }
  
  return totalTime;
};

📊 Output Eksempel

JSON Result (installation_data/analysis_results.json)

[
  {
    "product_name": "Swisspearl Bølgeplader B7",
    "manual_filename": "280_Montagevejledning_Boelgepladetag.pdf",
    "analysis": {
      "installation_steps": [
        "Kontroller at tagkonstruktionen er plan og bæredygtig",
        "Monter undertag med mindst 40mm luftspalte",
        "Læg lægter med max 345mm c/c afstand",
        ...
      ],
      "time_estimate_per_unit": 0.75,
      "time_unit": "per_sqm",
      "required_tools": [
        "Vinkelslibe", 
        "Boremaskine",
        "Skruetrækker",
        "Vaterpas"
      ],
      "skill_level": "medium",
      "weather_conditions": "Minimum 5°C, tørt vejr, max 10 m/s vind"
    }
  }
]

Nuværende Problem

Bygma's PDF URLs returnerer 404:

❌ https://www.bygma.dk/DWSDownload.aspx_File=/Files/Filer/DE/Brochurer/280_Montagevejledning_Boelgepladetag.pdf

Mulige Løsninger:

  1. Find nye working URLs - Tjek Bygma produktsider manuelt
  2. Brug Swisspearl direkte - Download fra www.swisspearl.com
  3. Manuel download - Download via browser, brug analyze_manual_pdfs.py
  4. Kontakt Bygma - Bed om direkte adgang til deres produktdata API

🎯 Næste Skridt

  1. Find working PDF URLs fra Bygma eller Swisspearl
  2. Test med 1-2 manuelle PDF downloads
  3. Verificer AI analyse kvalitet
  4. Import til database
  5. Integrer med smart packages UI

📝 Notater

  • OpenAI API key: Sat i environment (OPENAI_API_KEY)
  • Database: tilbudgivern @ localhost:3306
  • Playwright browser: Chromium 140.0.7339.16 installed
  • Python: Version 3.12