-- Ejecutar una sola vez con bin/migrate.php, después de importar la BD original.
ALTER TABLE vehiculos ADD COLUMN tipo ENUM('moto','auto','utilitario') NOT NULL DEFAULT 'utilitario';
ALTER TABLE envios
 ADD COLUMN ubicacion_confirmada BOOLEAN NOT NULL DEFAULT FALSE,
 ADD COLUMN comercio VARCHAR(150) NULL,
 ADD COLUMN direccion_recogida TEXT NULL,
 ADD COLUMN lat_recogida DECIMAL(10,8) NULL,
 ADD COLUMN lng_recogida DECIMAL(11,8) NULL,
 ADD COLUMN notas TEXT NULL,
 ADD COLUMN prioridad ENUM('normal','urgente') NOT NULL DEFAULT 'normal',
 ADD COLUMN tracking_token CHAR(64) NULL,
 ADD COLUMN tracking_expires_at DATETIME NULL,
 ADD COLUMN actualizado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
 ADD UNIQUE KEY uq_tracking_token(tracking_token),
 ADD KEY idx_estado_creacion(estado,fecha_creacion);
ALTER TABLE rutas
 ADD COLUMN chofer_reservado INT GENERATED ALWAYS AS (CASE WHEN estado IN ('planificada','en_curso') THEN chofer_id ELSE NULL END) STORED,
 ADD COLUMN vehiculo_reservado INT GENERATED ALWAYS AS (CASE WHEN estado IN ('planificada','en_curso') THEN vehiculo_id ELSE NULL END) STORED,
 ADD UNIQUE KEY uq_chofer_reservado(chofer_reservado),
 ADD UNIQUE KEY uq_vehiculo_reservado(vehiculo_reservado);
CREATE TABLE posiciones_gps (
 ruta_id INT PRIMARY KEY,
 chofer_id INT NOT NULL,
 lat DECIMAL(10,8) NOT NULL,
 lng DECIMAL(11,8) NOT NULL,
 precision_m DECIMAL(9,2) NOT NULL,
 velocidad_ms DECIMAL(7,2) NULL,
 rumbo DECIMAL(6,2) NULL,
 capturado_en DATETIME(3) NOT NULL,
 recibido_en DATETIME(3) NOT NULL,
 compartiendo BOOLEAN NOT NULL DEFAULT TRUE,
 CONSTRAINT fk_gps_ruta FOREIGN KEY(ruta_id) REFERENCES rutas(id) ON DELETE CASCADE,
 CONSTRAINT fk_gps_chofer FOREIGN KEY(chofer_id) REFERENCES choferes(id)
) ENGINE=InnoDB;
CREATE TABLE eventos_envio (
 id BIGINT PRIMARY KEY AUTO_INCREMENT,
 envio_id INT NOT NULL,
 usuario_id INT NULL,
 estado VARCHAR(30) NOT NULL,
 nota VARCHAR(1000) NULL,
 creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
 INDEX idx_eventos_envio(envio_id,id),
 FOREIGN KEY(envio_id) REFERENCES envios(id) ON DELETE CASCADE,
 FOREIGN KEY(usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE intentos_login (
 clave CHAR(64) PRIMARY KEY,
 intentos INT NOT NULL DEFAULT 0,
 ventana DATETIME NOT NULL
) ENGINE=InnoDB;
