4.7 KiB
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
conglob
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:
- Finalizar el diseño técnico
- Crear el
requirements.txt
definitivo - Comenzar con la implementación por fases
- Definir el plan de testing
¿Podrías revisar estas preguntas y darme tus preferencias para cada una?