feature/interfaz-binarios (#19)
Some checks failed
Aduanasoft/PANEL_BASES_ANEXO24/pipeline/head There was a failure building this commit

Reviewed-on: #19
Co-authored-by: hreyes <hreyes@aduanasoft.com.mx>
Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>
This commit is contained in:
2026-07-30 13:52:45 +00:00
committed by acazares
parent a9a1dcb9ae
commit 14b611c581
41 changed files with 10355 additions and 29 deletions

View File

@@ -164,5 +164,76 @@ CREATE TABLE IF NOT EXISTS a24c.cloudrestore_status (
reported_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- Identidad del build instalado, reportada por el agente en instance-config. Es la fuente
-- autoritativa para decidir qué artefacto de CRAS le toca a cada servidor; un agente anterior
-- a 1.1.0 no las manda y quedan NULL (el panel cae a restore_targets.os).
ALTER TABLE a24c.cloudrestore_status ADD COLUMN IF NOT EXISTS processed_folder VARCHAR(500);
ALTER TABLE a24c.cloudrestore_status ADD COLUMN IF NOT EXISTS platform VARCHAR(20);
ALTER TABLE a24c.cloudrestore_status ADD COLUMN IF NOT EXISTS arch VARCHAR(20);
-- Carpeta del ejecutable (APP_DIR). Distinta de input_folder: ahí vive config/.env.
ALTER TABLE a24c.cloudrestore_status ADD COLUMN IF NOT EXISTS install_path VARCHAR(500);
COMMENT ON TABLE a24c.cloudrestore_status IS
'Carpeta de entrada vigente reportada por CloudRestoreAS. Solo lectura en el panel.';
-- ============================================================================
-- Distribución de versiones de CloudRestoreAS (migración a24c e2f3a4b5c6d7).
--
-- Los binarios NO viven aquí: se publican en el registro de paquetes genéricos de Gitea
-- (ADUANASOFT/generic/cloudrestoreas/<version>) y el panel los cachea en disco. Un artefacto
-- pesa ~270 MB, así que guardarlo como BLOB en la base no es viable.
-- ============================================================================
-- Catálogo de versiones publicadas (metadatos + el sha256 que calcula Gitea).
CREATE TABLE IF NOT EXISTS a24c.cras_releases (
id SERIAL PRIMARY KEY,
version VARCHAR(50) NOT NULL,
platform VARCHAR(20) NOT NULL,
arch VARCHAR(20) NOT NULL DEFAULT 'x86_64',
file_name VARCHAR(255) NOT NULL,
file_size BIGINT,
sha256 VARCHAR(64),
gitea_package VARCHAR(120) NOT NULL DEFAULT 'cloudrestoreas',
changelog TEXT,
is_active BOOLEAN NOT NULL DEFAULT FALSE,
published_at TIMESTAMPTZ,
discovered_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT cras_releases_platform_check CHECK (platform IN ('windows', 'linux')),
CONSTRAINT cras_releases_version_platform_arch_key UNIQUE (version, platform, arch)
);
-- Una sola versión activa POR plataforma+arquitectura, garantizado en la base: así Windows y
-- Linux pueden tener cada una la suya, a diferencia de un is_active singleton global.
CREATE UNIQUE INDEX IF NOT EXISTS idx_a24c_cras_releases_active
ON a24c.cras_releases (platform, arch) WHERE is_active;
CREATE INDEX IF NOT EXISTS idx_a24c_cras_releases_version
ON a24c.cras_releases (version);
-- Bitácora de instalaciones remotas, con progreso paso a paso para que la UI lo siga.
CREATE TABLE IF NOT EXISTS a24c.cras_install_runs (
id SERIAL PRIMARY KEY,
restore_target_id INTEGER REFERENCES a24c.restore_targets (id) ON DELETE SET NULL,
release_id INTEGER REFERENCES a24c.cras_releases (id) ON DELETE SET NULL,
version VARCHAR(50),
platform VARCHAR(20),
mode VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL,
install_path VARCHAR(500),
steps JSONB NOT NULL DEFAULT '[]'::jsonb,
error_message TEXT,
started_by VARCHAR(128),
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
finished_at TIMESTAMPTZ,
CONSTRAINT cras_install_runs_mode_check CHECK (mode IN ('install', 'update')),
CONSTRAINT cras_install_runs_status_check CHECK (status IN ('running', 'completed', 'failed'))
);
CREATE INDEX IF NOT EXISTS idx_a24c_cras_install_runs_target
ON a24c.cras_install_runs (restore_target_id, started_at DESC);
CREATE INDEX IF NOT EXISTS idx_a24c_cras_install_runs_running
ON a24c.cras_install_runs (restore_target_id) WHERE status = 'running';
COMMENT ON TABLE a24c.cras_releases IS
'Catálogo de versiones de CloudRestoreAS publicadas en Gitea. Solo metadatos; los binarios viven en Gitea.';
COMMENT ON TABLE a24c.cras_install_runs IS
'Bitácora de instalaciones remotas de CloudRestoreAS, con progreso paso a paso en steps.';