docs: agregar hoja de ruta hacia Karen's Replicator centralizado
This commit is contained in:
@@ -117,6 +117,7 @@ python windows-agent/build_exe.py
|
||||
|
||||
---
|
||||
|
||||
## 📝 Cambios Recientes
|
||||
## 📝 Documentos y Cambios Recientes
|
||||
|
||||
Para ver la lista completa de mejoras implementadas en la última sesión de desarrollo (sincronización bidireccional, planificación tipo Proxmox Backup Server y re-vinculación de agentes), consulta el [Changelog de la Sesión](CHANGELOG_SESSION.md).
|
||||
- **Changelog**: Consulta el [Changelog de la Sesión](CHANGELOG_SESSION.md) para ver la lista completa de mejoras implementadas en la última sesión de desarrollo (sincronización bidireccional, planificación tipo Proxmox Backup Server y re-vinculación de agentes).
|
||||
- **Visión Técnica / Roadmap**: Consulta la [Hoja de Ruta hacia Karen's Replicator](docs/roadmap_karens_replicator.md) para revisar el mapa de características y las fases de desarrollo propuestas.
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Hoja de Ruta: Hacia un "Karen's Replicator" Centralizado y Web
|
||||
|
||||
Este documento establece la visión técnica y el plan de desarrollo para evolucionar **OnEver Drive** desde su arquitectura actual hasta convertirse en un clon moderno, centralizado y gestionado vía web del clásico **Karen's Replicator**, conservando su robustez y simplicidad de copia pero con las ventajas del almacenamiento en la nube y el monitoreo multi-inquilino.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Tabla de Equivalencia de Características
|
||||
|
||||
| Característica de Karen's Replicator | Estado Actual en OnEver Drive | Meta de Desarrollo / Brecha a Cubrir |
|
||||
| :--- | :--- | :--- |
|
||||
| **Copia de Archivos y Carpetas** | Soportado (Monitoreo de directorios) | Soportado. |
|
||||
| **Filtros por Patrón de Archivo** | Soportado (Solo inclusiones, ej: `*.bak`) | Añadir **Patrones de Exclusión** (ej: ignorar `*.tmp`, `thumbs.db`, carpetas `node_modules`). |
|
||||
| **Copia de Archivos Especiales** | Copia todo lo legible | Opción de omitir archivos de Sistema, Ocultos o de Solo Lectura. |
|
||||
| **Modo Réplica (Mirroring)** | Solo incremental (No elimina en destino) | Agregar la opción **"Eliminar archivos en destino si ya no existen en origen"** (Sincronización exacta). |
|
||||
| **Detección de Cambios Inteligente** | Basada en SHA-256 (Chunks) | Soportado y superior a Karen's (evita transferencias duplicadas de bloques de 4MB). |
|
||||
| **Planificación Detallada** | Simplificada (`hourly`, `daily`, etc.) | Planificaciones calendarizadas complejas (ej. "Lunes a Viernes a las 22:00", "Sábados a las 14:00"). |
|
||||
| **Historial y Reportes** | logs generales de eventos | **Reporte de Ejecución por Job** (Web): Lista detallada de archivos copiados, omitidos por no tener cambios y errores de lectura. |
|
||||
| **Destino de Red / NAS / Local** | Solo al servidor centralizado | Configurar en el Servidor almacenamiento en NAS montado, y en el cliente opción de duplicar la copia a un disco local USB o ruta UNC de red (Copia local adicional). |
|
||||
|
||||
---
|
||||
|
||||
## 📅 Plan de Desarrollo por Fases
|
||||
|
||||
### Fase 1: Filtros de Exclusión y Atributos de Archivo (Corto Plazo)
|
||||
* **Objetivo**: Aumentar la granularidad sobre qué archivos se respaldan.
|
||||
* **Acciones**:
|
||||
1. Modificar el modelo de `BackupJob` en la base de datos para añadir `exclude_patterns` (cadena de exclusiones separadas por comas).
|
||||
2. Actualizar el motor de escaneo del cliente `DirectoryScanner` en `agent/scanner.py` para ignorar los archivos que coincidan con las exclusiones.
|
||||
3. Agregar checkboxes en el cliente y en la Web para:
|
||||
- Omitir archivos ocultos (`Hidden`).
|
||||
- Omitir archivos de sistema (`System`).
|
||||
- Conservar/Ignorar permisos de solo lectura.
|
||||
|
||||
### Fase 2: Modo Réplica Exacta (Mirror / Purge)
|
||||
* **Objetivo**: Mantener el destino idéntico al origen (eliminación de huérfanos).
|
||||
* **Acciones**:
|
||||
1. Añadir el flag `sync_deletions` (Booleano) a los trabajos de backup.
|
||||
2. Implementar en el cliente la detección de archivos eliminados localmente.
|
||||
3. Enviar una llamada de purga al backend (`POST /api/backups/purge-orphans`) para que marque como inactivos o elimine físicamente del almacenamiento del servidor los archivos que ya no existen en el cliente físico.
|
||||
|
||||
### Fase 3: Planificación Calendarizada Avanzada (Calendar Events)
|
||||
* **Objetivo**: Permitir configurar ventanas de mantenimiento específicas como lo hace Proxmox/Systemd/Karen's.
|
||||
* **Acciones**:
|
||||
1. Expandir el soporte de strings de planificación para comprender formato de eventos calendario (ej. `mon..fri 22:00`, `sat 18:00`).
|
||||
2. Implementar un parseador de eventos en el Agente de Windows que evalúe si la hora actual está dentro de la ventana de ejecución programada.
|
||||
3. Mejorar la interfaz web con un constructor visual de planificaciones semanales/diarias.
|
||||
|
||||
### Fase 4: Reportes de Ejecución y Auditoría Visual (Dashboard)
|
||||
* **Objetivo**: Ver en un clic qué se copió, qué falló y qué se omitió en cada corrida de backup.
|
||||
* **Acciones**:
|
||||
1. Crear la tabla `job_runs` en la base de datos para registrar cada sesión de ejecución.
|
||||
2. Almacenar métricas detalladas por ejecución:
|
||||
- Archivos totales escaneados.
|
||||
- Archivos copiados (nuevos/modificados).
|
||||
- Archivos omitidos (sin cambios).
|
||||
- Errores de lectura (archivos bloqueados sin acceso).
|
||||
3. Crear una vista en la web de "Historial de Ejecuciones" interactiva para cada cliente y trabajo.
|
||||
|
||||
### Fase 5: Copia Local Duplicada (Paridad Completa)
|
||||
* **Objetivo**: Permitir que el agente realice copias locales (ej. a un disco externo USB o carpeta compartida de red de la oficina) de forma simultánea a la subida al servidor central.
|
||||
* **Acciones**:
|
||||
1. Añadir el campo opcional `local_destination_path` en la configuración de los trabajos.
|
||||
2. Al ejecutar un backup, el Agente realiza un mirroring local (estilo Karen's clásico directo de disco a disco) además de la subida segmentada de chunks al servidor cloud.
|
||||
Reference in New Issue
Block a user