14 KiB
14 KiB
EPIC-MAI-019: Apps Moviles por Perfil de Usuario
Proyecto: ERP Construccion ID: EPIC-MAI-019 Prioridad: P1 Story Points Totales: 89 SP Sprints Estimados: Sprint 15-22 Estado: Documentado
Objetivo de Negocio
Digitalizar las operaciones en campo de las constructoras mediante aplicaciones moviles especializadas por perfil de usuario, permitiendo:
- Captura de datos en tiempo real desde la obra
- Validacion biometrica de asistencias con reconocimiento facial y huella
- Trabajo offline con sincronizacion automatica
- Geolocalizacion para validar presencia en sitio
- Reduccion de papel en procesos de campo
Perfiles de Usuario
| Perfil | App | Modulo Base | Funcionalidad Principal |
|---|---|---|---|
| Checador | MOB-001 | MAI-007 | Registro biometrico de asistencias |
| Almacenista | MOB-002 | MAI-004 | Control de inventario en obra |
| Supervisor | MOB-003 | MAI-005 | Captura de avances y evidencia |
| Capataz | MOB-004 | MAI-007 | Gestion de cuadrillas y destajo |
| Derechohabiente | MOB-005 | MAI-010 | Consulta de avance de vivienda |
Stack Tecnologico
framework: React Native 0.73+
platform: Expo 50
language: TypeScript 5.3+
state_management: Zustand 4.x
navigation: React Navigation 6.x
offline_storage: WatermelonDB
sync: Background fetch + Queue
biometrics:
facial: expo-face-detector / AWS Rekognition
fingerprint: expo-local-authentication
camera: expo-camera
location: expo-location
push: Firebase Cloud Messaging
Apps Definidas
MOB-001: App Checador Biometrico
Perfil: Encargado de registro de asistencias Story Points: 21 SP Prioridad: P0
Funcionalidades
| ID | Funcionalidad | SP | Descripcion |
|---|---|---|---|
| F-MOB001-01 | Login con credenciales ERP | 3 | Autenticacion JWT |
| F-MOB001-02 | Reconocimiento facial | 8 | Liveness detection + matching |
| F-MOB001-03 | Huella dactilar | 5 | Biometria nativa del dispositivo |
| F-MOB001-04 | Geolocalizacion GPS | 3 | Captura ubicacion al registrar |
| F-MOB001-05 | Modo offline | 2 | Queue de registros pendientes |
User Stories
| US | Titulo | Criterios de Aceptacion |
|---|---|---|
| US-MOB001-001 | Login con cuenta ERP | - Usuario ingresa credenciales - Sistema valida contra API - Almacena token local |
| US-MOB001-002 | Check-in con reconocimiento facial | - Usuario selecciona check-in - Sistema activa camara frontal - Detecta rostro y valida liveness - Compara con biometrico registrado - Registra entrada con GPS y timestamp |
| US-MOB001-003 | Check-in con huella dactilar | - Usuario selecciona check-in huella - Sistema activa lector biometrico - Valida huella contra registro - Registra entrada con GPS |
| US-MOB001-004 | Consultar historial asistencias | - Usuario ve lista de registros - Filtra por fecha - Ve detalles de cada registro |
Pantallas
LoginScreen
|
v
HomeScreen (Check-in/Check-out buttons)
|
+---> FacialRecognitionScreen
| |
| v
| ResultScreen (Success/Fail)
|
+---> FingerprintScreen
| |
| v
| ResultScreen
|
+---> HistoryScreen
|
v
DetailScreen
MOB-002: App Almacenista
Perfil: Encargado de almacen en obra Story Points: 18 SP Prioridad: P1
Funcionalidades
| ID | Funcionalidad | SP | Descripcion |
|---|---|---|---|
| F-MOB002-01 | Recepcion de materiales | 5 | Escaneo y registro de entradas |
| F-MOB002-02 | Salida de materiales | 4 | Registro de entregas a obra |
| F-MOB002-03 | Conteo fisico | 4 | Inventario con escaneo |
| F-MOB002-04 | Escaneo de codigos | 3 | Barcode y QR scanner |
| F-MOB002-05 | Modo offline | 2 | Sincronizacion diferida |
User Stories
| US | Titulo | Criterios de Aceptacion |
|---|---|---|
| US-MOB002-001 | Recibir materiales | - Escanear codigo o buscar material - Ingresar cantidad recibida - Tomar foto de evidencia - Asociar a OC si aplica |
| US-MOB002-002 | Entregar materiales a obra | - Seleccionar material - Ingresar cantidad - Seleccionar destino (frente/cuadrilla) - Registrar quien recibe |
| US-MOB002-003 | Realizar conteo fisico | - Iniciar conteo de almacen - Escanear o buscar items - Registrar cantidades - Generar diferencias |
| US-MOB002-004 | Consultar existencias | - Buscar material - Ver existencia actual - Ver movimientos recientes |
MOB-003: App Supervisor de Obra
Perfil: Residente o supervisor de obra Story Points: 25 SP Prioridad: P0
Funcionalidades
| ID | Funcionalidad | SP | Descripcion |
|---|---|---|---|
| F-MOB003-01 | Captura de avances | 8 | Registro % avance por concepto |
| F-MOB003-02 | Fotos geoetiquetadas | 5 | Evidencia con GPS embebido |
| F-MOB003-03 | Checklist inspeccion | 4 | Listas de verificacion |
| F-MOB003-04 | Bitacora digital | 4 | Registro de notas diarias |
| F-MOB003-05 | Modo offline | 4 | Trabajo sin conexion |
User Stories
| US | Titulo | Criterios de Aceptacion |
|---|---|---|
| US-MOB003-001 | Registrar avance de concepto | - Seleccionar proyecto/unidad - Seleccionar concepto - Ingresar % avance - Adjuntar fotos - Guardar con GPS |
| US-MOB003-002 | Tomar fotos de evidencia | - Activar camara - Tomar foto - Sistema agrega GPS y timestamp - Asociar a avance/incidencia |
| US-MOB003-003 | Realizar inspeccion | - Seleccionar checklist - Marcar items cumplidos - Agregar observaciones - Adjuntar fotos - Firmar digital |
| US-MOB003-004 | Registrar en bitacora | - Crear entrada de bitacora - Agregar descripcion - Seleccionar tipo (avance/incidencia/clima) - Adjuntar multimedia |
| US-MOB003-005 | Trabajar sin conexion | - App funciona sin internet - Datos se guardan localmente - Al recuperar conexion sincroniza - Notifica conflictos si existen |
Pantallas
LoginScreen
|
v
ProjectSelectorScreen
|
v
HomeScreen (Dashboard de proyecto)
|
+---> ProgressCaptureScreen
| |
| +---> UnitSelector
| +---> ConceptSelector
| +---> ProgressInput
| +---> PhotoCapture
|
+---> InspectionScreen
| |
| +---> ChecklistView
| +---> SignatureCapture
|
+---> DailyLogScreen
| |
| +---> EntryForm
| +---> VoiceNote
|
+---> SyncStatusScreen
|
+---> PendingItems
+---> ConflictResolution
MOB-004: App Capataz / Jefe de Cuadrilla
Perfil: Capataz o jefe de cuadrilla Story Points: 16 SP Prioridad: P1
Funcionalidades
| ID | Funcionalidad | SP | Descripcion |
|---|---|---|---|
| F-MOB004-01 | Gestion de cuadrilla | 4 | Ver/asignar miembros |
| F-MOB004-02 | Registro de destajo | 5 | Cantidades por trabajador |
| F-MOB004-03 | Asignacion de trabajo | 4 | Distribuir conceptos |
| F-MOB004-04 | Reporte productividad | 3 | Rendimientos del equipo |
User Stories
| US | Titulo | Criterios de Aceptacion |
|---|---|---|
| US-MOB004-001 | Ver cuadrilla asignada | - Lista de trabajadores - Estado de asistencia - Contacto rapido |
| US-MOB004-002 | Registrar destajo | - Seleccionar trabajador - Seleccionar concepto - Ingresar cantidad - Calcular importe automatico |
| US-MOB004-003 | Asignar trabajo | - Ver conceptos pendientes - Asignar a trabajador/cuadrilla - Definir meta |
| US-MOB004-004 | Ver productividad | - Rendimiento por trabajador - Avance vs programado - Historico de destajo |
MOB-005: App Derechohabiente (Mi Vivienda)
Perfil: Cliente/derechohabiente INFONAVIT Story Points: 13 SP Prioridad: P2
Funcionalidades
| ID | Funcionalidad | SP | Descripcion |
|---|---|---|---|
| F-MOB005-01 | Consulta avance vivienda | 4 | Timeline de construccion |
| F-MOB005-02 | Galeria de fotos | 2 | Evidencia fotografica |
| F-MOB005-03 | Solicitar inspeccion | 3 | Agendar visita |
| F-MOB005-04 | Documentos | 2 | Acceso a documentos legales |
| F-MOB005-05 | Contacto soporte | 2 | Chat/llamada con asesor |
User Stories
| US | Titulo | Criterios de Aceptacion |
|---|---|---|
| US-MOB005-001 | Ver avance de mi vivienda | - Timeline visual de avance - Porcentaje por etapa - Fecha estimada entrega |
| US-MOB005-002 | Ver fotos de mi vivienda | - Galeria de fotos de avance - Filtrar por fecha - Zoom y descarga |
| US-MOB005-003 | Solicitar inspeccion | - Seleccionar tipo inspeccion - Elegir fecha/hora disponible - Recibir confirmacion |
| US-MOB005-004 | Descargar documentos | - Ver lista de documentos - Descargar PDF - Compartir |
Requisitos No Funcionales
Performance
| Metrica | Objetivo |
|---|---|
| Tiempo de login | < 3 segundos |
| Reconocimiento facial | < 2 segundos |
| Sincronizacion | Background, no bloqueante |
| Tamano app | < 50 MB |
Compatibilidad
| Plataforma | Version Minima |
|---|---|
| Android | 9.0 (API 28) |
| iOS | 14.0 |
Seguridad
- Almacenamiento encriptado de credenciales
- Biometria con liveness detection
- Tokens con expiracion
- Certificado pinning para API
- No almacenar datos sensibles en texto plano
Offline
- Funcionamiento completo sin conexion
- Queue de operaciones pendientes
- Sincronizacion automatica al reconectar
- Resolucion de conflictos
- Indicador visual de estado sync
Arquitectura
Estructura de Monorepo
apps/mobile/
├── packages/
│ ├── core/ # Auth, API, Storage compartido
│ │ ├── src/
│ │ │ ├── auth/
│ │ │ ├── api/
│ │ │ ├── storage/
│ │ │ └── sync/
│ │ └── package.json
│ │
│ ├── biometrics/ # Facial + Fingerprint
│ │ ├── src/
│ │ │ ├── facial/
│ │ │ ├── fingerprint/
│ │ │ └── hooks/
│ │ └── package.json
│ │
│ ├── camera/ # Captura de fotos geoetiquetadas
│ │ ├── src/
│ │ │ ├── GeotaggedCamera.tsx
│ │ │ └── hooks/
│ │ └── package.json
│ │
│ ├── offline/ # WatermelonDB + Sync
│ │ ├── src/
│ │ │ ├── database/
│ │ │ ├── sync/
│ │ │ └── hooks/
│ │ └── package.json
│ │
│ └── ui/ # Componentes compartidos
│ ├── src/
│ │ ├── components/
│ │ └── theme/
│ └── package.json
│
├── apps/
│ ├── checador/ # MOB-001
│ │ ├── app/
│ │ ├── components/
│ │ └── package.json
│ │
│ ├── almacen/ # MOB-002
│ │ ├── app/
│ │ ├── components/
│ │ └── package.json
│ │
│ ├── supervisor/ # MOB-003
│ │ ├── app/
│ │ ├── components/
│ │ └── package.json
│ │
│ ├── capataz/ # MOB-004
│ │ ├── app/
│ │ ├── components/
│ │ └── package.json
│ │
│ └── cliente/ # MOB-005
│ ├── app/
│ ├── components/
│ └── package.json
│
├── package.json # Workspace root
└── turbo.json # Turbo config
Dependencias con Modulos Backend
| App | Modulos Backend | Endpoints Principales |
|---|---|---|
| MOB-001 | MAI-001, MAI-007 | /auth, /asistencias, /personal |
| MOB-002 | MAI-001, MAI-004 | /auth, /inventario, /movimientos |
| MOB-003 | MAI-001, MAI-005 | /auth, /avances, /bitacora, /fotos |
| MOB-004 | MAI-001, MAI-007 | /auth, /cuadrillas, /destajo |
| MOB-005 | MAI-001, MAI-010 | /auth, /unidades, /documentos |
Roadmap de Implementacion
| Sprint | Apps | SP | Descripcion |
|---|---|---|---|
| Sprint 15 | Setup monorepo | 8 | Estructura base, packages core |
| Sprint 16 | MOB-001 | 21 | Checador biometrico completo |
| Sprint 17-18 | MOB-003 | 25 | Supervisor de obra |
| Sprint 19 | MOB-002 | 18 | Almacenista |
| Sprint 20 | MOB-004 | 16 | Capataz |
| Sprint 21-22 | MOB-005 | 13 | Derechohabiente |
Criterios de Aceptacion de la Epica
Funcionales
- 5 apps funcionando con login ERP
- Reconocimiento facial operativo con > 95% precision
- Huella dactilar integrada con biometria nativa
- Geolocalizacion en todos los registros
- Modo offline funcional en todas las apps
- Sincronizacion automatica sin perdida de datos
No Funcionales
- Apps publicadas en App Store y Play Store
- Tiempo de respuesta < 3 segundos
- Crash rate < 1%
- Compatibilidad verificada en Android 9+ e iOS 14+
Documentacion
- Manual de usuario por app
- Guia de configuracion biometrica
- Troubleshooting de sincronizacion
Riesgos y Mitigaciones
| Riesgo | Probabilidad | Impacto | Mitigacion |
|---|---|---|---|
| Precision facial baja | Media | Alto | Usar AWS Rekognition + liveness |
| Problemas de sync | Alta | Alto | Queue robusta + conflict resolution |
| Rechazo en stores | Media | Medio | Seguir guidelines estrictos |
| Performance en dispositivos viejos | Media | Medio | Optimizar bundle size |
Referencias
Creado por: Requirements-Analyst Fecha: 2025-12-06 Version: 1.0.0