erp-construccion/docs/08-epicas/EPIC-MAI-019-mobile-apps.md

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:

  1. Captura de datos en tiempo real desde la obra
  2. Validacion biometrica de asistencias con reconocimiento facial y huella
  3. Trabajo offline con sincronizacion automatica
  4. Geolocalizacion para validar presencia en sitio
  5. 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