Files
tilbudgivern/PDF_DOWNLOAD_FIX.md
T
alexpolo1 d4d3eb3d00 feat: Implement Bygma Prisbog import script to handle CSV import of 54,558 products
feat: Create Python script to scrape 10 installation manuals from Bygma, focusing on construction materials

feat: Develop script to scrape installation manual from Bygma by VareNr, including AI analysis and database storage

feat: Add script to scrape Swedoor Snap-In Karmsat installation manual using product name from URL

chore: Create start script for PM2 to manage services with correct node path

test: Add comprehensive test script for quote generation and PDF endpoints

test: Implement CSV parser tests to verify product presence and data integrity

test: Create readline test script to efficiently read and search for product in CSV
2025-10-26 08:15:46 +00:00

2.7 KiB

PDF Download Fix med Montagevejledninger

Problem

PDF download virkede ikke, og opgavebeskrivelser fra montagevejledninger var ikke inkluderet i PDF'en.

Løsning

1. Updated unified-server.js

Ændring: Tilføjet tasks parameter til pdfData objektet så generateWorkDescription() kan få adgang til opgaver.

const pdfData = {
  project: project,
  geometry: geometry,
  materials: materials,
  labor: tasks,
  tasks: tasks, // ✅ Added for generateWorkDescription
  totals: { ... }
};

2. Installeret Chrome for Puppeteer

Problem: Puppeteer kunne ikke finde Chrome browser til PDF generering.

Løsning:

npx puppeteer browsers install chrome

Chrome blev installeret i: /home/alex/.cache/puppeteer/chrome/linux-140.0.7339.82/

Resultat

✅ PDF Download virker nu!

  • PDF fil: 1.2 MB (korrekt størrelse)
  • Inkluderer montagevejledninger fra database
  • Inkluderer opgavebeskrivelser fra project_tasks
  • Fallback til generiske beskrivelser hvis ingen manual findes

Test

curl -X POST http://localhost:4031/api/pdf/generate \
  -H "Content-Type: application/json" \
  -d '{"projectId": 19}' \
  -o tilbud.pdf

PDF Indhold

PDF'en inkluderer nu:

Side 1 - Tilbud

  • Firma logo og kundeinfo
  • Projekt adresse og navn
  • ARBEJDSBESKRIVELSE (fra project_tasks hvis tilgængelig)
  • MONTAGE INSTRUKTIONER (fra installation_manuals):
    • Produkt navn og producent
    • Top 5 installations trin
    • Vigtige punkter og sikkerhedsnoter
  • Materialer liste med priser
  • Total beregning med moms

Side 2 - Firmabeskrivelse

  • Om firmaet
  • Garantier og certificeringer
  • Elite Håndværker logo

Tekniske Detaljer

pdfGenerationService.js

  • generateWorkDescription() er async
  • Henter installation manuals fra database for hvert materiale
  • Parser JSON felter (installation_steps, key_points)
  • Viser top 5 trin + vigtige punkter
  • Fallback til generiske beskrivelser

Database Integration

  • Tabel: installation_manuals
  • Query: LOWER(product_name) LIKE LOWER(?)
  • Felter: product_name, manufacturer, installation_steps, key_points

Puppeteer Setup

  • Browser: Chrome 140.0.7339.82
  • Args: headless, no-sandbox, disable-setuid-sandbox
  • Format: A4 med 20mm margins
  • Timeout: 30 sekunder

Status

✅ COMPLETED - Backend genstartet (restart #63) ✅ TESTED - PDF genereret succesfuldt (1.2 MB) ✅ VERIFIED - Logs viser "✅ PDF generated successfully"

Filer Ændret

  1. /unified-server.js - Tilføjet tasks til pdfData
  2. /backend/src/services/pdfGenerationService.js - Allerede opdateret med installation manual integration

Dato: 2025-10-25
Status: Productionstæt ✅