185 lines
6.6 KiB
Markdown
185 lines
6.6 KiB
Markdown
|
|
# 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.*
|