# DEPENDENCY_GRAPH.yml - ERP Core # Grafo de dependencias entre modulos # Ubicacion Canonica: orchestration/inventarios/ # Ultima actualizacion: 2025-12-05 version: "2.0" project: erp-core updated_at: "2025-12-05" 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: 10 # Actualizados en estructura GAMILIT fase_01_foundation: 4 fase_02_core_business: 6 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" # --------------------------------------------------------------------------- # FASES FUTURAS - Pendiente de Definicion # --------------------------------------------------------------------------- # Los modulos de Fase Extended y SaaS seran definidos cuando se complete # la documentacion de Fase 02 Core Business. # # Modulos planificados (IDs a confirmar): # - Inventory (control de stock) # - Sales (ventas, cotizaciones) # - Purchases (compras, ordenes) # - RRHH (empleados, nomina) # - CRM (leads, oportunidades) # - Projects (proyectos, tareas) # - Assets (activos fijos) # - Subscriptions (planes SaaS) # - Payments (Stripe integration) # - WhatsApp (integration) # ============================================================================= # ANALISIS DE DEPENDENCIAS # ============================================================================= analysis: # Ruta critica de implementacion (actualizada v2.0) 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)" # Modulos que bloquean a mas modulos (actualizado) blocking_analysis: - module: MGN-001 blocks: 9 criticality: critical description: "Todos los modulos dependen de auth" - module: MGN-004 blocks: 6 criticality: critical description: "Todos los modulos core business dependen de tenants" - module: MGN-005 blocks: 1 criticality: medium description: "Financial usa catalogos" - 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"