- 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.
114 lines
3.6 KiB
SQL
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';
|