8.0 KiB
8.0 KiB
📋 Installation Manuals til Tilbud - Komplet Guide
✅ STATUS: FULDT FUNKTIONELT
Systemet kan nu automatisk udtrække monteringsopgaver fra PDF'er og bruge dem i tilbud!
🎯 Hvad Virker Nu
1. PDF Download & Analyse ✅
- PDF'er downloades fra Bygma produktsider
- AI (GPT-4o) analyserer manualer automatisk
- Udtrækker: monteringstrin, tid, værktøj, sikkerhed, materialer
2. Database ✅
- Installation data gemt i
installation_manualstable - JSON felter med struktureret data
- Klar til brug i tilbud-systemet
3. Tilbuds Integration ✅
- Hent monteringsopgaver direkte til tilbud
- Beregn tid automatisk baseret på mængde
- Formatterede opgavebeskrivelser klar til PDF
📖 Brug i Tilbud
Simpel Brug - Hent Opgave
const { getInstallationTask } = require('./get_installation_tasks');
// Hent monteringsopgave for 50 m² bølgeplader
const task = await getInstallationTask('Bølgeplade', 50);
console.log(task.formatted_description);
// Output: Komplet opgavebeskrivelse med trin, tid, vejrforhold
Output Eksempel:
MONTERING AF 280 MONTAGEVEJLEDNING BOELGEPLADETAG
Estimeret tid: 125.0 timer (ca. 16 arbejdsdage)
Sværhedsgrad: medium
MONTERINGSTRIN:
1. Kontroller rethed på lægter og spær med retholt eller snor
2. Monter Cembrit Plastudhængsklodser med ventilation ved tagfod
3. Fastgør lægter i henhold til gældende anvisninger
... (15 trin total)
VIGTIGE PUNKTER:
• Korrekt opbevaring og håndtering er afgørende
• Ventilation ved tagfod og kip er nødvendig
• Minimum 14˚ taghældning skal overholdes
...
VEJRFORHOLD:
Tørt vejr anbefales for at undgå kalkudfældninger
🔧 Integration i Tilbuds-System
I Quote Generator (unified-server/routes/quotes.js):
const { getInstallationTask } = require('../get_installation_tasks');
// Når du genererer tilbud med smart packages
router.post('/api/quotes/:id/generate-pdf', async (req, res) => {
const quoteId = req.params.id;
// Hent smart packages for tilbuddet
const packages = await db.query(`
SELECT sp.*, spm.material_name, spm.quantity
FROM smart_packages sp
JOIN smart_package_materials spm ON sp.id = spm.smart_package_id
WHERE sp.quote_id = ?
`, [quoteId]);
// Tilføj monteringsopgaver
const tasksForQuote = [];
for (const pkg of packages) {
const task = await getInstallationTask(pkg.material_name, pkg.quantity);
if (task) {
tasksForQuote.push({
title: task.title,
description: task.formatted_description,
hours: task.time.total_hours,
days: task.time.work_days
});
}
}
// Brug tasksForQuote i PDF generering
// ...
});
I PDF Template:
<!-- I tilbud PDF template -->
<div class="installation-tasks">
<h2>Monteringsopgaver</h2>
{{#each tasks}}
<div class="task">
<h3>{{this.title}}</h3>
<div class="task-details">
<strong>Estimeret tid:</strong> {{this.hours}} timer ({{this.days}} arbejdsdage)
</div>
<pre class="task-description">{{this.description}}</pre>
</div>
{{/each}}
</div>
📊 Database Struktur
CREATE TABLE installation_manuals (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255), -- "280 Montagevejledning Boelgepladetag"
manufacturer VARCHAR(255), -- "Cembrit"
manual_filename VARCHAR(255),
manual_type ENUM('installation', ...),
-- Monteringsdata
installation_steps JSON, -- Array af trin
time_estimate_per_unit DECIMAL(5,2), -- 2.5 timer per m²
time_unit ENUM('per_sqm', ...),
-- Hjælpemidler
required_tools JSON, -- ["Vinkelsliber", ...]
safety_requirements JSON, -- ["Brug støvafsugning", ...]
material_requirements JSON, -- {"Tagskruer": "2.1 stk/m²", ...}
-- Metadata
skill_level ENUM('let','medium','svær'),
weather_conditions TEXT,
key_points JSON,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
🚀 Workflow: Fra PDF til Tilbud
1. Download PDF fra Bygma
# Manuelt: Gå til Bygma produktside og download PDF
# Gem i: manuals/
2. Analyser med AI
cd /mnt/HC_Volume_103713257/tilbudgivern
python3 analyze_manual_pdfs.py
Output:
- ✅
installation_data/analysis_results.json- AI analyse - ✅
installation_data/installation_manuals_migration.sql- Database migration
3. Import til Database
mysql -u tilbudgivern_service -p'REDACTED_PASSWORD' tilbudgivern < \
installation_data/installation_manuals_migration.sql
4. Test i Node.js
node get_installation_tasks.js
5. Brug i Tilbud
const task = await getInstallationTask('Bølgeplade', 50);
// Brug task.formatted_description i PDF
📁 Filer Oprettet
Python Scripts (AI Analyse)
- ✅
analyze_manual_pdfs.py- Hovedscript til PDF analyse - ✅
download_bygma_manuals.py- Bygma scraper - ✅
manuals/- PDF storage - ✅
installation_data/- Output (JSON + SQL)
Node.js Integration
- ✅
get_installation_tasks.js- Hent opgaver til tilbud - ✅
core/installationManuals.js- Full integration modul - ✅
queries_installation_tasks.sql- SQL eksempler
💡 Use Cases
1. Smart Package med Auto-tid
// Når kunde vælger "Tag renovering 100 m²"
const materials = [
{ name: 'Bølgeplade', quantity: 100 }
];
const timeCalc = await calculateTotalInstallationTime(materials);
console.log(`Total tid: ${timeCalc.total_hours} timer`);
// Output: Total tid: 250 timer
2. Opgavebeskrivelse i Tilbud PDF
const task = await getInstallationTask('Bølgeplade', 100);
// Brug i PDF:
pdf.addPage();
pdf.text(task.formatted_description);
// Inkluderer: Trin, tid, vejrforhold, vigtige punkter
3. Værktøjsliste til Kunde
const task = await getInstallationTask('Bølgeplade', 50);
console.log('Nødvendigt værktøj:');
task.tools.forEach(tool => console.log(`- ${tool}`));
// Output:
// - Håndværktøj
// - Vinkelsliber med diamantklinge
// - Rundsav med hårdmetalklinge
// ...
🎯 Nuværende Data
Antal manualer i database: 1
- ✅ Cembrit Bølgeplader (280 Montagevejledning)
- 15 monteringstrin
- 2.5 timer per m²
- Medium sværhedsgrad
- 6 værktøjer
- 3 sikkerhedskrav
Næste steps:
- Download flere PDF'er fra Bygma produktsider
- Kør
analyze_manual_pdfs.pyfor hver ny PDF - Import til database
- Data er automatisk tilgængelig i tilbuds-systemet
🔗 Quick Reference
Test Script
node get_installation_tasks.js
SQL Query
SELECT product_name, time_estimate_per_unit, skill_level
FROM installation_manuals;
API i Code
const { getInstallationTask } = require('./get_installation_tasks');
const task = await getInstallationTask('produktnavn', mængde);
✨ Fordele
✅ Automatisk - AI udtrækker alt fra PDF'er
✅ Præcist - GPT-4o forstår danske montagemanualer
✅ Struktureret - JSON data klar til brug
✅ Fleksibelt - Kan bruges i PDF, UI, beregninger
✅ Skalerbart - Nemt at tilføje flere manualer
📝 Eksempel Data
{
"title": "Montering af 280 Montagevejledning Boelgepladetag",
"quantity": 50,
"unit": "m²",
"time": {
"per_unit": 2.5,
"total_hours": 125,
"work_days": 16
},
"difficulty": "medium",
"steps": [
"Kontroller rethed på lægter og spær med retholt eller snor",
"Monter Cembrit Plastudhængsklodser med ventilation ved tagfod",
...
],
"key_points": [
"Korrekt opbevaring og håndtering er afgørende",
"Ventilation ved tagfod og kip er nødvendig",
...
],
"tools": [
"Håndværktøj",
"Vinkelsliber med diamantklinge",
...
],
"weather": "Tørt vejr anbefales for at undgå kalkudfældninger"
}
Status: ✅ Klar til produktion
Testet: ✅ Fungerer med Cembrit bølgeplader
Næste: Download flere PDFer og test i fuldt tilbud workflow