# ============================================================================
# MATRIZ DE TRAZABILIDAD - MAE-010 Tesorería
# ============================================================================
# Proyecto: ERP Suite - Construcción
# Módulo: MAE-010 - Gestión de Tesorería
# Versión: 1.0.0
# Última actualización: 2025-12-06
# ============================================================================

metadata:
  module_id: MAE-010
  module_name: Gestión de Tesorería
  vertical: Construcción
  phase: Fase Core Business
  version: 1.0.0
  status: in_design
  last_updated: 2025-12-06
  owner: Equipo Construcción

  # Métricas de reutilización
  reuse_metrics:
    core_reuse_percentage: 70
    custom_development_percentage: 30
    estimated_effort_reduction: 65
    core_components_used: 12
    custom_components: 5

  # Dependencias del Core
  core_dependencies:
    - MGN-001  # Gestión de Usuarios
    - MGN-002  # Control de Acceso (RBAC)
    - MGN-003  # Multi-Tenancy
    - MGN-004  # Multi-Empresa
    - MGN-005  # Catálogos
    - MGN-006  # Configuración
    - MGN-007  # Auditoría
    - MGN-008  # Notificaciones
    - MGN-009  # Reportes
    - MGN-010  # Financiero (Core)

# ============================================================================
# REQUERIMIENTOS FUNCIONALES
# ============================================================================

functional_requirements:

  # --------------------------------------------------------------------------
  # RF-001: Gestión de Bancos
  # --------------------------------------------------------------------------
  - id: RF-MAE-010-001
    name: Gestión de Bancos
    description: Administración completa de cuentas bancarias y entidades financieras
    priority: CRITICAL
    status: pending
    complexity: HIGH

    business_rules:
      - id: BR-001-001
        description: Cada cuenta bancaria debe estar asociada a una empresa y proyecto
        validation: Validación obligatoria de empresa y proyecto al crear cuenta

      - id: BR-001-002
        description: Control de saldos en tiempo real por cuenta bancaria
        validation: Actualización automática de saldos con cada transacción

      - id: BR-001-003
        description: Límites de saldo mínimo y máximo configurables
        validation: Alertas automáticas al exceder límites configurados

      - id: BR-001-004
        description: Soporte para múltiples monedas por cuenta
        validation: Conversión automática según tipo de cambio del día

      - id: BR-001-005
        description: Control de cuentas activas/inactivas con bloqueo de transacciones
        validation: Validación de estado antes de permitir movimientos

    user_stories:
      - id: US-001-001
        title: Registrar nueva cuenta bancaria
        as_a: Gerente Financiero
        i_want: Registrar una nueva cuenta bancaria
        so_that: Pueda gestionar los fondos del proyecto
        acceptance_criteria:
          - Formulario con datos de banco y cuenta
          - Asociación obligatoria a empresa y proyecto
          - Configuración de moneda y saldos iniciales
          - Definición de límites de operación
          - Validación de número de cuenta único
        priority: HIGH
        story_points: 5

      - id: US-001-002
        title: Consultar saldos bancarios
        as_a: Tesorero
        i_want: Consultar saldos actuales de todas las cuentas
        so_that: Pueda conocer la disponibilidad de efectivo
        acceptance_criteria:
          - Dashboard con saldos por cuenta
          - Filtros por empresa, proyecto y banco
          - Visualización en múltiples monedas
          - Indicadores de alertas por límites
          - Exportación de reportes de saldos
        priority: HIGH
        story_points: 8

      - id: US-001-003
        title: Configurar límites de cuentas
        as_a: Director Financiero
        i_want: Configurar límites mínimos y máximos por cuenta
        so_that: Pueda controlar el flujo de efectivo automáticamente
        acceptance_criteria:
          - Definición de saldo mínimo requerido
          - Definición de saldo máximo permitido
          - Configuración de alertas por umbrales
          - Notificaciones automáticas a responsables
          - Histórico de cambios en límites
        priority: MEDIUM
        story_points: 5

    technical_requirements:
      - id: TR-001-001
        description: API REST para gestión CRUD de cuentas bancarias
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

      - id: TR-001-002
        description: Modelo de datos extendido para cuentas por proyecto
        component: database
        technology: PostgreSQL
        core_reuse: true
        customization: Campos adicionales para proyecto y límites

      - id: TR-001-003
        description: Servicio de cálculo de saldos en tiempo real
        component: backend
        technology: NestJS + Redis
        core_reuse: true
        core_module: MGN-010

      - id: TR-001-004
        description: UI para gestión de cuentas bancarias
        component: frontend
        technology: Angular
        core_reuse: true
        customization: Campos específicos de construcción

      - id: TR-001-005
        description: Sistema de alertas por límites de saldo
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-008

    test_cases:
      - id: TC-001-001
        description: Crear cuenta bancaria con datos válidos
        type: functional
        priority: HIGH

      - id: TC-001-002
        description: Validar unicidad de número de cuenta
        type: functional
        priority: HIGH

      - id: TC-001-003
        description: Verificar actualización de saldos en tiempo real
        type: functional
        priority: CRITICAL

      - id: TC-001-004
        description: Probar alertas por límites de saldo
        type: functional
        priority: MEDIUM

      - id: TC-001-005
        description: Validar conversión de monedas
        type: functional
        priority: HIGH

    dependencies:
      core_modules:
        - MGN-003  # Multi-Tenancy
        - MGN-004  # Multi-Empresa
        - MGN-005  # Catálogos (bancos, monedas)
        - MGN-008  # Notificaciones
        - MGN-010  # Financiero Core
      custom_modules: []
      external_services:
        - name: Servicio de Tipos de Cambio
          type: API externa
          required: true

  # --------------------------------------------------------------------------
  # RF-002: Flujo de Efectivo
  # --------------------------------------------------------------------------
  - id: RF-MAE-010-002
    name: Flujo de Efectivo
    description: Proyección y control del flujo de efectivo por proyecto
    priority: CRITICAL
    status: pending
    complexity: VERY_HIGH

    business_rules:
      - id: BR-002-001
        description: Proyección de flujo basada en estimaciones de obra
        validation: Integración con cronograma y presupuesto de proyecto

      - id: BR-002-002
        description: Actualización automática con ingresos y egresos reales
        validation: Sincronización con módulos de facturación y pagos

      - id: BR-002-003
        description: Análisis de variaciones entre flujo proyectado y real
        validation: Cálculo automático de desviaciones y alertas

      - id: BR-002-004
        description: Proyección multi-período (semanal, mensual, trimestral)
        validation: Configuración flexible de períodos de análisis

      - id: BR-002-005
        description: Control de flujo negativo con alertas tempranas
        validation: Notificaciones 15 días antes de flujo negativo proyectado

    user_stories:
      - id: US-002-001
        title: Proyectar flujo de efectivo
        as_a: Gerente de Proyecto
        i_want: Proyectar el flujo de efectivo de mi obra
        so_that: Pueda anticipar necesidades de financiamiento
        acceptance_criteria:
          - Integración con presupuesto del proyecto
          - Definición de ingresos esperados por estimación
          - Programación de egresos por partida
          - Visualización en línea de tiempo
          - Escenarios optimista/realista/pesimista
        priority: CRITICAL
        story_points: 13

      - id: US-002-002
        title: Monitorear flujo real vs proyectado
        as_a: Director Financiero
        i_want: Comparar el flujo real contra el proyectado
        so_that: Pueda identificar desviaciones y tomar acciones
        acceptance_criteria:
          - Dashboard comparativo real vs proyectado
          - Indicadores de variación por período
          - Análisis de causas de desviación
          - Alertas automáticas por desviaciones >15%
          - Reportes de tendencias
        priority: HIGH
        story_points: 13

      - id: US-002-003
        title: Simular escenarios de flujo
        as_a: Tesorero
        i_want: Simular diferentes escenarios de flujo de efectivo
        so_that: Pueda planificar estrategias financieras
        acceptance_criteria:
          - Creación de escenarios personalizados
          - Ajuste de variables clave (pagos, cobros, plazos)
          - Comparación entre escenarios
          - Análisis de sensibilidad
          - Exportación de simulaciones
        priority: MEDIUM
        story_points: 8

    technical_requirements:
      - id: TR-002-001
        description: Motor de proyección de flujo de efectivo
        component: backend
        technology: NestJS
        core_reuse: false
        custom_development: true

      - id: TR-002-002
        description: Integración con módulo de presupuestos
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

      - id: TR-002-003
        description: Servicio de análisis de variaciones
        component: backend
        technology: NestJS + Python (Analytics)
        core_reuse: false
        custom_development: true

      - id: TR-002-004
        description: UI de visualización de flujo de efectivo
        component: frontend
        technology: Angular + Chart.js
        core_reuse: false
        custom_development: true

      - id: TR-002-005
        description: Sistema de alertas por flujo negativo
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-008

    test_cases:
      - id: TC-002-001
        description: Proyectar flujo basado en presupuesto
        type: functional
        priority: CRITICAL

      - id: TC-002-002
        description: Actualizar flujo con transacciones reales
        type: functional
        priority: CRITICAL

      - id: TC-002-003
        description: Calcular variaciones real vs proyectado
        type: functional
        priority: HIGH

      - id: TC-002-004
        description: Generar alertas por flujo negativo
        type: functional
        priority: HIGH

      - id: TC-002-005
        description: Simular escenarios con diferentes variables
        type: functional
        priority: MEDIUM

    dependencies:
      core_modules:
        - MGN-008  # Notificaciones
        - MGN-009  # Reportes
        - MGN-010  # Financiero Core
      custom_modules:
        - MAE-007  # Presupuestos
        - MAE-008  # Estimaciones
      external_services: []

  # --------------------------------------------------------------------------
  # RF-003: Conciliaciones Bancarias
  # --------------------------------------------------------------------------
  - id: RF-MAE-010-003
    name: Conciliaciones Bancarias
    description: Proceso de conciliación automática y manual de movimientos bancarios
    priority: HIGH
    status: pending
    complexity: HIGH

    business_rules:
      - id: BR-003-001
        description: Conciliación automática por importe y fecha
        validation: Matching automático con tolerancia configurable

      - id: BR-003-002
        description: Gestión de partidas en tránsito
        validation: Identificación y seguimiento de movimientos pendientes

      - id: BR-003-003
        description: Control de diferencias por investigar
        validation: Registro y seguimiento de discrepancias

      - id: BR-003-004
        description: Cierre mensual obligatorio de conciliaciones
        validation: Bloqueo de período anterior al aprobar conciliación

      - id: BR-003-005
        description: Importación de estados de cuenta bancarios
        validation: Soporte para formatos XML, CSV, PDF

    user_stories:
      - id: US-003-001
        title: Importar estado de cuenta bancario
        as_a: Contador
        i_want: Importar el estado de cuenta del banco
        so_that: Pueda iniciar el proceso de conciliación
        acceptance_criteria:
          - Importación desde XML, CSV o PDF
          - Mapeo automático de campos
          - Validación de formato y datos
          - Vista previa antes de confirmar
          - Registro de archivo importado
        priority: HIGH
        story_points: 8

      - id: US-003-002
        title: Conciliar automáticamente movimientos
        as_a: Contador
        i_want: Ejecutar conciliación automática
        so_that: Ahorre tiempo en el proceso de conciliación
        acceptance_criteria:
          - Matching por importe exacto y fecha ±3 días
          - Matching por referencia bancaria
          - Tolerancia configurable de diferencias
          - Reporte de movimientos conciliados
          - Lista de partidas sin conciliar
        priority: HIGH
        story_points: 13

      - id: US-003-003
        title: Conciliar manualmente movimientos
        as_a: Contador
        i_want: Conciliar manualmente movimientos no automáticos
        so_that: Pueda completar la conciliación del período
        acceptance_criteria:
          - Vista lado a lado: banco vs sistema
          - Selección manual de movimientos a conciliar
          - Registro de notas y observaciones
          - Creación de ajustes contables
          - Confirmación de conciliación
        priority: HIGH
        story_points: 8

      - id: US-003-004
        title: Cerrar período de conciliación
        as_a: Gerente Financiero
        i_want: Cerrar y aprobar la conciliación mensual
        so_that: Pueda garantizar la integridad de la información
        acceptance_criteria:
          - Validación de conciliación completa
          - Reporte de diferencias pendientes
          - Workflow de aprobación
          - Bloqueo de período conciliado
          - Generación de reporte final
        priority: MEDIUM
        story_points: 5

    technical_requirements:
      - id: TR-003-001
        description: Servicio de importación de estados de cuenta
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

      - id: TR-003-002
        description: Motor de conciliación automática
        component: backend
        technology: NestJS + Algoritmos de matching
        core_reuse: true
        core_module: MGN-010
        customization: Reglas específicas de construcción

      - id: TR-003-003
        description: API para conciliación manual
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

      - id: TR-003-004
        description: UI de conciliación bancaria
        component: frontend
        technology: Angular
        core_reuse: true
        customization: Vista específica para proyectos

      - id: TR-003-005
        description: Servicio de cierre y aprobación de conciliaciones
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

    test_cases:
      - id: TC-003-001
        description: Importar estado de cuenta en formato XML
        type: functional
        priority: HIGH

      - id: TC-003-002
        description: Conciliar automáticamente por importe exacto
        type: functional
        priority: CRITICAL

      - id: TC-003-003
        description: Conciliar manualmente con diferencias
        type: functional
        priority: HIGH

      - id: TC-003-004
        description: Cerrar período con validaciones
        type: functional
        priority: HIGH

      - id: TC-003-005
        description: Verificar bloqueo de período cerrado
        type: functional
        priority: MEDIUM

    dependencies:
      core_modules:
        - MGN-007  # Auditoría
        - MGN-010  # Financiero Core
      custom_modules: []
      external_services:
        - name: Parser de documentos PDF
          type: Librería externa
          required: true

  # --------------------------------------------------------------------------
  # RF-004: Pagos Programados
  # --------------------------------------------------------------------------
  - id: RF-MAE-010-004
    name: Pagos Programados
    description: Gestión y automatización de pagos recurrentes y programados
    priority: HIGH
    status: pending
    complexity: MEDIUM

    business_rules:
      - id: BR-004-001
        description: Programación de pagos recurrentes (semanales, mensuales)
        validation: Configuración de frecuencia y fechas de ejecución

      - id: BR-004-002
        description: Aprobación multi-nivel según monto del pago
        validation: Workflow de aprobación configurable por rangos

      - id: BR-004-003
        description: Generación automática de órdenes de pago
        validation: Creación de documentos según calendario

      - id: BR-004-004
        description: Control de disponibilidad de fondos antes de ejecutar
        validation: Validación de saldo disponible al momento del pago

      - id: BR-004-005
        description: Notificaciones previas a ejecución de pagos
        validation: Alertas 24 horas antes del pago programado

    user_stories:
      - id: US-004-001
        title: Programar pagos recurrentes
        as_a: Tesorero
        i_want: Programar pagos recurrentes
        so_that: Automatice los pagos regulares a proveedores
        acceptance_criteria:
          - Selección de proveedor y concepto
          - Definición de monto y moneda
          - Configuración de frecuencia (semanal/mensual)
          - Definición de cuenta bancaria origen
          - Fecha de inicio y fin de programación
        priority: HIGH
        story_points: 8

      - id: US-004-002
        title: Aprobar pagos programados
        as_a: Gerente Financiero
        i_want: Aprobar o rechazar pagos programados
        so_that: Pueda mantener control sobre los egresos
        acceptance_criteria:
          - Bandeja de pagos pendientes de aprobación
          - Visualización de detalles del pago
          - Verificación de disponibilidad de fondos
          - Opción de aprobar/rechazar con comentarios
          - Notificación al solicitante
        priority: HIGH
        story_points: 5

      - id: US-004-003
        title: Ejecutar pagos automáticamente
        as_a: Sistema
        i_want: Ejecutar pagos programados automáticamente
        so_that: Se procesen los pagos en las fechas configuradas
        acceptance_criteria:
          - Job programado que revisa pagos del día
          - Validación de aprobaciones requeridas
          - Verificación de saldo disponible
          - Generación de orden de pago
          - Notificación de ejecución exitosa
        priority: HIGH
        story_points: 8

      - id: US-004-004
        title: Consultar calendario de pagos
        as_a: Director Financiero
        i_want: Consultar el calendario de pagos programados
        so_that: Pueda planificar la disponibilidad de efectivo
        acceptance_criteria:
          - Vista de calendario mensual
          - Lista de pagos por fecha
          - Filtros por proyecto, proveedor, estado
          - Exportación a Excel
          - Indicadores de alertas por fondos insuficientes
        priority: MEDIUM
        story_points: 5

    technical_requirements:
      - id: TR-004-001
        description: API para gestión de pagos programados
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-010

      - id: TR-004-002
        description: Scheduler para ejecución automática de pagos
        component: backend
        technology: NestJS + Bull Queue
        core_reuse: true
        core_module: MGN-010

      - id: TR-004-003
        description: Workflow de aprobación de pagos
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-002

      - id: TR-004-004
        description: UI de calendario y gestión de pagos
        component: frontend
        technology: Angular + FullCalendar
        core_reuse: true
        customization: Vista específica de construcción

      - id: TR-004-005
        description: Sistema de notificaciones de pagos
        component: backend
        technology: NestJS
        core_reuse: true
        core_module: MGN-008

    test_cases:
      - id: TC-004-001
        description: Crear pago programado recurrente
        type: functional
        priority: HIGH

      - id: TC-004-002
        description: Aprobar pago con workflow multi-nivel
        type: functional
        priority: HIGH

      - id: TC-004-003
        description: Ejecutar pago automáticamente en fecha programada
        type: functional
        priority: CRITICAL

      - id: TC-004-004
        description: Validar fondos insuficientes al ejecutar
        type: functional
        priority: HIGH

      - id: TC-004-005
        description: Generar notificaciones previas a ejecución
        type: functional
        priority: MEDIUM

    dependencies:
      core_modules:
        - MGN-002  # RBAC (aprobaciones)
        - MGN-008  # Notificaciones
        - MGN-010  # Financiero Core
      custom_modules:
        - MAE-009  # Proveedores
      external_services: []

# ============================================================================
# MATRIZ DE TRAZABILIDAD
# ============================================================================

traceability_matrix:

  # RF-001: Gestión de Bancos
  - requirement_id: RF-MAE-010-001
    requirement_name: Gestión de Bancos
    business_rules: [BR-001-001, BR-001-002, BR-001-003, BR-001-004, BR-001-005]
    user_stories: [US-001-001, US-001-002, US-001-003]
    technical_requirements: [TR-001-001, TR-001-002, TR-001-003, TR-001-004, TR-001-005]
    test_cases: [TC-001-001, TC-001-002, TC-001-003, TC-001-004, TC-001-005]
    implementation_status: pending
    test_coverage: 0

  # RF-002: Flujo de Efectivo
  - requirement_id: RF-MAE-010-002
    requirement_name: Flujo de Efectivo
    business_rules: [BR-002-001, BR-002-002, BR-002-003, BR-002-004, BR-002-005]
    user_stories: [US-002-001, US-002-002, US-002-003]
    technical_requirements: [TR-002-001, TR-002-002, TR-002-003, TR-002-004, TR-002-005]
    test_cases: [TC-002-001, TC-002-002, TC-002-003, TC-002-004, TC-002-005]
    implementation_status: pending
    test_coverage: 0

  # RF-003: Conciliaciones Bancarias
  - requirement_id: RF-MAE-010-003
    requirement_name: Conciliaciones Bancarias
    business_rules: [BR-003-001, BR-003-002, BR-003-003, BR-003-004, BR-003-005]
    user_stories: [US-003-001, US-003-002, US-003-003, US-003-004]
    technical_requirements: [TR-003-001, TR-003-002, TR-003-003, TR-003-004, TR-003-005]
    test_cases: [TC-003-001, TC-003-002, TC-003-003, TC-003-004, TC-003-005]
    implementation_status: pending
    test_coverage: 0

  # RF-004: Pagos Programados
  - requirement_id: RF-MAE-010-004
    requirement_name: Pagos Programados
    business_rules: [BR-004-001, BR-004-002, BR-004-003, BR-004-004, BR-004-005]
    user_stories: [US-004-001, US-004-002, US-004-003, US-004-004]
    technical_requirements: [TR-004-001, TR-004-002, TR-004-003, TR-004-004, TR-004-005]
    test_cases: [TC-004-001, TC-004-002, TC-004-003, TC-004-004, TC-004-005]
    implementation_status: pending
    test_coverage: 0

# ============================================================================
# COMPONENTES REUTILIZADOS DEL CORE
# ============================================================================

core_components_reused:

  # Módulo Financiero Core
  - component_id: MGN-010-ACCOUNTS
    component_name: Gestión de Cuentas Bancarias
    core_module: MGN-010
    reuse_percentage: 80
    customization_needed:
      - Asociación a proyectos de construcción
      - Límites de saldo por proyecto
      - Campos específicos de construcción

  - component_id: MGN-010-TRANSACTIONS
    component_name: Registro de Transacciones Bancarias
    core_module: MGN-010
    reuse_percentage: 90
    customization_needed:
      - Clasificación por tipo de gasto de obra

  - component_id: MGN-010-RECONCILIATION
    component_name: Motor de Conciliación Bancaria
    core_module: MGN-010
    reuse_percentage: 85
    customization_needed:
      - Reglas de matching específicas
      - Integración con estimaciones

  - component_id: MGN-010-PAYMENTS
    component_name: Gestión de Pagos
    core_module: MGN-010
    reuse_percentage: 75
    customization_needed:
      - Workflow de aprobación por proyecto
      - Integración con retenciones de obra

  # Módulo de Notificaciones
  - component_id: MGN-008-ALERTS
    component_name: Sistema de Alertas
    core_module: MGN-008
    reuse_percentage: 100
    customization_needed: []

  # Módulo de Reportes
  - component_id: MGN-009-FINANCIAL-REPORTS
    component_name: Reportes Financieros
    core_module: MGN-009
    reuse_percentage: 70
    customization_needed:
      - Reportes específicos de flujo de obra
      - Dashboards de tesorería por proyecto

  # Módulo de Catálogos
  - component_id: MGN-005-BANKS
    component_name: Catálogo de Bancos
    core_module: MGN-005
    reuse_percentage: 100
    customization_needed: []

  - component_id: MGN-005-CURRENCIES
    component_name: Catálogo de Monedas
    core_module: MGN-005
    reuse_percentage: 100
    customization_needed: []

  # Módulo de Auditoría
  - component_id: MGN-007-AUDIT-LOG
    component_name: Registro de Auditoría
    core_module: MGN-007
    reuse_percentage: 100
    customization_needed: []

  # Módulo RBAC
  - component_id: MGN-002-WORKFLOWS
    component_name: Workflows de Aprobación
    core_module: MGN-002
    reuse_percentage: 90
    customization_needed:
      - Niveles de aprobación por monto en construcción

  # Módulo Multi-Tenancy
  - component_id: MGN-003-TENANT-ISOLATION
    component_name: Aislamiento de Datos
    core_module: MGN-003
    reuse_percentage: 100
    customization_needed: []

  # Módulo Multi-Empresa
  - component_id: MGN-004-COMPANY-CONTEXT
    component_name: Contexto de Empresa
    core_module: MGN-004
    reuse_percentage: 100
    customization_needed: []

# ============================================================================
# COMPONENTES CUSTOM
# ============================================================================

custom_components:

  - component_id: MAE-010-CASHFLOW-ENGINE
    component_name: Motor de Proyección de Flujo de Efectivo
    description: Componente específico para proyectar flujo basado en cronograma de obra
    complexity: VERY_HIGH
    estimated_effort: 21 story_points
    technologies:
      - NestJS
      - Python (Analytics)
      - PostgreSQL
    integration_points:
      - MAE-007  # Presupuestos
      - MAE-008  # Estimaciones
      - MAE-003  # Cronograma

  - component_id: MAE-010-CASHFLOW-UI
    component_name: UI de Visualización de Flujo de Efectivo
    description: Interfaz especializada para análisis de flujo de construcción
    complexity: HIGH
    estimated_effort: 13 story_points
    technologies:
      - Angular
      - Chart.js
      - D3.js
    integration_points:
      - MAE-010-CASHFLOW-ENGINE

  - component_id: MAE-010-VARIANCE-ANALYSIS
    component_name: Análisis de Variaciones
    description: Componente para análisis de desviaciones real vs proyectado
    complexity: MEDIUM
    estimated_effort: 8 story_points
    technologies:
      - NestJS
      - Python (Pandas)
    integration_points:
      - MAE-010-CASHFLOW-ENGINE

  - component_id: MAE-010-SCENARIO-SIMULATOR
    component_name: Simulador de Escenarios
    description: Herramienta para simular diferentes escenarios de flujo
    complexity: MEDIUM
    estimated_effort: 8 story_points
    technologies:
      - NestJS
      - Angular
    integration_points:
      - MAE-010-CASHFLOW-ENGINE

  - component_id: MAE-010-PROJECT-ACCOUNTS
    component_name: Extensión de Cuentas por Proyecto
    description: Lógica específica para manejo de cuentas por proyecto
    complexity: LOW
    estimated_effort: 5 story_points
    technologies:
      - NestJS
      - PostgreSQL
    integration_points:
      - MGN-010  # Financiero Core
      - MAE-001  # Proyectos

# ============================================================================
# PLAN DE IMPLEMENTACIÓN
# ============================================================================

implementation_plan:

  phases:
    - phase: 1
      name: Configuración Base
      duration_weeks: 2
      requirements:
        - RF-MAE-010-001  # Gestión de Bancos
      components:
        - MAE-010-PROJECT-ACCOUNTS
        - MGN-010-ACCOUNTS (extensión)
      story_points: 18

    - phase: 2
      name: Pagos y Transacciones
      duration_weeks: 2
      requirements:
        - RF-MAE-010-004  # Pagos Programados
      components:
        - MGN-010-PAYMENTS (extensión)
        - MGN-002-WORKFLOWS (configuración)
      story_points: 21

    - phase: 3
      name: Conciliación Bancaria
      duration_weeks: 2
      requirements:
        - RF-MAE-010-003  # Conciliaciones Bancarias
      components:
        - MGN-010-RECONCILIATION (extensión)
      story_points: 21

    - phase: 4
      name: Flujo de Efectivo
      duration_weeks: 4
      requirements:
        - RF-MAE-010-002  # Flujo de Efectivo
      components:
        - MAE-010-CASHFLOW-ENGINE
        - MAE-010-CASHFLOW-UI
        - MAE-010-VARIANCE-ANALYSIS
        - MAE-010-SCENARIO-SIMULATOR
      story_points: 34

  total_duration_weeks: 10
  total_story_points: 94
  estimated_team_size: 4

  milestones:
    - milestone: M1
      name: Gestión Básica de Tesorería
      week: 4
      deliverables:
        - Gestión de cuentas bancarias por proyecto
        - Pagos programados funcionales
        - Integraciones con Core completadas

    - milestone: M2
      name: Conciliación y Control
      week: 6
      deliverables:
        - Conciliación bancaria automática y manual
        - Cierre de períodos
        - Reportes de conciliación

    - milestone: M3
      name: Análisis de Flujo de Efectivo
      week: 10
      deliverables:
        - Proyección de flujo por proyecto
        - Análisis de variaciones
        - Simulador de escenarios
        - Dashboard completo de tesorería

# ============================================================================
# RIESGOS Y MITIGACIONES
# ============================================================================

risks:
  - id: RISK-001
    description: Complejidad del motor de proyección de flujo
    probability: MEDIUM
    impact: HIGH
    mitigation: |
      - Validar algoritmos con casos reales antes de implementar
      - Considerar solución en fases incrementales
      - Consultar con expertos en construcción

  - id: RISK-002
    description: Integración con múltiples módulos (presupuesto, estimaciones)
    probability: MEDIUM
    impact: MEDIUM
    mitigation: |
      - Definir contratos de integración claros
      - Implementar mocks para desarrollo paralelo
      - Pruebas de integración continuas

  - id: RISK-003
    description: Precisión de las proyecciones de flujo
    probability: HIGH
    impact: HIGH
    mitigation: |
      - Calibración con datos históricos
      - Ajustes manuales permitidos
      - Múltiples escenarios (optimista/realista/pesimista)

  - id: RISK-004
    description: Importación de estados de cuenta en múltiples formatos
    probability: LOW
    impact: MEDIUM
    mitigation: |
      - Comenzar con formatos más comunes (XML, CSV)
      - Validación exhaustiva de parsers
      - Manual de formatos soportados

# ============================================================================
# MÉTRICAS DE ÉXITO
# ============================================================================

success_metrics:

  technical:
    - metric: Cobertura de pruebas
      target: ">= 80%"

    - metric: Tiempo de respuesta API
      target: "< 200ms (p95)"

    - metric: Disponibilidad del servicio
      target: ">= 99.5%"

    - metric: Tasa de conciliación automática
      target: ">= 85%"

  business:
    - metric: Precisión de proyección de flujo
      target: "Desviación < 10% vs real"

    - metric: Tiempo de cierre de conciliación
      target: "< 2 horas por período"

    - metric: Adopción por usuarios
      target: ">= 90% tesoreros activos"

    - metric: Reducción de errores manuales
      target: ">= 70%"

  reuse:
    - metric: Porcentaje de código reutilizado
      target: ">= 70%"

    - metric: Componentes del core utilizados
      target: ">= 10"

    - metric: Reducción de tiempo de desarrollo
      target: ">= 60%"

# ============================================================================
# APROBACIONES Y CONTROL DE VERSIONES
# ============================================================================

approvals:
  - role: Product Owner
    name: Pendiente
    date: null
    status: pending

  - role: Arquitecto de Software
    name: Pendiente
    date: null
    status: pending

  - role: Tech Lead
    name: Pendiente
    date: null
    status: pending

version_history:
  - version: 1.0.0
    date: 2025-12-06
    author: Sistema
    changes:
      - Creación inicial del documento
      - Definición de 4 requerimientos funcionales
      - Especificación de componentes reutilizados (70%)
      - Plan de implementación en 4 fases
