erp-core/docs/03-fase-mobile/MOB-001-foundation/_MAP.md
rckrdmrd 0086695b4c
Some checks failed
ERP Core CI / Backend Lint (push) Has been cancelled
ERP Core CI / Backend Unit Tests (push) Has been cancelled
ERP Core CI / Backend Integration Tests (push) Has been cancelled
ERP Core CI / Frontend Lint (push) Has been cancelled
ERP Core CI / Frontend Unit Tests (push) Has been cancelled
ERP Core CI / Frontend E2E Tests (push) Has been cancelled
ERP Core CI / Database DDL Validation (push) Has been cancelled
ERP Core CI / Backend Build (push) Has been cancelled
ERP Core CI / Frontend Build (push) Has been cancelled
ERP Core CI / CI Success (push) Has been cancelled
Performance Tests / Lighthouse CI (push) Has been cancelled
Performance Tests / Bundle Size Analysis (push) Has been cancelled
Performance Tests / k6 Load Tests (push) Has been cancelled
Performance Tests / Performance Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0 + cambios backend
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones en modulos CRM y OpenAPI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:05 -06:00

7.8 KiB

_MAP: MOB-001 - Mobile Foundation

Modulo: MOB-001 Nombre: Mobile App Foundation Fase: 03 - Mobile Story Points: 31 SP (MOB-001: 13 + MOB-002: 8 + MOB-003: 5 + TEST-010: 5) Estado: COMPLETADO Ultima actualizacion: 2026-01-07


Resumen

Aplicacion movil para ERP Core construida con Expo/React Native. Incluye autenticacion, navegacion, funcionalidades offline, notificaciones push, escaneo de codigos de barras/QR y autenticacion biometrica.


Metricas

Metrica Valor
Story Points 31 SP
Archivos creados 30+
Screens 6 (Home, Partners, Scanner, Products, Invoices, Settings)
Auth Screens 2 (Login, Forgot Password)
Services 5 (api, offline, notifications, barcode, biometrics)
Hooks 4 (useOfflineQuery, useNotifications, useBarcode, useBiometrics)
Components 1 (BarcodeScanner)
Tests 57+

Estructura del Modulo

mobile/
├── app/                      # Expo Router screens
│   ├── _layout.tsx          # Root layout con auth flow
│   ├── (auth)/              # Auth screens
│   │   ├── _layout.tsx      # Auth stack layout
│   │   ├── login.tsx        # Login screen
│   │   └── forgot-password.tsx
│   └── (tabs)/              # Main tab screens
│       ├── _layout.tsx      # Tab navigation (6 tabs)
│       ├── index.tsx        # Home/Dashboard
│       ├── partners.tsx     # Partners list
│       ├── scanner.tsx      # Barcode scanner
│       ├── products.tsx     # Products list
│       ├── invoices.tsx     # Invoices list
│       └── settings.tsx     # User settings
├── src/
│   ├── __tests__/           # Unit tests
│   │   ├── auth.store.test.ts
│   │   ├── offline.service.test.ts
│   │   └── biometrics.service.test.ts
│   ├── components/          # Shared components
│   │   ├── index.ts
│   │   └── BarcodeScanner.tsx
│   ├── hooks/               # Custom hooks
│   │   ├── index.ts
│   │   ├── useOfflineQuery.ts
│   │   ├── useNotifications.ts
│   │   ├── useBarcode.ts
│   │   └── useBiometrics.ts
│   ├── services/            # API y servicios
│   │   ├── index.ts
│   │   ├── api.ts           # Axios client
│   │   ├── offline.ts       # Offline sync
│   │   ├── notifications.ts # Push notifications
│   │   ├── barcode.ts       # Barcode scanning
│   │   └── biometrics.ts    # Face ID/Touch ID
│   ├── stores/              # Zustand stores
│   │   ├── index.ts
│   │   └── auth.store.ts
│   └── types/               # TypeScript types
│       └── index.ts
├── jest.config.js           # Jest configuration
├── jest.setup.js            # Test setup with mocks
├── package.json
├── app.json
└── tsconfig.json

Tareas Completadas

MOB-001: Foundation (13 SP)

Componente Descripcion Estado
Expo Setup package.json, app.json, tsconfig.json Completado
Auth Store Zustand store para autenticacion Completado
API Client Axios con interceptors y auto-refresh Completado
Auth Screens Login, Forgot Password Completado
Tab Screens Home, Partners, Products, Invoices, Settings Completado
Navigation Expo Router file-based Completado
Types User, Partner, Product, Invoice, etc. Completado

MOB-002: Extended Features (8 SP)

Feature Descripcion Estado
Offline Sync AsyncStorage cache, NetInfo, sync queue Completado
Push Notifications expo-notifications, Android channels Completado
Camera/QR Scanner expo-camera, EAN/UPC validation Completado
Biometrics Face ID/Touch ID/Fingerprint Completado

MOB-003: Scanner Screen (5 SP)

Componente Descripcion Estado
Scanner Screen Pantalla dedicada para escaneo Completado
Product Lookup Busqueda de producto por codigo Completado
Scan History Historial de ultimos 20 escaneos Completado
Actions Agregar a inventario/pedido Completado

TEST-010: Mobile Unit Tests (5 SP)

Test File Tests Cobertura
auth.store.test.ts 12 login, logout, loadStoredAuth, setUser
offline.service.test.ts 25+ store, cache, network monitor, sync manager
biometrics.service.test.ts 20+ capabilities, authenticate, enable/disable
TOTAL 57+

Dependencias Expo

Paquete Version Uso
expo ~51.0.0 Framework base
expo-router ~3.5.0 File-based navigation
expo-secure-store ~13.0.1 Token storage
expo-camera ~15.0.14 Barcode scanning
expo-barcode-scanner ~13.0.1 Barcode types
expo-notifications ~0.28.16 Push notifications
expo-local-authentication ~14.0.1 Biometrics
expo-haptics ~13.0.1 Haptic feedback
@react-native-async-storage/async-storage 1.23.1 Offline cache
@react-native-community/netinfo 11.3.1 Network monitoring
zustand ^5.0.1 State management
axios ^1.7.7 HTTP client
zod ^3.23.8 Validation

Dependencias de Otros Modulos

Depende de:

  • MGN-001 (Auth) - Endpoints de autenticacion
  • Backend API - Todos los endpoints REST

Requerido por:

  • Usuarios moviles del ERP

API Endpoints Consumidos

Metodo Endpoint Descripcion
POST /auth/login Inicio de sesion
POST /auth/logout Cierre de sesion
GET /auth/profile Perfil del usuario
POST /auth/forgot-password Recuperacion de password
GET /partners Lista de partners
GET /products Lista de productos
GET /products?barcode={code} Buscar por codigo
GET /invoices Lista de facturas

Features Detalladas

Offline Sync

// Store para estado offline
useOfflineStore: {
  isOnline: boolean;
  syncQueue: SyncAction[];
  isSyncing: boolean;
  lastSyncAt: number | null;
}

// Hooks disponibles
useOfflineQuery(key, fetcher, options)  // Fetch con cache
useOfflineMutation(mutator, options)     // Mutacion offline-capable

Push Notifications

// Android channels configurados
- default: Notificaciones generales
- alerts: Alertas importantes (high priority)
- sync: Sincronizacion (low priority)

// Hooks disponibles
useNotifications()  // Gestion de notificaciones

Barcode Scanner

// Formatos soportados
- EAN-13, EAN-8, UPC-A, UPC-E
- Code128, Code39
- QR Code

// Hooks disponibles
useBarcode()  // Escaneo y validacion

Biometrics

// Tipos soportados
- Face ID (iOS)
- Touch ID (iOS)
- Fingerprint (Android)
- Iris (Android)

// Hooks disponibles
useBiometrics()  // Autenticacion biometrica

Testing

Jest Configuration

// jest.config.js
module.exports = {
  preset: 'jest-expo',
  setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
  },
};

Mocked Modules

  • expo-secure-store
  • @react-native-async-storage/async-storage
  • @react-native-community/netinfo
  • expo-notifications
  • expo-local-authentication
  • expo-camera
  • expo-haptics
  • expo-device

Proximos Pasos

ID Descripcion SP Prioridad
MOB-004 Detox E2E Tests 5 Baja
MOB-005 Orders/Sales Module 8 Baja
MOB-006 Offline-first CRUD 5 Baja

Actualizado por: Mobile-Agent (Claude Opus 4.5) Fecha: 2026-01-07 Tareas: MOB-001, MOB-002, MOB-003, TEST-010 COMPLETADAS