-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-26_05 · Supervisión: asignar tareas a usuarios y tareas incluidas
-- ═══════════════════════════════════════════════════════════════════════
-- Pedido del usuario:
--   · Hay tareas "para mí" (o para otro usuario del sistema), que no son de
--     la mano de obra: proyecto_tarea.id_usuario_asignado.
--   · A un pacto ya creado se le siguen asignando las tareas que surgen (p. ej.
--     un pacto de "ayuda en construcción"): una tarea puede ir en el pacto con
--     valor 0 = incluida en lo ya pactado, sin pago aparte.
-- Una tarea es de un usuario O de un pacto (lo controla la aplicación).
--
-- Respaldo: backups/tinsa_db_pre-asignar-tareas_2026-10-26.sql
-- Reversa:  database/rollback/2026-10-26_05_asignar_tareas.down.sql
-- ═══════════════════════════════════════════════════════════════════════

USE tinsa_db;

ALTER TABLE proyecto_tarea
  ADD COLUMN id_usuario_asignado INT UNSIGNED DEFAULT NULL COMMENT 'usuario del sistema que hace la tarea (si no es de un pacto)' AFTER id_oferta_item,
  ADD KEY fk_tarea_usuario_asignado (id_usuario_asignado),
  ADD CONSTRAINT fk_tarea_usuario_asignado FOREIGN KEY (id_usuario_asignado) REFERENCES usuarios (id_usuario) ON DELETE SET NULL ON UPDATE CASCADE,
  DROP CONSTRAINT chk_tarea_monto,
  ADD CONSTRAINT chk_tarea_monto CHECK (monto_pacto IS NULL OR monto_pacto >= 0);
