# Inventschario — Roadmap Iteración 1 **Fecha:** 2026-08-03 **Objetivo:** MVP funcional con gestión de dispositivos, copias de seguridad e importación/exportación CSV. --- ## Fase 0: Infraestructura del Proyecto - [ ] Inicializar repositorio git - [ ] Crear estructura de directorios - [ ] Configurar `pyproject.toml` con dependencias - [ ] Crear `requirements.txt` - [ ] Configurar `.gitignore` (Python, SQLite, backups, __pycache__) - [ ] Escribir `README.md` con instrucciones de desarrollo ## Fase 1: Capa de Datos - [ ] Implementar `schema.sql` con el esquema completo - [ ] Implementar `connection.py` (conexión SQLite, WAL mode, foreign keys) - [ ] Implementar `migrations.py` (creación de tablas, upgrades futuros) - [ ] Implementar `DeviceRepository` (CRUD completo) - [ ] Implementar `HistoryRepository` (log de cambios) - [ ] Implementar `ConfigRepository` (key-value store) - [ ] Implementar `BackupRepository` (log de backups) - [ ] Tests unitarios para todos los repositories ## Fase 2: Capa de Servicios - [ ] Implementar `DeviceService` (CRUD, baja, enajenación, historial) - [ ] Implementar `BackupService` (crear, restaurar, eliminar, verificar antigüedad) - [ ] Implementar `ConfigService` (leer/actualizar config, labels, setup) - [ ] Implementar `ImportService` (parse CSV, mapeo, validación, duplicados) - [ ] Implementar `ExportService` (generar CSV con etiquetas renombradas) - [ ] Tests unitarios para todos los services ## Fase 3: API Gateway - [ ] Configurar Flask app con Blueprint pattern - [ ] Implementar CORS para localhost - [ ] Implementar middleware de errores - [ ] Rutas: `/api/v1/devices` (CRUD, búsqueda, filtros) - [ ] Rutas: `/api/v1/devices/:id/decommission`, `/dispose` - [ ] Rutas: `/api/v1/devices/:id/history` - [ ] Rutas: `/api/v1/config`, `/api/v1/config/labels` - [ ] Rutas: `/api/v1/config/initialize` - [ ] Rutas: `/api/v1/backups` (listar, crear, restaurar, eliminar) - [ ] Rutas: `/api/v1/import/csv`, `/api/v1/export/csv` - [ ] Rutas: `/api/v1/locations`, `/api/v1/departments` - [ ] Tests de integración para todos los endpoints ## Fase 4: Frontend — Estructura Base - [ ] Crear `index.html` con estructura SPA - [ ] Implementar `app.js` (router hash-based) - [ ] Implementar `api.js` (cliente HTTP con manejo de errores) - [ ] Implementar sistema de componentes (table, form, modal, toast, sidebar) - [ ] Crear estilos globales con CSS custom properties - [ ] Implementar responsive layout (sidebar collapse) ## Fase 5: Frontend — Páginas ### 5.1 Dashboard - [ ] Estadísticas: total dispositivos, por estado, por tipo - [ ] Últimos dispositivos añadidos - [ ] Alertas de garantía próxima (futuro, placeholder) - [ ] Recordatorio de backups antiguos ### 5.2 Inventario (Tabla) - [ ] Tabla paginada con sorting por columnas - [ ] Barra de búsqueda full-text - [ ] Filtros: tipo, estado, departamento, ubicación - [ ] Acciones por fila: ver, editar, baja, enajenar - [ ] Selección múltiple para exportación ### 5.3 Formulario de Dispositivo - [ ] Campos obligatorios marcados - [ ] Validación en tiempo real - [ ] Autocompletado de campos de registro - [ ] Selector de tipo de dispositivo - [ ] Selector de ubicación / departamento - [ ] Modo creación y modo edición ### 5.4 Detalle del Dispositivo - [ ] Ficha completa con todos los campos - [ ] Historial de cambios cronológico - [ ] Botones de acción: editar, baja, enajenar - [ ] Foto del dispositivo (futuro) ### 5.5 Baja / Enajenación - [ ] Modal con tipo de baja/enajenación - [ ] Campo de fecha efectiva - [ ] Campo de motivo / observaciones - [ ] Campo de responsable autorizador - [ ] Confirmación antes de ejecutar ### 5.6 Importar / Exportar - [ ] Selector de archivo CSV para importar - [ ] Vista previa de los primeros 10 registros - [ ] Mapeo de columnas (automático por nombre/posición) - [ ] Opciones ante duplicados - [ ] Registro de errores por fila - [ ] Botón de exportación con filtros actuales - [ ] Selector de separador CSV ### 5.7 Configuración - [ ] Nombre de institución - [ ] Edición de etiquetas de campos de registro - [ ] Configuración de backups (hora, retención) - [ ] Gestión de ubicaciones - [ ] Gestión de departamentos ### 5.8 Wizard de Configuración Inicial - [ ] Detección de primera ejecución - [ ] 6 pasos del wizard - [ ] Validación en cada paso - [ ] Creación de la BD al finalizar ## Fase 6: Copias de Seguridad - [ ] Implementar scheduler con `schedule` library - [ ] Backup automático a la hora configurada - [ ] Compresión gzip del archivo .db - [ ] Registro en `backup_log` - [ ] Verificación de backups antiguos al iniciar - [ ] Toast de recordatorio al usuario - [ ] Función de restaurar desde backup ## Fase 7: Empaquetado - [ ] Configurar PyInstaller spec file - [ ] Incluir frontend estático en el bundle - [ ] Crear icono de la aplicación (.ico) - [ ] Script de instalación (crear directorio + acceso directo Menú Inicio) - [ ] Test de distribución: ejecutar en máquina limpia de Windows ## Fase 8: Testing y Calidad - [ ] Tests unitarios: > 80% cobertura en services - [ ] Tests de integración: todos los endpoints API - [ ] Prueba manual de flujo completo - [ ] Revisión de accesibilidad (WCAG 2.1 AA) - [ ] Prueba de rendimiento con 1,000 dispositivos --- ## Estimación de Esfuerzo | Fase | Días estimados | Dependencias | |-------|:--------------:|-----------------| | 0 | 0.5 | — | | 1 | 2 | Fase 0 | | 2 | 2 | Fase 1 | | 3 | 2 | Fase 2 | | 4 | 2 | Fase 0 | | 5 | 5 | Fases 3, 4 | | 6 | 1 | Fase 1 | | 7 | 1 | Fases 3-6 | | 8 | 1 | Fases 3-7 | | **Total** | **~16 días** | | --- ## Criterios de Salida de la Iteración 1 1. El usuario puede instalar la app en su perfil de Windows 2. El wizard de configuración crea la BD correctamente 3. Se pueden crear, editar, ver y eliminar dispositivos 4. Se pueden dar de baja y enajenar dispositivos 5. La tabla de inventario tiene búsqueda, filtros y ordenación 6. Las etiquetas de campos son renombrables 7. Los backups se ejecutan diariamente 8. Se muestra recordatorio de backups antiguos 9. Se puede exportar a CSV 10. Se puede importar desde CSV 11. El historial de cambios se registra 12. La interfaz es navegable por teclado 13. Los colores cumplen WCAG 2.1 AA --- *Roadmap generado como parte de la primera iteración del proyecto Inventschario.* *Este documento es la base para el feedback del usuario antes de comenzar la implementación.*