# AutoBackups - Preguntas Técnicas Pendientes ## Preguntas Críticas para el Desarrollo ### 1. Everything API - Integración **Pregunta**: ¿Everything está instalado y funcionando en el sistema objetivo? **Impacto**: Si no está disponible, necesitaremos un método alternativo de búsqueda de archivos. **Opciones**: - Usar `python-everything` si Everything está disponible - Implementar búsqueda recursiva con `os.walk()` como fallback - Usar `pathlib` con `glob` patterns **Decisión necesaria**: ¿Podemos asumir que Everything estará disponible o necesitamos fallback? ### 2. Estructura de Backup - Clarificación de Rutas **Pregunta**: Si tenemos un archivo en `C:\Projects\Siemens\LineA\Project1\project.s7p`, ¿el backup debe ser? **Opción A**: ``` backup_destination/2025-09-01_14-30-15/Projects_Siemens_LineA_Project1.zip └── Projects/Siemens/LineA/Project1/... ``` **Opción B**: ``` backup_destination/2025-09-01_14-30-15/LineA_Project1.zip └── LineA/Project1/... ``` **Decisión necesaria**: ¿Qué estructura prefieres? ### 3. Configuración de Schedules - Granularidad **Pregunta**: ¿Los schedules deben ser configurables a nivel de: - Por directorio de observación (todos los proyectos de un directorio) - Por proyecto individual - Ambos (global con override por proyecto) **Decisión necesaria**: ¿Qué nivel de granularidad necesitas? ### 4. Hash de Archivos - Algoritmo y Almacenamiento **Pregunta**: Para el sistema de hash en dos etapas: - ¿Usamos MD5 (rápido) o SHA256 (más seguro) para los hashes? - ¿El hash incluye solo timestamp o también tamaño de archivo? - ¿Cómo manejamos archivos que se mueven dentro del proyecto? **Decisión necesaria**: ¿Qué balance entre velocidad y precisión prefieres? ### 5. Detección de Archivos en Uso - Método **Pregunta**: Para detectar archivos bloqueados, ¿prefieres: **Opción A**: Intentar abrir cada archivo en modo escritura exclusiva **Opción B**: Usar `lsof` (Linux) / `handle.exe` (Windows) para listar archivos abiertos **Opción C**: Solo verificar el archivo .s7p principal **Decisión necesaria**: ¿Qué método consideras más apropiado? ### 6. Manejo de Proyectos Grandes - Performance **Pregunta**: ¿Hay límites que debamos considerar? - Tamaño máximo de proyecto para backup - Tiempo máximo de backup - Número máximo de archivos por proyecto **Decisión necesaria**: ¿Necesitamos algún tipo de throttling o límites? ### 7. Configuración de Directorios - Recursividad **Pregunta**: Cuando especificamos un directorio de observación como `C:\Projects`, ¿debemos: - Buscar solo en subdirectorios inmediatos - Buscar recursivamente en toda la jerarquía - Permitir configurar la profundidad de búsqueda **Decisión necesaria**: ¿Qué comportamiento prefieres por defecto? ### 8. Backup Incremental vs Completo **Pregunta**: ¿Todos los backups deben ser completos o consideras backup incremental? - Backup completo: Todo el proyecto cada vez - Backup incremental: Solo archivos modificados **Decisión necesaria**: ¿Preferencia por simplicidad o eficiencia de espacio? ### 9. Web Interface - Características Específicas **Pregunta**: ¿Qué funcionalidades son prioritarias en la interfaz web? **Must-have**: - Lista de proyectos con estado - Trigger manual de backup - Ver logs básicos **Nice-to-have**: - Configurar schedules por proyecto - Ver progreso de backup en tiempo real - Estadísticas históricas - Configurar nuevos directorios **Decisión necesaria**: ¿Cuáles son must-have vs nice-to-have? ### 10. Error Handling - Estrategias de Recuperación **Pregunta**: ¿Cómo manejar errores específicos? - Espacio insuficiente en destino de backup - Pérdida de conexión con Everything - Corrupción de archivos de configuración - Falla durante compresión **Decisión necesaria**: ¿Qué nivel de robustez necesitas? ### 11. Startup Behavior - Inicialización **Pregunta**: Al iniciar la aplicación: - ¿Debe hacer un escaneo completo inmediatamente? - ¿Debe esperar al primer schedule programado? - ¿Debe permitir configurar el comportamiento de startup? **Decisión necesaria**: ¿Qué comportamiento prefieres al iniciar? ### 12. Multi-threading - Concurrencia **Pregunta**: ¿Los backups deben ejecutarse: - Secuencialmente (uno por vez) - En paralelo (múltiples simultáneos) - Con límite configurable de concurrencia **Decisión necesaria**: ¿Qué balance entre velocidad y recursos del sistema? ## Próximos Pasos Una vez que tengas respuestas a estas preguntas, podremos: 1. Finalizar el diseño técnico 2. Crear el `requirements.txt` definitivo 3. Comenzar con la implementación por fases 4. Definir el plan de testing ¿Podrías revisar estas preguntas y darme tus preferencias para cada una?