inventschario/docs/roadmap-iteracion-1.md
pikaos ee849eb9a8 feat: roadmap y diseño inicial — iteración 1 antes de feedback del usuario
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
2026-08-03 01:34:56 +01:00

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