Files
PANEL_BASES_ANEXO24/README.md
hreyes 14b611c581
Some checks failed
Aduanasoft/PANEL_BASES_ANEXO24/pipeline/head There was a failure building this commit
feature/interfaz-binarios (#19)
Reviewed-on: #19
Co-authored-by: hreyes <hreyes@aduanasoft.com.mx>
Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>
2026-07-30 13:52:45 +00:00

119 lines
5.3 KiB
Markdown

# Panel de Gestión de Bases de Datos (SvelteKit Migration)
Este proyecto es una migración moderna del panel de control legacy `TransmitirAS`, reconstruido utilizando **SvelteKit 2.0** y **Svelte 5 (Runes)**.
## Características
- **Tech Stack**: SvelteKit, TypeScript, Node.js (MSSQL), Bootstrap 5.
- **Server-Side Rendering (SSR)**: Todos los datos se cargan en el servidor para una carga inicial rápida y SEO/Performance óptimo.
- **Base de Datos**: Conexión a múltiples instancias SQL Server (Local, Remota, Azure).
- **Diseño**: Interfaz "Glassmorphism" portada fielmente del original.
## Requisitos Previos
- **Node.js**: v18 o superior.
- **SQL Server**: Acceso a las instancias de base de datos definidas en `.env`.
```bash
docker build \
-t dev.aduanasoft.com:8443/databases_a24c/frontend:latest \
-f ./Dockerfile \
./
```
Subirlas a harbor
```
docker login dev.aduanasoft.com:8443
docker push dev.aduanasoft.com:8443/databases_a24c/frontend:latest
```
## Configuración
1. **Instalar dependencias**:
```bash
npm install
```
2. **Variables de Entorno**:
El archivo `.env` ya ha sido configurado con las credenciales migradas. Asegúrese de que la máquina donde se ejecuta esto tenga acceso de red a las IPs:
- 192.168.1.200 (Primaria)
- 104.192.7.202 (Secundaria)
- aduanasoft.database.windows.net (Azure)
3. **Ejecutar en Desarrollo**:
```bash
npm run dev
```
Abrir [http://localhost:5173](http://localhost:5173) en el navegador.
4. **Construir para Producción**:
```bash
npm run build
npm run preview
```
## Estructura del Proyecto
- `src/lib/server/db.ts`: Lógica de conexión a base de datos (Pools).
- `src/routes/+page.server.ts`: Controlador principal. Realiza todas las consultas SQL y lectura de archivos antes de renderizar.
- `src/routes/+page.svelte`: Vista principal. Gestiona la navegación por pestañas y tablas.
- `src/lib/components/`: Componentes reutilizables (`Navbar`, `Sidebar`).
- `src/app.css`: Estilos globales y tema Glass.
## Integración CloudRestoreAS
- Endpoints servicio-a-servicio bajo `/api/restore/` (token `CLOUDRESTORE_API_TOKEN` en `.env`).
- **Servidores de Restauración** (`/servidores-restauracion`): admin de Alfa/Omega/Gamma y carpeta de entrada reportada por CloudRestoreAS (solo lectura).
- Contrato y prueba local: ver `INTEGRACION_PANEL.md` en el repo CloudRecoveryAS (mismo token en `CLOUDRESTORE_API_TOKEN` y en la config PANEL de CloudRestoreAS).
### Versiones CRAS (`/versiones-cras`) — instalación y actualización remota
Distribución de los binarios del agente. Los artefactos se publican en el registro de
paquetes **genéricos de Gitea** desde el build local del repo CloudRecoveryAS
(`build-all.sh --publish`); el panel los descubre leyendo esa API y los despliega por SSH.
```
build local (WSL) → Gitea: ADUANASOFT/generic/cloudrestoreas/<version>
↓ (el panel lee la API y guarda metadatos + sha256)
a24c.cras_releases → caché en CRAS_RELEASES_DIR
↓ (SFTP + exec)
servidor de restauración
```
Flujo de operación:
1. **Sincronizar con Gitea** — registra las versiones publicadas en `a24c.cras_releases`.
Nunca activa nada por su cuenta: publicar no debe equivaler a desplegar.
2. **Activar** — marca la versión que se instalará, **una por plataforma+arquitectura**
(índice único parcial en la BD, para que Windows y Linux tengan cada una la suya).
3. **Precargar** *(opcional)* — descarga y verifica el artefacto antes de instalar, para
separar el tiempo de descarga del de instalación.
4. **Instalar / Actualizar** por servidor — sube el paquete por SFTP, **verifica el sha256 en
el destino**, corre el instalador que viene dentro del paquete y siembra `config/.env` con
la URL, el token y la instancia: el servidor queda operativo sin configuración manual.
Detalles que importan:
- Los binarios **no** se guardan en Postgres (pesan ~270 MB); la BD solo tiene metadatos.
- El servidor destino **no descarga nada de internet**: el binario es autocontenido.
- El token del panel viaja al destino en un archivo `0600` por SFTP, **nunca como argumento
de un comando** (sería visible en `ps` y en el historial del servidor).
- Se exige **root o `sudo -n`** en Linux (y cuenta administradora en Windows), validado
*antes* de transferir el artefacto. No se le pasa la contraseña a `sudo`.
- El progreso se persiste paso a paso en `a24c.cras_install_runs.steps`; la UI lo consulta
por polling en `/versiones-cras/install-runs`.
- No hay subida de archivos por el navegador a propósito: la fuente de verdad es Gitea.
Variables nuevas en `.env`: `GITEA_BASE_URL`, `GITEA_OWNER`, `GITEA_TOKEN`
(scope `read:package`), `CRAS_PACKAGE_NAME`, `CRAS_RELEASES_DIR`,
`CRAS_CACHE_KEEP_VERSIONS`, `PANEL_PUBLIC_URL`. Ver `.env.example`.
Esquema: migración `e2f3a4b5c6d7` en el repo a24c (autoritativa), replicada en
`database/schema.sql` y en el fallback `ensureCrasSchema()` de `cras-releases.ts`.
## Notas de Migración
- **DataTables**: Se inicializan en el cliente dentro de `onMount` para mantener la compatibilidad con las tablas interactivas originales.
- **Sistema de Archivos**: La lectura de backups busca en `BACKUP_PATH` en el servidor donde corre Node.js (independiente de la carpeta que vigila CloudRestoreAS).