112 lines
4.4 KiB
Markdown
112 lines
4.4 KiB
Markdown
# 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:
|
|
1. **Everything SDK**: PyEverything wrapper con DLL local
|
|
2. **Estructura de Backup**: `backup_destination/ProjectPath/YYYY-MM-DD/HH-MM-SS_projects.zip`
|
|
3. **Hash**: MD5 de (timestamp + tamaño) para velocidad
|
|
4. **Detección de Uso**: Por intento de compresión + verificación .s7p
|
|
5. **Performance**: Sin límites, baja prioridad, secuencial
|
|
6. **Búsqueda**: Recursiva evitando último nivel para .s7p
|
|
7. **Backups**: Siempre completos
|
|
8. **Interfaz**: Flask con configuración de config.json
|
|
9. **Espacio**: Mínimo 100MB libres, status visible
|
|
10. **Background**: Escaneos 1h, backups min 10min
|
|
11. **Concurrencia**: Secuencial, baja prioridad
|
|
|
|
### Próximos Pasos:
|
|
1. ✅ Finalizar diseño técnico basado en decisiones
|
|
2. ⏳ Actualizar `requirements.txt` con PyEverything
|
|
3. ⏳ Comenzar implementación por fases
|
|
4. ⏳ Crear estructura básica del proyecto
|