-- ===========================================
-- MECANICAS DIESEL - Datos Semilla
-- ===========================================
-- Datos iniciales para desarrollo y testing

-- -------------------------------------------
-- Tipos de prueba predefinidos (globales)
-- -------------------------------------------
INSERT INTO service_management.test_types (id, tenant_id, name, description, component_type, is_system, is_active)
VALUES
    (gen_random_uuid(), NULL, 'Diagnóstico Scanner', 'Lectura de códigos DTC con scanner OBD-II/J1939', 'engine', true, true),
    (gen_random_uuid(), NULL, 'Prueba de Inyector', 'Prueba de banco para inyectores diesel', 'injector', true, true),
    (gen_random_uuid(), NULL, 'Prueba de Bomba de Alta Presión', 'Prueba de banco para bomba de inyección', 'pump', true, true),
    (gen_random_uuid(), NULL, 'Prueba de Compresión', 'Medición de compresión por cilindro', 'engine', true, true),
    (gen_random_uuid(), NULL, 'Prueba de Turbo VGT', 'Prueba de actuador y geometría variable', 'turbo', true, true),
    (gen_random_uuid(), NULL, 'Prueba de Presión de Riel', 'Medición de presión del sistema common rail', 'pump', true, true);

-- Parámetros para prueba de inyector
WITH test AS (
    SELECT id FROM service_management.test_types WHERE name = 'Prueba de Inyector' LIMIT 1
)
INSERT INTO service_management.test_parameters (test_type_id, name, unit, data_type, sort_order)
SELECT test.id, params.name, params.unit, params.data_type, params.sort_order
FROM test, (VALUES
    ('Presión de apertura', 'PSI', 'numeric', 1),
    ('Caudal de inyección', 'ml/100', 'numeric', 2),
    ('Retorno', 'ml/min', 'numeric', 3),
    ('Patrón de spray', NULL, 'text', 4),
    ('Tiempo de respuesta', 'ms', 'numeric', 5)
) AS params(name, unit, data_type, sort_order);

-- Parámetros para prueba de bomba
WITH test AS (
    SELECT id FROM service_management.test_types WHERE name = 'Prueba de Bomba de Alta Presión' LIMIT 1
)
INSERT INTO service_management.test_parameters (test_type_id, name, unit, data_type, sort_order)
SELECT test.id, params.name, params.unit, params.data_type, params.sort_order
FROM test, (VALUES
    ('Presión máxima', 'PSI', 'numeric', 1),
    ('Presión a RPM idle', 'PSI', 'numeric', 2),
    ('Caudal volumétrico', 'lt/min', 'numeric', 3),
    ('Tiempo de cebado', 'seg', 'numeric', 4)
) AS params(name, unit, data_type, sort_order);

-- Parámetros para compresión
WITH test AS (
    SELECT id FROM service_management.test_types WHERE name = 'Prueba de Compresión' LIMIT 1
)
INSERT INTO service_management.test_parameters (test_type_id, name, unit, data_type, sort_order)
SELECT test.id, params.name, params.unit, params.data_type, params.sort_order
FROM test, (VALUES
    ('Compresión Cilindro 1', 'PSI', 'numeric', 1),
    ('Compresión Cilindro 2', 'PSI', 'numeric', 2),
    ('Compresión Cilindro 3', 'PSI', 'numeric', 3),
    ('Compresión Cilindro 4', 'PSI', 'numeric', 4),
    ('Compresión Cilindro 5', 'PSI', 'numeric', 5),
    ('Compresión Cilindro 6', 'PSI', 'numeric', 6)
) AS params(name, unit, data_type, sort_order);

-- Valores de referencia para Cummins ISX15
WITH
    engine AS (SELECT id FROM vehicle_management.engine_catalog WHERE make = 'Cummins' AND model = 'ISX15' LIMIT 1),
    param_presion AS (SELECT id FROM service_management.test_parameters WHERE name = 'Presión de apertura' LIMIT 1),
    param_retorno AS (SELECT id FROM service_management.test_parameters WHERE name = 'Retorno' LIMIT 1),
    param_caudal AS (SELECT id FROM service_management.test_parameters WHERE name = 'Caudal de inyección' LIMIT 1)
INSERT INTO service_management.parameter_references (parameter_id, engine_model_id, min_value, max_value, nominal_value, source)
SELECT * FROM (
    SELECT param_presion.id, engine.id, 2800, 3200, 3000, 'Manual Cummins ISX15' FROM param_presion, engine
    UNION ALL
    SELECT param_retorno.id, engine.id, 0, 20, 10, 'Manual Cummins ISX15' FROM param_retorno, engine
    UNION ALL
    SELECT param_caudal.id, engine.id, 45, 55, 50, 'Manual Cummins ISX15' FROM param_caudal, engine
) refs
WHERE EXISTS (SELECT 1 FROM param_presion) AND EXISTS (SELECT 1 FROM engine);

-- -------------------------------------------
-- Notas de uso
-- -------------------------------------------
COMMENT ON TABLE service_management.test_types IS 'Datos semilla: 6 tipos de prueba predefinidos';
COMMENT ON TABLE service_management.test_parameters IS 'Datos semilla: Parámetros para pruebas de inyector, bomba y compresión';
COMMENT ON TABLE service_management.parameter_references IS 'Datos semilla: Referencias para Cummins ISX15';
