e25c2c3b35
Ingesta POST /api/inventory (JSON/XML, token de instalacion), upsert por deviceid, historial de cambios, pestañas Resumen/Equipos/Software/Agentes, detalle con buscador por pestaña y casilla para ocultar actualizaciones/drivers/componentes del software. Migraciones 023 y 024. Diseño en docs/ARQUITECTURA-INVENTARIO.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
156 lines
6.2 KiB
SQL
156 lines
6.2 KiB
SQL
-- Modulo Equipos (inventario alimentado por el agente GLPI). Idempotente: CREATE TABLE IF NOT EXISTS.
|
|
-- Un equipo = una fila en `devices`, upsert por `deviceid` (identificador estable que genera el
|
|
-- agente; el hostname cambia). Los componentes se reemplazan completos en cada reporte.
|
|
SET NAMES utf8mb4;
|
|
|
|
-- Tokens que autentican al agente en la ingesta. Se guarda el HASH (sha256), nunca el token.
|
|
CREATE TABLE IF NOT EXISTS inventory_tokens (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
label VARCHAR(120) NOT NULL,
|
|
token_hash CHAR(64) NOT NULL UNIQUE,
|
|
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
|
last_used_at DATETIME NULL,
|
|
created_by INT NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_inventory_tokens_user FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS devices (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
deviceid VARCHAR(255) NOT NULL UNIQUE,
|
|
hostname VARCHAR(190) NULL,
|
|
kind ENUM('desktop','laptop','server','virtual','printer','network','other') NOT NULL DEFAULT 'other',
|
|
manufacturer VARCHAR(160) NULL,
|
|
model VARCHAR(190) NULL,
|
|
serial VARCHAR(160) NULL,
|
|
os_name VARCHAR(190) NULL,
|
|
os_version VARCHAR(120) NULL,
|
|
os_arch VARCHAR(40) NULL,
|
|
domain VARCHAR(190) NULL,
|
|
last_user VARCHAR(190) NULL,
|
|
ip_main VARCHAR(64) NULL,
|
|
mac_main VARCHAR(40) NULL,
|
|
cpu_summary VARCHAR(255) NULL,
|
|
ram_mb INT NULL,
|
|
disk_total_mb BIGINT NULL,
|
|
disk_free_mb BIGINT NULL,
|
|
max_disk_used_pct TINYINT UNSIGNED NULL,
|
|
agent_version VARCHAR(80) NULL,
|
|
tag VARCHAR(120) NULL,
|
|
itemtype VARCHAR(60) NULL,
|
|
first_seen DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_seen DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
-- Baja logica (conserva historial); un nuevo reporte NO reactiva un equipo dado de baja.
|
|
status ENUM('active','retired') NOT NULL DEFAULT 'active',
|
|
assigned_user_id INT NULL,
|
|
department_id INT NULL,
|
|
notes TEXT NULL,
|
|
raw_file VARCHAR(255) NULL,
|
|
extra_json LONGTEXT NULL,
|
|
KEY idx_devices_hostname (hostname),
|
|
KEY idx_devices_last_seen (last_seen),
|
|
CONSTRAINT fk_devices_user FOREIGN KEY (assigned_user_id) REFERENCES users(id) ON DELETE SET NULL,
|
|
CONSTRAINT fk_devices_department FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_cpus (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
name VARCHAR(255) NULL,
|
|
manufacturer VARCHAR(120) NULL,
|
|
cores INT NULL,
|
|
threads INT NULL,
|
|
speed_mhz INT NULL,
|
|
KEY idx_device_cpus_device (device_id),
|
|
CONSTRAINT fk_device_cpus_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_memories (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
slot VARCHAR(80) NULL,
|
|
capacity_mb INT NULL,
|
|
type VARCHAR(60) NULL,
|
|
speed VARCHAR(40) NULL,
|
|
manufacturer VARCHAR(120) NULL,
|
|
serial VARCHAR(120) NULL,
|
|
KEY idx_device_memories_device (device_id),
|
|
CONSTRAINT fk_device_memories_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_disks (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
name VARCHAR(190) NULL,
|
|
model VARCHAR(190) NULL,
|
|
manufacturer VARCHAR(120) NULL,
|
|
type VARCHAR(60) NULL,
|
|
interface VARCHAR(60) NULL,
|
|
size_mb BIGINT NULL,
|
|
serial VARCHAR(160) NULL,
|
|
KEY idx_device_disks_device (device_id),
|
|
CONSTRAINT fk_device_disks_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_volumes (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
mount VARCHAR(190) NULL,
|
|
label VARCHAR(190) NULL,
|
|
filesystem VARCHAR(60) NULL,
|
|
type VARCHAR(60) NULL,
|
|
total_mb BIGINT NULL,
|
|
free_mb BIGINT NULL,
|
|
KEY idx_device_volumes_device (device_id),
|
|
CONSTRAINT fk_device_volumes_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_networks (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
description VARCHAR(255) NULL,
|
|
mac VARCHAR(40) NULL,
|
|
ip VARCHAR(64) NULL,
|
|
mask VARCHAR(64) NULL,
|
|
gateway VARCHAR(64) NULL,
|
|
type VARCHAR(60) NULL,
|
|
status VARCHAR(40) NULL,
|
|
KEY idx_device_networks_device (device_id),
|
|
CONSTRAINT fk_device_networks_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_monitors (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
manufacturer VARCHAR(120) NULL,
|
|
model VARCHAR(190) NULL,
|
|
serial VARCHAR(120) NULL,
|
|
KEY idx_device_monitors_device (device_id),
|
|
CONSTRAINT fk_device_monitors_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS device_software (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
version VARCHAR(120) NULL,
|
|
publisher VARCHAR(190) NULL,
|
|
install_date VARCHAR(40) NULL,
|
|
KEY idx_device_software_device (device_id),
|
|
KEY idx_device_software_name (name(120)),
|
|
CONSTRAINT fk_device_software_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Diff entre reportes consecutivos (RAM que bajo, disco nuevo, software instalado/desinstalado).
|
|
CREATE TABLE IF NOT EXISTS device_changes (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
device_id INT NOT NULL,
|
|
change_type VARCHAR(40) NOT NULL,
|
|
field VARCHAR(120) NULL,
|
|
old_value TEXT NULL,
|
|
new_value TEXT NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
KEY idx_device_changes_device (device_id, created_at),
|
|
CONSTRAINT fk_device_changes_device FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|