724 lines
19 KiB
YAML
724 lines
19 KiB
YAML
# =============================================================================
|
|
# 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
|