# =============================================================================
# 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
