-- Bovintel Cárnico - Tablas adicionales (IOT + Alertas + Usuarios)
-- Ejecutar sobre la base danycontaller_bovintel_establecimientos

CREATE TABLE IF NOT EXISTS app_usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  usuario VARCHAR(50) NOT NULL UNIQUE,
  nombre VARCHAR(120) NOT NULL,
  rol ENUM('admin','tecnico','vista') NOT NULL DEFAULT 'admin',
  password_hash VARCHAR(255) NOT NULL,
  activo TINYINT(1) NOT NULL DEFAULT 1,
  creado_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS iot_collares (
  teid VARCHAR(32) PRIMARY KEY,
  alias VARCHAR(80) DEFAULT NULL,
  activo TINYINT(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS iot_animal_collar (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_animal INT NOT NULL,
  teid VARCHAR(32) NOT NULL,
  fecha_desde DATE NOT NULL,
  fecha_hasta DATE DEFAULT NULL,
  INDEX idx_iot_animal (id_animal, fecha_hasta),
  INDEX idx_iot_teid (teid, fecha_hasta)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Lecturas del collar (una fila por lectura/ventana)
CREATE TABLE IF NOT EXISTS iot_lecturas (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  teid VARCHAR(32) NOT NULL,
  ts DATETIME NOT NULL,
  lat DOUBLE DEFAULT NULL,
  lon DOUBLE DEFAULT NULL,
  actividad DOUBLE DEFAULT NULL,
  rumia_min INT DEFAULT NULL,
  postura VARCHAR(20) DEFAULT NULL,     -- ECHADA / PARADA / CAMINANDO
  lying_min INT DEFAULT NULL,          -- si el dispositivo lo entrega por ventana
  bateria DOUBLE DEFAULT NULL,
  raw_json LONGTEXT DEFAULT NULL,
  INDEX idx_teid_ts (teid, ts)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS alertas (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  id_animal INT NOT NULL,
  teid VARCHAR(32) DEFAULT NULL,
  tipo VARCHAR(60) NOT NULL,           -- PRENADA_MUCHO_ECHADA, etc.
  severidad ENUM('CRITICA','MODERADA','LEVE') NOT NULL DEFAULT 'LEVE',
  estado ENUM('ABIERTA','CERRADA') NOT NULL DEFAULT 'ABIERTA',
  inicio_ts DATETIME NOT NULL,
  ultimo_update_ts DATETIME NOT NULL,
  detalle_json LONGTEXT DEFAULT NULL,
  visto TINYINT(1) NOT NULL DEFAULT 0,
  INDEX idx_alertas_estado (estado, severidad, ultimo_update_ts),
  INDEX idx_alertas_animal (id_animal, estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS animal_estado_resumen (
  id_animal INT PRIMARY KEY,
  teid VARCHAR(32) DEFAULT NULL,
  fecha_actualizacion DATETIME NOT NULL,
  estado_label VARCHAR(30) NOT NULL DEFAULT 'NORMAL',  -- NORMAL/OBSERVACION/ALERTA
  motivo_principal VARCHAR(60) DEFAULT NULL,
  score_estado INT NOT NULL DEFAULT 0,
  detalle_json LONGTEXT DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
