AutoBackups/.docs/TECHNICAL_QUESTIONS.md

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 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?