Files
tilbudgivern/docs/features/ALLOCATED_HOURS_FEATURE.md
alexpolo1 4a372d2e28 clean up
2025-10-30 18:28:58 +00:00

5.8 KiB

Allokerede Timer - Ny Funktionalitet ⏱️

Oversigt

Den nye funktionalitet i Tilbudgivern gør det muligt at registrere både estimerede timer og allokerede timer for hver arbejdsopgave i et projekt. Dette giver bedre projektstyring og sporbarhed.

Funktioner

🎯 Dobbelt Timer Sporing

  • Estimerede Timer: De oprindelige beregnede timer for hver opgave
  • Allokerede Timer: De faktisk tildelte/planlagte timer til opgaven

📊 Visuel Opdeling

  • Side-om-side input felter for estimerede og allokerede timer
  • Forskellige farver for at skelne mellem de to typer
  • Automatisk beregning af totaler for begge kategorier

💾 Database Struktur

Nye kolonner tilføjet til project_labor tabellen:

  • allocated_hours_breakdown (LONGTEXT) - JSON struktur med allokerede timer
  • special_conditions (TEXT) - Særlige arbejdsforhold

Hvordan Det Virker

Frontend (LaborInput.js)

// Hver arbejdsopgave har nu både estimerede og allokerede timer
const workBreakdown = [
  { 
    task: 'Forberedelse og opstilling', 
    hours: 8,           // Estimeret
    allocatedHours: 6,  // Allokeret 
    description: 'Afdækning, værktøj, sikkerhed' 
  }
];

Database Struktur

// work_breakdown (eksisterende)
[
  {
    "task": "Forberedelse og opstilling",
    "hours": 8,
    "rate": 580,
    "cost": 4640,
    "notes": "Afdækning, værktøj, sikkerhed"
  }
]

// allocated_hours_breakdown (ny)
[
  {
    "task": "Forberedelse og opstilling", 
    "allocatedHours": 6,
    "rate": 580,
    "cost": 3480,
    "notes": "Afdækning, værktøj, sikkerhed"
  }
]

API Endpoints

POST /api/customer-projects/:projectId/labor

{
  "laborEntries": [
    {
      "taskDescription": "Forberedelse og opstilling",
      "estimatedHours": 8,
      "allocatedHours": 6,
      "hourlyRate": 580,
      "notes": "Afdækning, værktøj, sikkerhed"
    }
  ],
  "carpenterCount": 2,
  "specialConditions": "Adgang kun via stige",
  "totalAllocatedHours": 24
}

Brugergrænsefladen

Timer Input Sektion

┌─────────────────────────────────────────┐
│ Antal tømrere: [2]                      │
│ Total arbejdstimer (estimeret): [32]    │  
│ Total allokerede timer: [28]            │
│ Timepris (kr): [580]                    │
└─────────────────────────────────────────┘

Arbejdsfordeling

┌─────────────────────────────────────────┐
│ Forberedelse og opstilling              │
│ ┌─────────┐  ┌─────────┐                │
│ │Estimeret│  │Allokeret│                │  
│ │   [8]   │  │   [6]   │                │
│ └─────────┘  └─────────┘                │
│ [Afdækning, værktøj, sikkerhed_______]  │
└─────────────────────────────────────────┘

Sammendrag

┌─────────────────────────────────────────┐
│ Total estimerede timer: 32 timer        │
│ Total allokerede timer: 28 timer        │  
└─────────────────────────────────────────┘

Fordele

🎯 Bedre Planlægning

  • Sammenlign estimater med faktisk allokering
  • Identificer over/under-estimering
  • Forbedre fremtidige estimater

📈 Projektstyring

  • Spor afvigelser mellem plan og virkelighed
  • Juster ressourcer baseret på allokering
  • Dokumenter særlige forhold

💰 Økonomisk Kontrol

  • Separat kostberegning for estimerede vs allokerede timer
  • Bedre budgetkontrol
  • Mere præcise tilbud til kunder

CSS Styling

Nye Klasser

  • .hours-inputs - Container for timer input felter
  • .hour-input-group - Gruppe for ét timer input
  • .hours-input.allocated - Styling for allokerede timer
  • .total-row.allocated - Styling for allokerede totaler

Farver

  • Estimerede timer: Standard grøn (#d4edda)
  • Allokerede timer: Blå (#d1ecf1)

Implementering Status

Færdige Komponenter

  • Database struktur udvidet
  • Frontend LaborInput komponent opdateret
  • Backend API udvidet til at håndtere begge timer typer
  • CSS styling tilføjet
  • Automatisk beregning af totaler

🔄 Lagret Data

  • Estimerede timer gemmes i work_breakdown
  • Allokerede timer gemmes i allocated_hours_breakdown
  • Særlige forhold gemmes i special_conditions

🎨 Visuel Design

  • Side-om-side layout for timer input
  • Forskellige farver for estimerede vs allokerede
  • Klarere labels og beskrivelser
  • Responsive design der fungerer på alle skærmstørrelser

Migration af Eksisterende Data

Eksisterende projekter vil fungere normalt:

  • allocatedHours felter starter tomme
  • Eksisterende work_breakdown forbliver uændret
  • Bruger kan udfylde allokerede timer efter behov

Fremtidige Muligheder

📊 Rapportering

  • Sammenlign estimerede vs allokerede timer på tværs af projekter
  • Identificer mønstre i afvigelser
  • Forbedre estimering accuracy

Tidssporing

  • Integration med time tracking systemer
  • Faktisk tid brugt vs allokeret tid
  • Real-time opdateringer under projektet

📈 Analytics

  • Dashboard med timer fordeling
  • Trends i arbejdsfordeling
  • Performance metrics for teams

Status: Implementeret og klar til brug

Den nye funktionalitet er nu fuldt implementeret og giver dig mulighed for at spore både estimerede og allokerede timer for alle arbejdsopgaver i dine projekter!