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
- 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>
504 lines
18 KiB
YAML
504 lines
18 KiB
YAML
# DEPENDENCY_GRAPH.yml - ERP Core
|
|
# Grafo de dependencias entre modulos
|
|
# Ubicacion Canonica: orchestration/inventarios/
|
|
# Ultima actualizacion: 2026-01-10
|
|
|
|
version: "2.1"
|
|
project: erp-core
|
|
updated_at: "2026-01-10"
|
|
updated_by: Requirements-Analyst
|
|
|
|
# =============================================================================
|
|
# PROPOSITO
|
|
# =============================================================================
|
|
# Este archivo documenta las dependencias entre modulos para:
|
|
# 1. Planificar orden de implementacion
|
|
# 2. Identificar modulos bloqueantes
|
|
# 3. Evitar dependencias circulares
|
|
# 4. Facilitar impacto de cambios
|
|
|
|
# =============================================================================
|
|
# NOTA IMPORTANTE - REESTRUCTURACION v2.0
|
|
# =============================================================================
|
|
# Los IDs de modulos fueron reorganizados en la migracion GAMILIT:
|
|
# - Fase 01 Foundation: MGN-001 a MGN-004 (sin cambios)
|
|
# - Fase 02 Core Business: MGN-005 a MGN-010 (reorganizado)
|
|
# - Fase 03 Extended: A definir
|
|
# - Fase 04 SaaS: A definir
|
|
|
|
# =============================================================================
|
|
# RESUMEN DE DEPENDENCIAS
|
|
# =============================================================================
|
|
|
|
summary:
|
|
total_modules: 18 # 10 Core + 8 Verticales planificados
|
|
fase_01_foundation: 4
|
|
fase_02_core_business: 6
|
|
fase_03_verticals: 8 # MGN-011 a MGN-018 (planificados)
|
|
critical_path: [MGN-001, MGN-002, MGN-003, MGN-004, MGN-005]
|
|
most_depended: MGN-001 # Todos dependen de auth
|
|
most_dependencies: MGN-010 # Financial depende de multiples modulos
|
|
|
|
# =============================================================================
|
|
# GRAFO DE DEPENDENCIAS
|
|
# =============================================================================
|
|
|
|
modules:
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE FOUNDATION - Base del sistema
|
|
# ---------------------------------------------------------------------------
|
|
|
|
- id: MGN-001
|
|
name: Autenticacion
|
|
phase: foundation
|
|
layer: core
|
|
depends_on: []
|
|
required_by:
|
|
- MGN-002 # Users necesita auth
|
|
- MGN-003 # Roles necesita auth
|
|
- MGN-004 # Tenants necesita auth
|
|
- MGN-005 # Catalogs necesita auth
|
|
- MGN-006 # Inventory
|
|
- MGN-007 # Sales
|
|
- MGN-008 # Purchases
|
|
- MGN-009 # Reports
|
|
- MGN-010 # Accounting
|
|
- MGN-011 # HR
|
|
- MGN-012 # Manufacturing
|
|
- MGN-013 # Projects
|
|
- MGN-014 # CRM
|
|
- MGN-015 # Assets
|
|
- MGN-016 # Subscriptions
|
|
- MGN-017 # Payments
|
|
- MGN-018 # WhatsApp
|
|
- MGN-019 # Audit
|
|
dependency_type: hard # Sin esto nada funciona
|
|
notes: "Modulo base obligatorio para todos"
|
|
|
|
- id: MGN-002
|
|
name: Usuarios
|
|
phase: foundation
|
|
layer: core
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Usuarios requieren autenticacion"}
|
|
required_by:
|
|
- MGN-003 # Roles asigna a usuarios
|
|
- MGN-004 # Tenants tiene usuarios
|
|
- MGN-011 # HR gestiona usuarios
|
|
- MGN-019 # Audit registra usuarios
|
|
notes: "Gestion de perfiles y preferencias"
|
|
|
|
- id: MGN-003
|
|
name: Roles y Permisos
|
|
phase: foundation
|
|
layer: core
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "RBAC protege endpoints"}
|
|
- {module: MGN-002, type: hard, reason: "Roles se asignan a usuarios"}
|
|
required_by:
|
|
- MGN-004 # Tenants tiene roles por defecto
|
|
- MGN-005 # Catalogs usa permisos
|
|
- MGN-006 # Inventory usa permisos
|
|
- MGN-007 # Sales usa permisos
|
|
- MGN-008 # Purchases usa permisos
|
|
- MGN-009 # Reports usa permisos
|
|
- MGN-010 # Accounting usa permisos
|
|
notes: "Todos los modulos de negocio dependen de permisos"
|
|
|
|
- id: MGN-004
|
|
name: Multi-tenant
|
|
phase: foundation
|
|
layer: core
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Tenant se asocia en auth"}
|
|
- {module: MGN-002, type: hard, reason: "Usuarios pertenecen a tenant"}
|
|
- {module: MGN-003, type: hard, reason: "Roles son por tenant"}
|
|
required_by:
|
|
- MGN-005 # Catalogs son por tenant
|
|
- MGN-006 # Inventory por tenant
|
|
- MGN-007 # Sales por tenant
|
|
- MGN-008 # Purchases por tenant
|
|
- MGN-010 # Accounting por tenant
|
|
- MGN-016 # Subscriptions por tenant
|
|
notes: "Aislamiento de datos obligatorio"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE 02 CORE BUSINESS - Modulos de Negocio Base
|
|
# ---------------------------------------------------------------------------
|
|
# NOTA: Esta seccion fue reorganizada en la migracion GAMILIT v2.0
|
|
# Los modulos MGN-005 a MGN-010 ahora corresponden a:
|
|
# - MGN-005: Catalogos (datos maestros genericos)
|
|
# - MGN-006: Settings (configuraciones)
|
|
# - MGN-007: Audit (auditoria)
|
|
# - MGN-008: Notifications (notificaciones)
|
|
# - MGN-009: Reports (reportes y dashboards)
|
|
# - MGN-010: Financial (base financiera)
|
|
|
|
- id: MGN-005
|
|
name: Catalogos Maestros
|
|
phase: core_business
|
|
layer: business
|
|
status: migrado_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-005-catalogs/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Catalogos por tenant"}
|
|
required_by:
|
|
- MGN-010 # Financial usa catalogos de monedas, tipos
|
|
shared_entities:
|
|
- catalogs # Definiciones de catalogos
|
|
- catalog_items # Items de cada catalogo
|
|
notes: "Catalogos genericos reutilizables (paises, monedas, unidades, etc.)"
|
|
|
|
- id: MGN-006
|
|
name: Settings
|
|
phase: core_business
|
|
layer: platform
|
|
status: estructura_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-006-settings/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Settings por tenant"}
|
|
required_by:
|
|
- ALL # Todos los modulos consumen configuraciones
|
|
notes: "Configuraciones globales, por tenant y por usuario"
|
|
|
|
- id: MGN-007
|
|
name: Audit
|
|
phase: core_business
|
|
layer: platform
|
|
status: estructura_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-007-audit/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-002, type: hard, reason: "Registra acciones de usuarios"}
|
|
- {module: MGN-004, type: hard, reason: "Audit por tenant"}
|
|
required_by: []
|
|
notes: "Modulo transversal de auditoria, no tiene dependientes directos"
|
|
|
|
- id: MGN-008
|
|
name: Notifications
|
|
phase: core_business
|
|
layer: platform
|
|
status: estructura_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-008-notifications/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-002, type: hard, reason: "Notificaciones a usuarios"}
|
|
- {module: MGN-004, type: hard, reason: "Notificaciones por tenant"}
|
|
- {module: MGN-006, type: soft, reason: "Preferencias de notificacion"}
|
|
required_by:
|
|
- BUSINESS_MODULES # Modulos de negocio envian notificaciones
|
|
notes: "Sistema multi-canal (email, push, in-app)"
|
|
|
|
- id: MGN-009
|
|
name: Reports
|
|
phase: core_business
|
|
layer: reporting
|
|
status: estructura_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-009-reports/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Reportes por tenant"}
|
|
- {module: MGN-008, type: soft, reason: "Envio programado de reportes"}
|
|
required_by:
|
|
- VERTICALS # Verticales extienden con reportes especificos
|
|
notes: "Reportes, dashboards, exportacion multi-formato"
|
|
|
|
- id: MGN-010
|
|
name: Financial Base
|
|
phase: core_business
|
|
layer: business
|
|
status: estructura_gamilit
|
|
ubicacion: docs/02-fase-core-business/MGN-010-financial/
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Contabilidad por tenant"}
|
|
- {module: MGN-005, type: soft, reason: "Catalogos de monedas, tipos cuenta"}
|
|
required_by:
|
|
- FINANCIAL_VERTICALS # Facturacion, CxC, CxP, Tesoreria
|
|
notes: "Plan de cuentas, monedas, asientos contables base"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE 03 VERTICALS - Modulos Verticales de Negocio
|
|
# ---------------------------------------------------------------------------
|
|
# Modulos especializados que extienden la funcionalidad core.
|
|
# Estado: Planificados - Pendientes de implementacion
|
|
# Dependencias: Todos requieren Fase 01 y Fase 02 completadas
|
|
|
|
- id: MGN-011
|
|
name: Inventory
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-011-inventory/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Inventario por tenant"}
|
|
- {module: MGN-005, type: hard, reason: "Catalogos de productos, unidades"}
|
|
- {module: MGN-007, type: soft, reason: "Auditoria de movimientos"}
|
|
required_by:
|
|
- MGN-012 # Sales consume inventario
|
|
- MGN-013 # Purchases actualiza inventario
|
|
notes: "Control de stock, almacenes, movimientos, kardex"
|
|
|
|
- id: MGN-012
|
|
name: Sales
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-012-sales/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Ventas por tenant"}
|
|
- {module: MGN-005, type: hard, reason: "Catalogos de clientes, productos"}
|
|
- {module: MGN-010, type: hard, reason: "Facturacion usa Financial"}
|
|
- {module: MGN-011, type: soft, reason: "Disponibilidad de inventario"}
|
|
required_by:
|
|
- MGN-014 # CRM relaciona con ventas
|
|
notes: "Cotizaciones, pedidos, facturacion, notas credito/debito"
|
|
|
|
- id: MGN-013
|
|
name: Purchases
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-013-purchases/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Compras por tenant"}
|
|
- {module: MGN-005, type: hard, reason: "Catalogos de proveedores, productos"}
|
|
- {module: MGN-010, type: hard, reason: "Registro contable de compras"}
|
|
- {module: MGN-011, type: soft, reason: "Ingreso a inventario"}
|
|
required_by: []
|
|
notes: "Ordenes de compra, recepciones, cuentas por pagar"
|
|
|
|
- id: MGN-014
|
|
name: CRM
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-014-crm/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "CRM por tenant"}
|
|
- {module: MGN-005, type: hard, reason: "Catalogos de contactos"}
|
|
- {module: MGN-008, type: soft, reason: "Notificaciones de seguimiento"}
|
|
- {module: MGN-012, type: soft, reason: "Conversion a ventas"}
|
|
required_by:
|
|
- MGN-018 # WhatsApp integra con CRM
|
|
notes: "Leads, oportunidades, pipeline, seguimiento clientes"
|
|
|
|
- id: MGN-015
|
|
name: RRHH
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-015-rrhh/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-002, type: hard, reason: "Empleados como usuarios"}
|
|
- {module: MGN-004, type: hard, reason: "RRHH por tenant"}
|
|
- {module: MGN-010, type: hard, reason: "Nomina usa Financial"}
|
|
required_by: []
|
|
notes: "Empleados, contratos, nomina, vacaciones, evaluaciones"
|
|
|
|
- id: MGN-016
|
|
name: Projects
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-016-projects/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-002, type: hard, reason: "Asignacion de usuarios"}
|
|
- {module: MGN-004, type: hard, reason: "Proyectos por tenant"}
|
|
- {module: MGN-008, type: soft, reason: "Notificaciones de tareas"}
|
|
required_by: []
|
|
notes: "Proyectos, tareas, seguimiento tiempo, recursos"
|
|
|
|
- id: MGN-017
|
|
name: Assets
|
|
phase: verticals
|
|
layer: business
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-017-assets/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "Activos por tenant"}
|
|
- {module: MGN-005, type: hard, reason: "Catalogos de tipos activo"}
|
|
- {module: MGN-010, type: hard, reason: "Depreciacion usa Financial"}
|
|
required_by: []
|
|
notes: "Activos fijos, depreciacion, mantenimiento, bajas"
|
|
|
|
- id: MGN-018
|
|
name: WhatsApp Integration
|
|
phase: verticals
|
|
layer: integration
|
|
status: planificado
|
|
ubicacion: docs/03-fase-verticals/MGN-018-whatsapp/ # Planificado
|
|
depends_on:
|
|
- {module: MGN-001, type: hard, reason: "Auth requerido"}
|
|
- {module: MGN-004, type: hard, reason: "WhatsApp por tenant"}
|
|
- {module: MGN-008, type: hard, reason: "Usa sistema de notificaciones"}
|
|
- {module: MGN-014, type: soft, reason: "Interaccion con CRM"}
|
|
required_by: []
|
|
external_dependencies:
|
|
- {service: "WhatsApp Business API", type: mandatory}
|
|
notes: "Mensajeria automatizada, chatbots, notificaciones WhatsApp"
|
|
|
|
# =============================================================================
|
|
# ANALISIS DE DEPENDENCIAS
|
|
# =============================================================================
|
|
|
|
analysis:
|
|
|
|
# Ruta critica de implementacion (actualizada v2.1)
|
|
critical_path:
|
|
description: "Orden minimo de implementacion"
|
|
sequence:
|
|
- step: 1
|
|
phase: "Fase 01 Foundation"
|
|
modules: [MGN-001]
|
|
reason: "Base de autenticacion"
|
|
- step: 2
|
|
phase: "Fase 01 Foundation"
|
|
modules: [MGN-002]
|
|
reason: "Gestion de usuarios"
|
|
- step: 3
|
|
phase: "Fase 01 Foundation"
|
|
modules: [MGN-003]
|
|
reason: "Control de acceso"
|
|
- step: 4
|
|
phase: "Fase 01 Foundation"
|
|
modules: [MGN-004]
|
|
reason: "Multi-tenancy"
|
|
- step: 5
|
|
phase: "Fase 02 Core Business"
|
|
modules: [MGN-005, MGN-006]
|
|
reason: "Catalogos y Settings (paralelo)"
|
|
- step: 6
|
|
phase: "Fase 02 Core Business"
|
|
modules: [MGN-007, MGN-008]
|
|
reason: "Audit y Notifications (paralelo)"
|
|
- step: 7
|
|
phase: "Fase 02 Core Business"
|
|
modules: [MGN-009, MGN-010]
|
|
reason: "Reports y Financial (paralelo)"
|
|
- step: 8
|
|
phase: "Fase 03 Verticals"
|
|
modules: [MGN-011]
|
|
reason: "Inventario base para operaciones"
|
|
- step: 9
|
|
phase: "Fase 03 Verticals"
|
|
modules: [MGN-012, MGN-013]
|
|
reason: "Sales y Purchases (paralelo, dependen de Inventory)"
|
|
- step: 10
|
|
phase: "Fase 03 Verticals"
|
|
modules: [MGN-014, MGN-015, MGN-016, MGN-017]
|
|
reason: "CRM, RRHH, Projects, Assets (paralelo, independientes)"
|
|
- step: 11
|
|
phase: "Fase 03 Verticals"
|
|
modules: [MGN-018]
|
|
reason: "WhatsApp Integration (depende de CRM)"
|
|
|
|
# Modulos que bloquean a mas modulos (actualizado v2.1)
|
|
blocking_analysis:
|
|
- module: MGN-001
|
|
blocks: 17
|
|
criticality: critical
|
|
description: "Todos los modulos dependen de auth"
|
|
- module: MGN-004
|
|
blocks: 14
|
|
criticality: critical
|
|
description: "Todos los modulos core y verticales dependen de tenants"
|
|
- module: MGN-005
|
|
blocks: 6
|
|
criticality: high
|
|
description: "Financial y verticales comerciales usan catalogos"
|
|
- module: MGN-010
|
|
blocks: 5
|
|
criticality: high
|
|
description: "Sales, Purchases, RRHH, Assets dependen de Financial"
|
|
- module: MGN-011
|
|
blocks: 2
|
|
criticality: medium
|
|
description: "Sales y Purchases dependen de Inventory"
|
|
- module: MGN-014
|
|
blocks: 1
|
|
criticality: low
|
|
description: "WhatsApp depende de CRM"
|
|
- module: MGN-006
|
|
blocks: 1
|
|
criticality: medium
|
|
description: "Notifications usa settings"
|
|
|
|
# Dependencias circulares (no debe haber ninguna)
|
|
circular_dependencies: []
|
|
|
|
# Dependencias externas
|
|
external_services:
|
|
- name: PostgreSQL
|
|
used_by: [ALL]
|
|
criticality: critical
|
|
- name: Redis
|
|
used_by: [MGN-001, MGN-008]
|
|
criticality: high
|
|
- name: SMTP/Email
|
|
used_by: [MGN-008]
|
|
criticality: medium
|
|
|
|
# =============================================================================
|
|
# REGLAS DE DEPENDENCIA
|
|
# =============================================================================
|
|
|
|
rules:
|
|
- name: "No dependencias circulares"
|
|
description: "Ningun modulo puede depender indirectamente de si mismo"
|
|
enforcement: mandatory
|
|
|
|
- name: "Foundation primero"
|
|
description: "Modulos foundation deben implementarse antes que business"
|
|
enforcement: mandatory
|
|
|
|
- name: "Hard vs Soft"
|
|
description: |
|
|
- hard: Modulo no funciona sin dependencia
|
|
- soft: Funcionalidad reducida sin dependencia
|
|
enforcement: recommended
|
|
|
|
- name: "Actualizacion de grafo"
|
|
description: "Actualizar este archivo al agregar dependencias"
|
|
enforcement: mandatory
|
|
|
|
# =============================================================================
|
|
# HISTORIAL
|
|
# =============================================================================
|
|
|
|
history:
|
|
- date: "2025-12-05"
|
|
action: "Creacion del grafo de dependencias"
|
|
author: Requirements-Analyst
|
|
|
|
- date: "2025-12-05"
|
|
action: "Actualizacion v2.0 - Reestructuracion GAMILIT"
|
|
author: Requirements-Analyst
|
|
changes:
|
|
- "Reorganizacion de IDs MGN-005 a MGN-010"
|
|
- "Actualizacion de dependencias Fase 02"
|
|
- "Simplificacion de modulos futuros (pendiente definicion)"
|
|
- "Actualizacion de ruta critica"
|
|
|
|
- date: "2026-01-10"
|
|
action: "Actualizacion v2.1 - Documentacion Modulos Verticales"
|
|
author: Requirements-Analyst
|
|
changes:
|
|
- "Adicion de modulos MGN-011 a MGN-018 (Fase 03 Verticals)"
|
|
- "MGN-011 Inventory, MGN-012 Sales, MGN-013 Purchases"
|
|
- "MGN-014 CRM, MGN-015 RRHH, MGN-016 Projects"
|
|
- "MGN-017 Assets, MGN-018 WhatsApp Integration"
|
|
- "Actualizacion de total_modules a 18"
|
|
- "Extension de critical_path con steps 8-11"
|
|
- "Actualizacion de blocking_analysis con nuevas dependencias"
|