# ============================================================================= # FRONTEND INVENTORY - ERP CONSTRUCCION # ============================================================================= # Version: 1.0.0 # Ultima actualizacion: 2025-12-06 # Proposito: Inventario canonico de objetos frontend (web + mobile) # ============================================================================= metadata: proyecto: ERP Construccion version: 1.0.0 fecha_actualizacion: 2025-12-06 base_core: erp-core # ============================================================================= # STACK TECNOLOGICO - WEB # ============================================================================= stack_web: framework: React 18.2+ build_tool: Vite 5.x language: TypeScript 5.3+ state_management: Zustand 4.x forms: React Hook Form + Zod styling: Tailwind CSS 4.x routing: React Router 6.x http_client: Axios charts: Recharts tables: TanStack Table maps: Leaflet (para geolocalizacion) # ============================================================================= # STACK TECNOLOGICO - MOBILE # ============================================================================= stack_mobile: 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 camera: expo-camera location: expo-location biometrics: expo-local-authentication push: Firebase Cloud Messaging # ============================================================================= # CONFIGURACION # ============================================================================= configuracion: web: puerto: 5174 api_url: http://localhost:3100 mobile: bundle_ios: com.construccion.mvp bundle_android: com.construccion.mvp # ============================================================================= # RESUMEN DE COMPONENTES # ============================================================================= resumen: web: pages: 45 components: 180 stores: 20 hooks: 35 services: 18 mobile: screens: 25 components: 60 stores: 8 hooks: 15 services: 10 apps: 5 # ESTADO REAL DE IMPLEMENTACIÓN (2025-12-08) estado_implementacion: web: porcentaje: "2%" archivos_existentes: 3 components_implementados: 0 pages_implementadas: 0 stores_implementados: 0 mobile: porcentaje: "0%" archivos_existentes: 0 nota: "Mobile no iniciado" gap_documentacion_vs_codigo: documentacion_md: 449 archivos_frontend: 3 ratio: "0.6%" herencia_core: version_core: "1.1.0" base: "apps/erp-core/" componentes_compartidos: - UI Components (Button, Input, Modal, etc.) - Layout Components (MainLayout, Sidebar) - Hooks (useAuth, useTenant, useApi) - Services (apiClient, authService) stores_base: - useAuthStore - useTenantStore - useNotificationsStore # ============================================================================= # FRONTEND WEB - MODULOS # ============================================================================= web_modulos: # --------------------------------------------------------------------------- # Dashboard Principal # --------------------------------------------------------------------------- - modulo: dashboard ubicacion: src/features/dashboard/ pages: - nombre: DashboardPage ruta: /dashboard descripcion: Vista ejecutiva general components: - nombre: KPICard descripcion: Tarjeta de indicador clave - nombre: ProjectProgressChart descripcion: Grafico de avance por proyecto - nombre: BudgetVsRealChart descripcion: Comparativo presupuesto vs real - nombre: RecentActivityFeed descripcion: Actividad reciente - nombre: AlertsWidget descripcion: Alertas y notificaciones stores: - nombre: useDashboardStore estado: [kpis, projects, alerts, loading] # --------------------------------------------------------------------------- # MAI-002: Proyectos # --------------------------------------------------------------------------- - modulo: proyectos ubicacion: src/features/proyectos/ pages: - nombre: FraccionamientosListPage ruta: /fraccionamientos descripcion: Lista de fraccionamientos - nombre: FraccionamientoDetailPage ruta: /fraccionamientos/:id descripcion: Detalle con etapas, manzanas, lotes - nombre: EtapaDetailPage ruta: /fraccionamientos/:id/etapas/:etapaId descripcion: Detalle de etapa - nombre: UnidadDetailPage ruta: /unidades/:tipo/:id descripcion: Detalle de lote/departamento - nombre: PrototiposPage ruta: /prototipos descripcion: Catalogo de prototipos components: - nombre: FraccionamientoCard descripcion: Tarjeta resumen de fraccionamiento - nombre: FraccionamientoForm descripcion: Formulario crear/editar - nombre: EtapasList descripcion: Lista de etapas de un fraccionamiento - nombre: ManzanaGrid descripcion: Grid visual de manzanas/lotes - nombre: TorreVisualization descripcion: Visualizacion de torre/niveles/deptos - nombre: PrototipoSelector descripcion: Selector de prototipo para asignar - nombre: ProjectMap descripcion: Mapa con geolocalizacion de obras stores: - nombre: useFraccionamientosStore estado: [fraccionamientos, selected, loading, filters] acciones: [fetch, create, update, delete] - nombre: useEtapasStore estado: [etapas, selected, loading] - nombre: useUnidadesStore estado: [lotes, departamentos, loading] hooks: - nombre: useFraccionamiento descripcion: Hook para operaciones de fraccionamiento - nombre: useProjectHierarchy descripcion: Hook para navegacion jerarquica # --------------------------------------------------------------------------- # MAI-003: Presupuestos # --------------------------------------------------------------------------- - modulo: presupuestos ubicacion: src/features/presupuestos/ pages: - nombre: PresupuestosListPage ruta: /presupuestos descripcion: Lista de presupuestos - nombre: PresupuestoDetailPage ruta: /presupuestos/:id descripcion: Arbol presupuestario - nombre: ConceptoDetailPage ruta: /presupuestos/:id/conceptos/:conceptoId descripcion: Detalle de concepto con insumos components: - nombre: BudgetTree descripcion: Arbol jerarquico de partidas/conceptos - nombre: PartidaRow descripcion: Fila de partida expandible - nombre: ConceptoEditor descripcion: Editor de concepto con PU - nombre: InsumosList descripcion: Lista de insumos de concepto - nombre: BudgetComparison descripcion: Comparativo presupuesto vs real stores: - nombre: usePresupuestoStore estado: [presupuestos, selected, tree, loading] # --------------------------------------------------------------------------- # MAI-005: Control de Obra # --------------------------------------------------------------------------- - modulo: control-obra ubicacion: src/features/control-obra/ pages: - nombre: AvancesListPage ruta: /avances descripcion: Lista de avances registrados - nombre: AvanceCapturePage ruta: /avances/captura descripcion: Captura de avance - nombre: BitacoraPage ruta: /bitacora descripcion: Bitacora de obra - nombre: RecursosPage ruta: /recursos descripcion: Gestion de recursos components: - nombre: AvanceForm descripcion: Formulario captura avance - nombre: PhotoUploader descripcion: Carga de fotos con preview - nombre: ProgressBar descripcion: Barra de progreso visual - nombre: GanttChart descripcion: Grafico Gantt de avances - nombre: ResourceCalendar descripcion: Calendario de recursos stores: - nombre: useAvancesStore estado: [avances, filters, loading] - nombre: useBitacoraStore estado: [entradas, fecha, loading] # --------------------------------------------------------------------------- # MAI-007: RRHH # --------------------------------------------------------------------------- - modulo: rrhh ubicacion: src/features/rrhh/ pages: - nombre: PersonalListPage ruta: /personal descripcion: Lista de personal - nombre: CuadrillasPage ruta: /cuadrillas descripcion: Gestion de cuadrillas - nombre: AsistenciasPage ruta: /asistencias descripcion: Control de asistencias - nombre: DestajoPage ruta: /destajo descripcion: Control de destajo components: - nombre: PersonalTable descripcion: Tabla de personal con filtros - nombre: CuadrillaCard descripcion: Tarjeta de cuadrilla - nombre: AttendanceCalendar descripcion: Calendario de asistencias - nombre: DestajoCalculator descripcion: Calculadora de destajo # --------------------------------------------------------------------------- # MAI-008: Estimaciones # --------------------------------------------------------------------------- - modulo: estimaciones ubicacion: src/features/estimaciones/ pages: - nombre: EstimacionesListPage ruta: /estimaciones descripcion: Lista de estimaciones - nombre: EstimacionDetailPage ruta: /estimaciones/:id descripcion: Detalle con workflow - nombre: EstimacionCreatePage ruta: /estimaciones/nueva descripcion: Crear estimacion components: - nombre: EstimacionForm descripcion: Formulario de estimacion - nombre: WorkflowTimeline descripcion: Timeline de aprobaciones - nombre: DeduccionesTable descripcion: Tabla de deducciones - nombre: EstimacionPDF descripcion: Vista previa PDF stores: - nombre: useEstimacionesStore estado: [estimaciones, selected, workflow, loading] # --------------------------------------------------------------------------- # Modulos adicionales (resumen) # --------------------------------------------------------------------------- - modulo: compras pages: 4 components: 12 stores: 2 - modulo: reportes pages: 3 components: 15 stores: 1 - modulo: calidad pages: 3 components: 10 stores: 1 - modulo: crm pages: 4 components: 12 stores: 2 - modulo: infonavit pages: 3 components: 10 stores: 1 - modulo: contratos pages: 3 components: 8 stores: 1 - modulo: administracion pages: 4 components: 12 stores: 2 # ============================================================================= # FRONTEND MOBILE - APPS # ============================================================================= mobile_apps: # --------------------------------------------------------------------------- # MOB-001: Checador Biometrico # --------------------------------------------------------------------------- - app: MOB-001 nombre: Checador Biometrico perfil: checador package: com.construccion.checador ubicacion: apps/mobile-checador/ screens: - nombre: LoginScreen descripcion: Login con credenciales ERP - nombre: BiometricSetupScreen descripcion: Configuracion biometrica inicial - nombre: CheckInScreen descripcion: Pantalla principal check-in/out - nombre: AttendanceHistoryScreen descripcion: Historial de asistencias components: - nombre: FacialRecognition descripcion: Componente reconocimiento facial - nombre: FingerprintScanner descripcion: Lector huella dactilar - nombre: LocationCapture descripcion: Captura GPS al hacer check - nombre: OfflineQueue descripcion: Cola de registros offline stores: - nombre: useAuthStore estado: [user, token, tenant] - nombre: useAttendanceStore estado: [records, pendingSync, lastCheck] features: - biometria_facial - biometria_huella - geolocalizacion - offline_first # --------------------------------------------------------------------------- # MOB-002: Almacenista # --------------------------------------------------------------------------- - app: MOB-002 nombre: Almacenista perfil: almacenista package: com.construccion.almacen ubicacion: apps/mobile-almacen/ screens: - nombre: InventoryHomeScreen descripcion: Dashboard de inventario - nombre: GoodsReceiptScreen descripcion: Recepcion de materiales - nombre: MaterialMovementScreen descripcion: Movimientos de almacen - nombre: InventoryCountScreen descripcion: Conteo fisico - nombre: BarcodeSccanScreen descripcion: Escaneo de codigos components: - nombre: BarcodeScanner descripcion: Lector de codigos de barras - nombre: MaterialCard descripcion: Tarjeta de material - nombre: QuantityInput descripcion: Input cantidad con validacion - nombre: SyncIndicator descripcion: Indicador estado sync stores: - nombre: useInventoryStore estado: [materials, movements, pendingSync] features: - escaneo_codigos - offline_first - sincronizacion_background # --------------------------------------------------------------------------- # MOB-003: Supervisor de Obra # --------------------------------------------------------------------------- - app: MOB-003 nombre: Supervisor de Obra perfil: supervisor package: com.construccion.supervisor ubicacion: apps/mobile-supervisor/ screens: - nombre: ProjectSelectorScreen descripcion: Seleccion de proyecto/obra - nombre: ProgressCaptureScreen descripcion: Captura de avances - nombre: PhotoEvidenceScreen descripcion: Toma de fotos con GPS - nombre: InspectionChecklistScreen descripcion: Checklist de inspeccion - nombre: DailyLogScreen descripcion: Bitacora diaria - nombre: ResourcesScreen descripcion: Recursos en sitio components: - nombre: ProgressSlider descripcion: Slider de porcentaje avance - nombre: GeotaggedCamera descripcion: Camara con geoetiqueta - nombre: ChecklistItem descripcion: Item de checklist - nombre: VoiceNote descripcion: Nota de voz stores: - nombre: useProjectStore estado: [currentProject, units, concepts] - nombre: useProgressStore estado: [entries, photos, pendingSync] features: - camara_geoetiquetada - offline_first - notas_voz - checklists # --------------------------------------------------------------------------- # MOB-004: Capataz/Cuadrilla # --------------------------------------------------------------------------- - app: MOB-004 nombre: Capataz perfil: capataz package: com.construccion.capataz ubicacion: apps/mobile-capataz/ screens: - nombre: CrewManagementScreen descripcion: Gestion de cuadrilla - nombre: DestajoEntryScreen descripcion: Registro de destajo - nombre: WorkAssignmentScreen descripcion: Asignacion de trabajo - nombre: ProductivityReportScreen descripcion: Reporte productividad components: - nombre: CrewMemberCard descripcion: Tarjeta miembro cuadrilla - nombre: DestajoCalculator descripcion: Calculadora destajo - nombre: TaskAssigner descripcion: Asignador de tareas features: - gestion_cuadrilla - calculo_destajo - offline_first # --------------------------------------------------------------------------- # MOB-005: Derechohabiente # --------------------------------------------------------------------------- - app: MOB-005 nombre: Mi Vivienda perfil: derechohabiente package: com.construccion.cliente ubicacion: apps/mobile-cliente/ screens: - nombre: HomeScreen descripcion: Dashboard cliente - nombre: UnitProgressScreen descripcion: Avance de vivienda - nombre: InspectionRequestScreen descripcion: Solicitar inspeccion - nombre: DocumentsScreen descripcion: Documentos de la vivienda - nombre: ContactSupportScreen descripcion: Contacto con soporte components: - nombre: ProgressTimeline descripcion: Timeline de avance - nombre: PhotoGallery descripcion: Galeria de fotos - nombre: DocumentViewer descripcion: Visor de documentos - nombre: ChatSupport descripcion: Chat con soporte features: - consulta_avance - galeria_fotos - documentos - chat_soporte # ============================================================================= # COMPONENTES COMPARTIDOS # ============================================================================= shared_components: web: ui: - Button - Input - Select - Modal - Table - Card - Tabs - Toast - Loading - EmptyState - ErrorBoundary layout: - MainLayout - Sidebar - Header - Footer - Breadcrumb forms: - FormField - FormError - DatePicker - FilePicker - SearchInput mobile: ui: - Button - TextInput - Card - Modal - Loading - Toast navigation: - BottomTabBar - DrawerMenu - Header # ============================================================================= # HOOKS COMPARTIDOS # ============================================================================= shared_hooks: - nombre: useAuth descripcion: Autenticacion y sesion - nombre: useTenant descripcion: Contexto de tenant - nombre: useApi descripcion: Cliente API con interceptors - nombre: useOffline descripcion: Deteccion y manejo offline - nombre: useSync descripcion: Sincronizacion de datos - nombre: useGeolocation descripcion: Geolocalizacion - nombre: useBiometrics descripcion: Autenticacion biometrica - nombre: useCamera descripcion: Acceso a camara - nombre: useNotifications descripcion: Push notifications # ============================================================================= # METADATA # ============================================================================= metadata: creado_por: Requirements-Analyst fecha_creacion: 2025-12-06 ultima_actualizacion: 2025-12-06 version_documento: 1.0.0