# =============================================================================
# DEPENDENCY GRAPH - ERP CONSTRUCCION
# =============================================================================
# Version: 1.0.0
# Ultima actualizacion: 2025-12-06
# Proposito: Grafo de dependencias entre modulos y ruta critica
# =============================================================================

metadata:
  proyecto: ERP Construccion
  version: 1.0.0
  fecha_actualizacion: 2025-12-06
  base_core: erp-core

# =============================================================================
# RESUMEN DE DEPENDENCIAS
# =============================================================================
resumen:
  modulos_total: 18
  fases: 3
  ruta_critica_longitud: 6
  modulo_mas_dependido: MAI-001
  modulo_mas_dependencias: MAE-014

# =============================================================================
# DEPENDENCIAS EXTERNAS (erp-core)
# =============================================================================
dependencias_core:
  criticas:
    - modulo: MGN-001
      nombre: Auth
      usado_por: [MAI-001]
      tipo: CRITICA
      descripcion: Base de autenticacion JWT

    - modulo: MGN-002
      nombre: Users
      usado_por: [MAI-001, MAI-007]
      tipo: CRITICA
      descripcion: Gestion de usuarios base

    - modulo: MGN-003
      nombre: Roles
      usado_por: [MAI-001]
      tipo: CRITICA
      descripcion: RBAC base

    - modulo: MGN-004
      nombre: Tenants
      usado_por: [MAI-001]
      tipo: CRITICA
      descripcion: Multi-tenancy por constructora

  altas:
    - modulo: MGN-005
      nombre: Catalogs
      usado_por: [MAI-002, MAI-003, MAI-004]
      tipo: ALTA
      descripcion: Catalogos maestros

    - modulo: MGN-010
      nombre: Financial
      usado_por: [MAE-014]
      tipo: ALTA
      descripcion: Base financiera contable

  medias:
    - modulo: MGN-008
      nombre: Notifications
      usado_por: [MAI-005, MAI-008, MAI-010]
      tipo: MEDIA
      descripcion: Sistema de notificaciones

    - modulo: MGN-009
      nombre: Reports
      usado_por: [MAI-006]
      tipo: MEDIA
      descripcion: Motor de reportes base

# =============================================================================
# GRAFO DE DEPENDENCIAS INTERNAS
# =============================================================================
modulos:
  # ---------------------------------------------------------------------------
  # FASE 1
  # ---------------------------------------------------------------------------
  - codigo: MAI-001
    nombre: Fundamentos y Seguridad
    fase: 1
    prioridad: P0
    dependencias:
      core: [MGN-001, MGN-002, MGN-003, MGN-004]
      vertical: []
    dependido_por:
      - MAI-002
      - MAI-003
      - MAI-004
      - MAI-005
      - MAI-006
      - MAI-007
      - MAI-008
      - MAI-009
      - MAI-010
      - MAI-011
      - MAI-012
      - MAI-013
      - MAI-018
      - MAE-014
      - MAE-015
      - MAE-016
      - MAA-017
    bloquea: 17
    criticidad: CRITICA

  - codigo: MAI-002
    nombre: Proyectos y Estructura
    fase: 1
    prioridad: P0
    dependencias:
      core: [MGN-005]
      vertical: [MAI-001]
    dependido_por:
      - MAI-003
      - MAI-004
      - MAI-005
      - MAI-007
      - MAI-008
      - MAI-009
      - MAI-010
      - MAI-011
      - MAI-012
      - MAI-018
    bloquea: 10
    criticidad: CRITICA

  - codigo: MAI-003
    nombre: Presupuestos y Costos
    fase: 1
    prioridad: P0
    dependencias:
      core: [MGN-005]
      vertical: [MAI-001, MAI-002]
    dependido_por:
      - MAI-004
      - MAI-005
      - MAI-008
      - MAI-012
      - MAE-014
    bloquea: 5
    criticidad: ALTA

  - codigo: MAI-004
    nombre: Compras e Inventarios
    fase: 1
    prioridad: P1
    dependencias:
      core: [MGN-005]
      vertical: [MAI-001, MAI-002, MAI-003]
    dependido_por:
      - MAI-005
      - MAI-008
    bloquea: 2
    criticidad: MEDIA

  - codigo: MAI-005
    nombre: Control de Obra
    fase: 1
    prioridad: P0
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-003, MAI-004]
    dependido_por:
      - MAI-006
      - MAI-008
      - MAI-009
    bloquea: 3
    criticidad: ALTA

  - codigo: MAI-006
    nombre: Reportes y Analytics
    fase: 1
    prioridad: P1
    dependencias:
      core: [MGN-009]
      vertical: [MAI-001, MAI-005]
    dependido_por: []
    bloquea: 0
    criticidad: BAJA

  - codigo: MAI-007
    nombre: RRHH y Asistencias
    fase: 1
    prioridad: P1
    dependencias:
      core: [MGN-002]
      vertical: [MAI-001, MAI-002]
    dependido_por:
      - MAI-005
      - MAI-008
      - MAI-012
    bloquea: 3
    criticidad: MEDIA

  - codigo: MAI-008
    nombre: Estimaciones y Facturacion
    fase: 1
    prioridad: P0
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-003, MAI-004, MAI-005, MAI-007]
    dependido_por:
      - MAI-013
      - MAE-014
    bloquea: 2
    criticidad: ALTA

  - codigo: MAI-009
    nombre: Calidad y Postventa
    fase: 1
    prioridad: P1
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-005]
    dependido_por:
      - MAI-010
    bloquea: 1
    criticidad: BAJA

  - codigo: MAI-010
    nombre: CRM Derechohabientes
    fase: 1
    prioridad: P1
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-009]
    dependido_por:
      - MAI-011
    bloquea: 1
    criticidad: MEDIA

  - codigo: MAI-011
    nombre: Integracion INFONAVIT
    fase: 1
    prioridad: P0
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-010]
    dependido_por: []
    bloquea: 0
    criticidad: ALTA

  - codigo: MAI-012
    nombre: Contratos y Subcontratos
    fase: 1
    prioridad: P1
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-003, MAI-007]
    dependido_por:
      - MAI-008
    bloquea: 1
    criticidad: MEDIA

  - codigo: MAI-013
    nombre: Administracion
    fase: 1
    prioridad: P1
    dependencias:
      core: []
      vertical: [MAI-001, MAI-008]
    dependido_por:
      - MAE-014
    bloquea: 1
    criticidad: MEDIA

  - codigo: MAI-018
    nombre: Preconstruccion y Licitaciones
    fase: 1
    prioridad: P2
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-003]
    dependido_por: []
    bloquea: 0
    criticidad: BAJA

  # ---------------------------------------------------------------------------
  # FASE 2
  # ---------------------------------------------------------------------------
  - codigo: MAE-014
    nombre: Finanzas y Controlling
    fase: 2
    prioridad: P1
    dependencias:
      core: [MGN-010]
      vertical: [MAI-001, MAI-003, MAI-008, MAI-013]
    dependido_por: []
    bloquea: 0
    criticidad: MEDIA

  - codigo: MAE-015
    nombre: Activos y Maquinaria
    fase: 2
    prioridad: P2
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002]
    dependido_por: []
    bloquea: 0
    criticidad: BAJA

  - codigo: MAE-016
    nombre: Gestion Documental
    fase: 2
    prioridad: P2
    dependencias:
      core: []
      vertical: [MAI-001]
    dependido_por: []
    bloquea: 0
    criticidad: BAJA

  # ---------------------------------------------------------------------------
  # FASE 3
  # ---------------------------------------------------------------------------
  - codigo: MAA-017
    nombre: Seguridad HSE
    fase: 3
    prioridad: P2
    dependencias:
      core: []
      vertical: [MAI-001, MAI-002, MAI-007]
    dependido_por: []
    bloquea: 0
    criticidad: BAJA

# =============================================================================
# RUTA CRITICA DE IMPLEMENTACION
# =============================================================================
ruta_critica:
  descripcion: Secuencia obligatoria de implementacion
  pasos:
    - step: 1
      modulos: [MAI-001]
      descripcion: Fundamentos (extiende core auth/users/roles/tenants)
      prerequisitos_core: [MGN-001, MGN-002, MGN-003, MGN-004]
      bloquea: TODOS

    - step: 2
      modulos: [MAI-002]
      descripcion: Proyectos y Estructura de Obra
      prerequisitos: [MAI-001]
      bloquea: 10 modulos

    - step: 3
      modulos: [MAI-003]
      descripcion: Presupuestos y Costos
      prerequisitos: [MAI-001, MAI-002]
      bloquea: 5 modulos

    - step: 4
      modulos: [MAI-004, MAI-007]
      descripcion: Compras/Inventarios y RRHH (paralelo)
      prerequisitos: [MAI-001, MAI-002, MAI-003]

    - step: 5
      modulos: [MAI-005]
      descripcion: Control de Obra
      prerequisitos: [MAI-001, MAI-002, MAI-003, MAI-004]
      apps_moviles: [MOB-003]

    - step: 6
      modulos: [MAI-008, MAI-012]
      descripcion: Estimaciones y Contratos (paralelo)
      prerequisitos: [MAI-001, MAI-002, MAI-003, MAI-005, MAI-007]

    - step: 7
      modulos: [MAI-006, MAI-009, MAI-010]
      descripcion: Reportes, Calidad, CRM (paralelo)
      prerequisitos: [MAI-005]

    - step: 8
      modulos: [MAI-011]
      descripcion: Integracion INFONAVIT
      prerequisitos: [MAI-010]

    - step: 9
      modulos: [MAI-013, MAI-018]
      descripcion: Administracion y Preconstruccion
      prerequisitos: [MAI-008]

    - step: 10
      modulos: [MAE-014, MAE-015, MAE-016]
      descripcion: Modulos Enterprise (Fase 2)
      prerequisitos: [Fase 1 completa]

    - step: 11
      modulos: [MAA-017]
      descripcion: Seguridad HSE (Fase 3)
      prerequisitos: [Fase 2 completa]

# =============================================================================
# ANALISIS DE BLOQUEO
# =============================================================================
analisis_bloqueo:
  modulos_criticos:
    - modulo: MAI-001
      bloquea: 17
      impacto: CRITICO
      mensaje: "Bloquea TODOS los demas modulos"

    - modulo: MAI-002
      bloquea: 10
      impacto: CRITICO
      mensaje: "Bloquea modulos de obra y operacion"

    - modulo: MAI-003
      bloquea: 5
      impacto: ALTO
      mensaje: "Bloquea modulos financieros y control"

  modulos_independientes:
    - MAI-006
    - MAI-011
    - MAI-018
    - MAE-014
    - MAE-015
    - MAE-016
    - MAA-017

# =============================================================================
# DEPENDENCIAS APPS MOVILES
# =============================================================================
apps_moviles:
  - app: MOB-001
    nombre: Checador Biometrico
    modulo_principal: MAI-007
    prerequisitos: [MAI-001, MAI-002]
    puede_iniciar_en: Step 4

  - app: MOB-002
    nombre: Almacenista
    modulo_principal: MAI-004
    prerequisitos: [MAI-001, MAI-002, MAI-003]
    puede_iniciar_en: Step 4

  - app: MOB-003
    nombre: Supervisor de Obra
    modulo_principal: MAI-005
    prerequisitos: [MAI-001, MAI-002, MAI-003, MAI-004]
    puede_iniciar_en: Step 5

  - app: MOB-004
    nombre: Capataz/Cuadrilla
    modulo_principal: MAI-007
    prerequisitos: [MAI-001, MAI-002]
    puede_iniciar_en: Step 4

  - app: MOB-005
    nombre: Derechohabiente
    modulo_principal: MAI-010
    prerequisitos: [MAI-009]
    puede_iniciar_en: Step 7

# =============================================================================
# REGLAS DE DEPENDENCIA
# =============================================================================
reglas:
  - regla: NO_CIRCULAR
    descripcion: No se permiten dependencias circulares
    estado: CUMPLIDA

  - regla: CORE_PRIMERO
    descripcion: Modulos core deben existir antes de extender
    estado: CUMPLIDA

  - regla: FASE_SECUENCIAL
    descripcion: Fase N requiere Fase N-1 completa
    estado: CUMPLIDA

  - regla: ACTUALIZAR_GRAFO
    descripcion: Actualizar este archivo al agregar dependencias
    estado: ACTIVA

# =============================================================================
# DEPENDENCIAS TECNOLOGICAS
# =============================================================================
dependencias_tecnologicas:
  criticas:
    - tecnologia: PostgreSQL 15+
      usado_por: TODOS
      tipo: CRITICA

    - tecnologia: PostGIS
      usado_por: [MAI-002, MAI-005, MAI-007]
      tipo: CRITICA
      descripcion: Geolocalizacion de obras y personal

  altas:
    - tecnologia: Redis
      usado_por: [MAI-001, MAI-008]
      tipo: ALTA
      descripcion: Cache y sesiones

    - tecnologia: MinIO
      usado_por: [MAI-005, MAI-009, MAE-016]
      tipo: ALTA
      descripcion: Storage de documentos y fotos

  medias:
    - tecnologia: SMTP
      usado_por: [MAI-008, MAI-010]
      tipo: MEDIA
      descripcion: Notificaciones email

    - tecnologia: Firebase
      usado_por: [MOB-001, MOB-002, MOB-003, MOB-004, MOB-005]
      tipo: MEDIA
      descripcion: Push notifications mobile

# =============================================================================
# METADATA
# =============================================================================
metadata:
  creado_por: Requirements-Analyst
  fecha_creacion: 2025-12-06
  ultima_actualizacion: 2025-12-06
  version_documento: 1.0.0
