5.2 KiB
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 manualeranalyze_manual_pdfs.py- Generisk PDF analyzer (til manuelt downloadede PDFs)scrape_bygma_with_playwright.py- Playwright-baseret scraperscrape_datablade.py- Scraper til Bygma datablade sidescrape_and_analyze_manuals.py- Original Selenium-baseret scraperanalyze_bygma_manuals_direct.py- Direkte PDF analyzer
Mapper
manuals/- Mappe til downloadede PDF'erinstallation_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:
- Find nye working URLs - Tjek Bygma produktsider manuelt
- Brug Swisspearl direkte - Download fra www.swisspearl.com
- Manuel download - Download via browser, brug
analyze_manual_pdfs.py - Kontakt Bygma - Bed om direkte adgang til deres produktdata API
🎯 Næste Skridt
- Find working PDF URLs fra Bygma eller Swisspearl
- Test med 1-2 manuelle PDF downloads
- Verificer AI analyse kvalitet
- Import til database
- 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