8.3 KiB
Smart Packages - Intelligent Automated Flow
Oversigt
Smart Packages er nu redesigned til at være fuldt automatisk med AI-integration for at beregne tid, materialer og opgaver baseret på m² fra projekter.
Ny Struktur
1. Arbejdsområder (Categories)
Før: "package_type" (standard, premium, basic) - gav ingen mening
Nu: Arbejdsområder baseret på byggeopgaver:
- Tag - Tagarbejde, tagsten, tagplader
- Gulv - Gulvlægning, underlag, finish
- Væg - Vægge, skillevægge, isolering
- Køkken - Køkkenmontage, bordplader, skabe
- Badeværelse - VVS, fliser, membran
2. Database Struktur
material_packages (Hovedtabel)
- id: INT
- name: VARCHAR(255)
- description: TEXT
- category: VARCHAR(100) -- Tag, Gulv, Væg, etc.
- difficulty_level: INT (1-4)
- estimated_hours: DECIMAL (basis timer)
- hourly_rate: DECIMAL
- area_based: BOOLEAN -- Om pakken skal beregnes ud fra m²
- time_per_sqm: DECIMAL -- Timer per m² (beregnes automatisk)
- auto_calculated: BOOLEAN -- Om alt beregnes automatisk
- installation_notes: TEXT
- is_template: BOOLEAN
- popularity_score: INT
smart_package_materials (Materialer i pakke)
- id: INT
- package_id: INT
- material_id: INT
- quantity_base: DECIMAL -- Basismængde (uanset størrelse)
- quantity_per_sqm: DECIMAL -- Mængde per m²
- quantity_formula: VARCHAR -- Formel: "area * 1.5 + 10"
- waste_percentage: DECIMAL -- Spildprocent (5%, 10%)
- optional: BOOLEAN
- installation_manual_id: INT -- Link til montagevejledning
smart_package_tasks (Opgaver i pakke)
- id: INT
- package_id: INT
- task_title: VARCHAR(255)
- task_description: TEXT
- estimated_hours: DECIMAL
- time_per_sqm: DECIMAL -- Timer per m² for denne opgave
- order_index: INT -- Rækkefølge
- source: VARCHAR -- 'manual' eller 'ai_generated'
- source_material_id: INT -- Hvis AI-genereret fra materiale
Intelligent Workflow
Fase 1: Opret Smart Pakke med Materialer
- Tømrer opretter ny smart pakke (f.eks. "Tag Renovering - Betontagsten")
- Vælger kategori: "Tag"
- Tilføjer materialer via autocomplete
- For hvert materiale:
- Klik på 📋 knap → Henter montagevejledning automatisk
- AI analyserer montagevejledning → Udtræk opgaver
- Beregner tid per m² baseret på montagevejledning
- Opretter formler for materialemængder per m²
Fase 2: AI Generering af Opgaver (TODO)
// Når montagevejledning hentes:
async function generateTasksFromManual(installationManual, materialId, packageId) {
const prompt = `
Baseret på denne montagevejledning, generer en struktureret liste af opgaver:
Produkt: ${installationManual.product_name}
Monteringstrin: ${JSON.stringify(installationManual.installation_steps)}
Tidsestimat: ${installationManual.time_estimate_per_unit} ${installationManual.time_unit}
Sværhedsgrad: ${installationManual.skill_level}
Generer:
1. Opgave titel (kort, præcis)
2. Opgave beskrivelse
3. Timer per m² for denne opgave
4. Rækkefølge (1, 2, 3...)
Format: JSON array
`;
const tasks = await openaiService.generateTasks(prompt);
// Gem opgaver i smart_package_tasks
for (const task of tasks) {
await db.execute(`
INSERT INTO smart_package_tasks
(package_id, task_title, task_description, time_per_sqm, order_index, source, source_material_id)
VALUES (?, ?, ?, ?, ?, 'ai_generated', ?)
`, [packageId, task.title, task.description, task.timePerSqm, task.order, materialId]);
}
// Opdater pakken med samlet tid per m²
const totalTimePerSqm = tasks.reduce((sum, t) => sum + t.timePerSqm, 0);
await db.execute(`
UPDATE material_packages
SET time_per_sqm = ?, auto_calculated = 1
WHERE id = ?
`, [totalTimePerSqm, packageId]);
}
Fase 3: Brug i Projekt
-
Tømrer er i projekt flow (f.eks. Tag Renovering på 85m²)
-
Vælger Smart Pakke "Tag Renovering - Betontagsten"
-
m² fra projekt indsættes automatisk (85m²)
-
System beregner automatisk:
// Materialer beregnes: for (material in package.materials) { quantity = (material.quantity_per_sqm * area) + material.quantity_base quantity = quantity * (1 + material.waste_percentage / 100) } // Tid beregnes: totalHours = package.time_per_sqm * area // Pris beregnes: materialCost = sum(material.price * material.quantity) laborCost = totalHours * package.hourly_rate totalPrice = materialCost + laborCost -
Opgaver tilføjes til projekt med korrekt rækkefølge
-
Materialer tilføjes til indkøbsliste
-
Timer tilføjes til tidsplan
Eksempel Flow
Eksempel: Tag Renovering Smart Pakke
1. Opret pakke:
- Navn: "Tag Renovering - Betontagsten"
- Kategori: "Tag"
- Sværhedsgrad: 3
2. Tilføj materialer:
Materiale 1: Betontagsten
- Klik 📋 → Hent montagevejledning
- AI finder: "2.5 timer per 10m²" = 0.25 timer/m²
- Formel:
12 stk/m² * area(med 10% spild) - AI genererer opgaver:
- "Fjern gamle tagsten" - 0.15 timer/m²
- "Kontroller undertag" - 0.05 timer/m²
- "Læg nye betontagsten" - 0.25 timer/m²
- "Monter ryg og noktagsten" - 0.10 timer/m²
Materiale 2: Undertag
- Klik 📋 → Hent montagevejledning
- AI finder: "1.8 timer per 10m²" = 0.18 timer/m²
- Formel:
1 m²/m² * area(med 5% spild) - AI genererer opgaver:
- "Udrul undertag" - 0.08 timer/m²
- "Fastgør undertag" - 0.10 timer/m²
3. System beregner automatisk:
- Samlet tid per m²: 0.73 timer/m²
- Opdaterer
material_packages.time_per_sqm = 0.73
4. Brug i projekt (85m² tag):
Materialer:
- Betontagsten: 12 * 85 * 1.10 = 1122 stk
- Undertag: 1 * 85 * 1.05 = 89 m²
Tid:
- Total: 0.73 * 85 = 62 timer
Pris:
- Betontagsten: 1122 * 15kr = 16,830kr
- Undertag: 89 * 45kr = 4,005kr
- Arbejdsløn: 62 * 580kr = 35,960kr
- I ALT: 56,795kr
Fordele
For Tømrer
✅ Ingen manuel beregning - Alt er automatisk
✅ Præcise estimater - Baseret på faktiske montagevejledninger
✅ Hurtig tilbudsgivning - Vælg pakke, indtast m², færdig
✅ Strukturerede opgaver - AI genererer arbejdsliste automatisk
For System
✅ Læring over tid - Jo flere pakker, jo bedre estimater
✅ Konsistens - Samme beregning hver gang
✅ Sporbarhed - Se hvor tid/materialer kom fra
✅ Fleksibilitet - Nem at justere formler
Næste Skridt (Implementation)
1. AI Opgave Generering (Højeste prioritet)
- Database struktur klar
- OpenAI integration til at parse montagevejledning
- Automatisk opgave generering ved tilføjelse af materiale
- UI til at vise AI-genererede opgaver med mulighed for at redigere
2. Formel Beregning
- Frontend: Vis formel editor ved tilføjelse af materiale
- Backend: Parse og validér formler
- Test: Beregn korrekt med forskellige input
3. Projekt Integration
- API endpoint:
/api/customer-projects/:id/add-smart-package - Automatisk udtræk m² fra projekt geometri
- Beregn alt automatisk ved tilføjelse
- Vis resultat før bekræftelse
4. Smart Package Browser
- Filtrer efter kategori (Tag, Gulv, osv.)
- Vis m² range og estimeret pris
- Preview: Hvad indgår i pakken?
- Popularitet: Mest brugte pakker
API Endpoints
Nye endpoints der skal oprettes:
// Generer opgaver fra montagevejledning
POST /api/smart-packages/:id/materials/:materialId/generate-tasks
Body: { installationManualId: number }
Response: { tasks: Task[], timePerSqm: number }
// Beregn pakke for specifik m²
POST /api/smart-packages/:id/calculate
Body: { area: number }
Response: {
materials: { id, name, quantity, unit, price, total }[],
tasks: { title, hours, description }[],
totalHours: number,
materialCost: number,
laborCost: number,
totalCost: number
}
// Tilføj smart pakke til projekt
POST /api/customer-projects/:projectId/add-smart-package
Body: { packageId: number, area?: number }
Response: {
addedMaterials: number,
addedTasks: number,
totalCost: number
}
Status:
✅ Database struktur oprettet
✅ Kategorier ændret til arbejdsområder
✅ Frontend opdateret til at fjerne package_type
⏳ AI opgave generering mangler
⏳ Automatisk beregning i projekt mangler
Næste: Implementér AI opgave generering når materiale tilføjes!