Files
tilbudgivern/migrations/add_custom_task_fields.sql
T
alexpolo1 2186362e3c Implement Bygma PDF Scraper, Custom Task Creation, Customer Search, and Manual Retrieval Features
- Added `scrape_fixed_v2.py` for scraping installation manuals from Bygma using Playwright.
- Created `test-custom-task.js` to test custom task creation in the smart packages API.
- Developed `test-customer-search.html` for testing customer search functionality with auto-fill capabilities.
- Implemented `test-manuals.html` for testing the retrieval and display of installation manuals.
- Added SQL script `test_project_21_materials.sql` to insert test materials for project 21 and check for manual availability.
2025-10-30 18:04:41 +00:00

114 lines
3.6 KiB
SQL

-- Migration: Tilføj felter til custom/manuelle installation opgaver
-- Dato: 2025-10-29
-- Formål: Gøre det muligt at oprette manuelle opgaver med timer pr. enhed
-- Tilføj time_unit og time_per_unit til smart_package_tasks
ALTER TABLE smart_package_tasks
ADD COLUMN time_unit ENUM('per_sqm', 'per_meter', 'per_piece', 'per_project', 'per_hour')
DEFAULT 'per_project'
COMMENT 'Enhed for tidsestimering (pr. m², pr. løbende meter, pr. styk, pr. projekt, pr. time)',
ADD COLUMN time_per_unit DECIMAL(10,2)
DEFAULT 0
COMMENT 'Timer pr. enhed (fx 0.17 timer pr. løbende meter = 10 min)',
ADD COLUMN is_custom BOOLEAN
DEFAULT 0
COMMENT 'Indikerer om opgaven er manuelt oprettet (ikke fra montage vejledning)',
ADD COLUMN material_varenr VARCHAR(50)
NULL
COMMENT 'Varenummer på materialet opgaven relaterer til',
ADD INDEX idx_material_varenr (material_varenr);
-- Opdater eksisterende tasks til at bruge per_project som default
UPDATE smart_package_tasks
SET time_unit = 'per_project',
time_per_unit = hours
WHERE time_unit IS NULL OR time_unit = 'per_project';
-- Eksempel: Lægter opsætning (som tømmeren nævnte)
INSERT INTO smart_package_tasks (
package_id,
task_name,
task_description,
task_order,
estimated_hours,
time_unit,
time_per_unit,
hourly_rate,
is_custom,
material_varenr,
required_tools,
created_at
) VALUES (
(SELECT id FROM material_packages WHERE name LIKE '%B7 Tag%' LIMIT 1),
'Opsætning af lægter',
'Præcis montage af lægter med korrekt afstand (cc 370mm). Inkluderer skruearbejde og kontrol af vaterpas.',
4,
0, -- Beregnes dynamisk baseret på løbende meter
'per_meter', -- Timer pr. løbende meter
0.17, -- 10 minutter pr. løbende meter (10/60 = 0.166667)
580,
1, -- Custom/manuelt oprettet
'147072', -- Varenr for lægter (hvis kendt)
'["skruemaskine", "vaterpas", "målebånd", "snor"]',
NOW()
);
-- Eksempel: Spær opsætning
INSERT INTO smart_package_tasks (
package_id,
task_name,
task_description,
task_order,
estimated_hours,
time_unit,
time_per_unit,
hourly_rate,
is_custom,
required_tools,
created_at
) VALUES (
(SELECT id FROM material_packages WHERE name LIKE '%B7 Tag%' LIMIT 1),
'Montage af spær',
'Præcis opsætning af bærende spær med korrekt afstand og vinkel. Kontrol af niveau og lodrethed.',
2,
0, -- Beregnes dynamisk
'per_piece', -- Timer pr. spær
0.75, -- 45 minutter pr. spær
580,
1, -- Custom
'["boremaskine", "vaterpas", "vinkelmåler", "sav"]',
NOW()
);
-- View til at få overblik over custom tasks
CREATE OR REPLACE VIEW custom_installation_tasks AS
SELECT
t.id,
t.task_name,
t.task_description,
t.time_unit,
t.time_per_unit,
CASE
WHEN t.time_unit = 'per_meter' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. løbende meter')
WHEN t.time_unit = 'per_sqm' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. m²')
WHEN t.time_unit = 'per_piece' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. styk')
WHEN t.time_unit = 'per_hour' THEN CONCAT(t.time_per_unit, ' timer pr. time')
ELSE CONCAT(t.estimated_hours, ' timer totalt')
END as time_display,
t.hourly_rate,
t.material_varenr,
m.material_name,
p.name as package_name,
t.required_tools,
t.created_at,
t.updated_at
FROM smart_package_tasks t
LEFT JOIN material_packages p ON t.package_id = p.id
LEFT JOIN materials m ON t.material_varenr = m.varenr
WHERE t.is_custom = 1
ORDER BY t.created_at DESC;
-- Kommenter på tabel og kolonner
ALTER TABLE smart_package_tasks
COMMENT = 'Installation opgaver for smart pakker - både auto-genererede fra montage vejledninger og manuelt oprettede custom tasks';