4.4 KiB
AutoBackups - Decisiones Técnicas Finalizadas
Decisiones Técnicas Confirmadas
1. Everything API - Integración ✅
Decisión: Everything SDK está instalado bajo Everything-SDK\dll\Everything64.dll
Implementación: Usar PyEverything (Wrapper) sin fallback
Ruta DLL: Everything-SDK\dll\Everything64.dll
2. Estructura de Backup - Clarificación de Rutas ✅
Decisión: Estructura específica con formato de fecha personalizado Ejemplo:
- Directorio base:
C:\Projects\Siemens
- Proyecto:
C:\Projects\Siemens\LineA\Project1\project.s7p
- Backup:
backup_destination/LineA/Project1/2025-09-01/14-30-15_projects.zip
Formato: YYYY-MM-DD para fechas, HH-MM-SS formato 24 horas
3. Configuración de Schedules - Granularidad ✅
Decisión: Ambos niveles (global con override por proyecto) Implementación:
- Configuración global por defecto
- Override individual por proyecto
- Interfaz web para modificar ambos niveles
4. Hash de Archivos - Algoritmo y Almacenamiento ✅
Decisión: Hash de timestamps + tamaño (NO contenido) Algoritmo: MD5 para velocidad Incluye: timestamp + tamaño de archivo Prioridad: Velocidad sobre seguridad criptográfica
5. Detección de Archivos en Uso - Método ✅
Decisión: Detección por intento de compresión Método Primario: Intentar comprimir y detectar errores de exclusividad Método Rápido: Verificar archivo .s7p antes de comprimir proyecto completo Manejo de Errores: Marcar como problema de exclusividad si falla
6. Manejo de Proyectos Grandes - Performance ✅
Decisión: Sin límites de tamaño, tiempo o archivos Implementación: Sin throttling, procesar cualquier tamaño de proyecto Prioridad: Baja prioridad de sistema para no interferir
7. Configuración de Directorios - Recursividad ✅
Decisión: Búsqueda recursiva con optimización para .s7p Implementación:
- Búsqueda recursiva en toda la jerarquía
- Optimización: evitar último nivel para archivos .s7p
- Razón: archivos .s7p no pueden estar en el último nivel del árbol
8. Backup Incremental vs Completo ✅
Decisión: Siempre backup completo Implementación: Todo el proyecto cada vez Razón: Simplicidad y asegurar integridad completa
9. Web Interface - Características Específicas ✅
Must-have:
- Lista de proyectos con estado ✅
- Trigger manual de backup ✅
- Ver logs básicos ✅
- Configurar schedules por proyecto ✅
- Modificar configuración general (config.json) ✅
Nice-to-have:
- Ver progreso de backup en tiempo real
- Estadísticas históricas
- Configurar nuevos directorios
10. Error Handling - Estrategias de Recuperación ✅
Espacio Insuficiente:
- Área de status en página web mostrando espacio libre
- Límite mínimo: 100MB libres para ejecutar backups
- Sin backups si espacio < 100MB
Otros Errores:
- Marcar para reintento en 1 hora
- Log de errores para diagnóstico
11. Startup Behavior - Inicialización ✅
Decisión: Aplicación de background con timers específicos Comportamiento:
- Escaneos programados: cada 1 hora
- Backups mínimo: cada 10 minutos
- Aplicación siempre en background
- Baja prioridad de sistema
12. Multi-threading - Concurrencia ✅
Decisión: Ejecución secuencial (uno por vez) Implementación:
- Backups secuenciales para economizar recursos
- Baja prioridad de sistema
- Orientado a operación en background sin interferir
Especificación Técnica Finalizada ✅
Resumen de Decisiones Clave:
- Everything SDK: PyEverything wrapper con DLL local
- Estructura de Backup:
backup_destination/ProjectPath/YYYY-MM-DD/HH-MM-SS_projects.zip
- Hash: MD5 de (timestamp + tamaño) para velocidad
- Detección de Uso: Por intento de compresión + verificación .s7p
- Performance: Sin límites, baja prioridad, secuencial
- Búsqueda: Recursiva evitando último nivel para .s7p
- Backups: Siempre completos
- Interfaz: Flask con configuración de config.json
- Espacio: Mínimo 100MB libres, status visible
- Background: Escaneos 1h, backups min 10min
- Concurrencia: Secuencial, baja prioridad
Próximos Pasos:
- ✅ Finalizar diseño técnico basado en decisiones
- ⏳ Actualizar
requirements.txt
con PyEverything - ⏳ Comenzar implementación por fases
- ⏳ Crear estructura básica del proyecto