Inventario de dispositivos electrónicos no prestables para administración pública. Esta primera iteración contiene el diseño y la planificación antes de contactar con el usuario para su validación. Contenido: - especificaciones.md: requisitos detallados del programa - docs/arquitectura.md: propuesta de arquitectura con alternativas - docs/roadmap-iteracion-1.md: plan de desarrollo iteración 1 - docs/arquitectura-diagrama.html: diagrama visual de arquitectura - sketches/: mockups de las 4 pantallas principales - 001-dashboard: vista resumen - 002-inventario: tabla de dispositivos - 003-formulario: alta/edición de dispositivos - 004-configuracion: ajustes generales Stack propuesto: Python + Flask + SQLite + Alpine.js Distribución: PyInstaller → un único .exe autocontenido Entorno: Windows 11 Pro unida a dominio, sin privilegios de admin
6.6 KiB
6.6 KiB
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.tomlcon dependencias - Crear
requirements.txt - Configurar
.gitignore(Python, SQLite, backups, pycache) - Escribir
README.mdcon instrucciones de desarrollo
Fase 1: Capa de Datos
- Implementar
schema.sqlcon 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.htmlcon 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
schedulelibrary - 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
- El usuario puede instalar la app en su perfil de Windows
- El wizard de configuración crea la BD correctamente
- Se pueden crear, editar, ver y eliminar dispositivos
- Se pueden dar de baja y enajenar dispositivos
- La tabla de inventario tiene búsqueda, filtros y ordenación
- Las etiquetas de campos son renombrables
- Los backups se ejecutan diariamente
- Se muestra recordatorio de backups antiguos
- Se puede exportar a CSV
- Se puede importar desde CSV
- El historial de cambios se registra
- La interfaz es navegable por teclado
- 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.