Sistema NEXUS v3.4 migrado con: Estructura principal: - core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles) - core/catalog: Catalogo de funcionalidades reutilizables - shared/knowledge-base: Base de conocimiento compartida - devtools/scripts: Herramientas de desarrollo - control-plane/registries: Control de servicios y CI/CD - orchestration/: Configuracion de orquestacion de agentes Proyectos incluidos (11): - gamilit (submodule -> GitHub) - trading-platform (OrbiquanTIA) - erp-suite con 5 verticales: - erp-core, construccion, vidrio-templado - mecanicas-diesel, retail, clinicas - betting-analytics - inmobiliaria-analytics - platform_marketing_content - pos-micro, erp-basico Configuracion: - .gitignore completo para Node.js/Python/Docker - gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git) - Sistema de puertos estandarizado (3005-3199) Generated with NEXUS v3.4 Migration System EPIC-010: Configuracion Git y Repositorios
817 lines
30 KiB
YAML
817 lines
30 KiB
YAML
# TRACEABILITY.yml - MAE-016: Reportes y BI
|
|
# Matriz de trazabilidad: Documentacion -> Codigo
|
|
# Ubicacion: docs/02-definicion-modulos/MAE-016-reportes/implementacion/
|
|
|
|
epic_code: MAE-016
|
|
epic_name: Reportes y BI
|
|
phase: 2
|
|
phase_name: Modulos Avanzados
|
|
story_points: 28
|
|
status: rf_documented
|
|
reused_from_core: 75%
|
|
core_module: MGN-009
|
|
|
|
# =============================================================================
|
|
# DOCUMENTACION
|
|
# =============================================================================
|
|
|
|
documentation:
|
|
|
|
requirements:
|
|
- id: RF-BI-001
|
|
title: Dashboards Ejecutivos
|
|
file: ../requerimientos/RF-BI-001.md
|
|
priority: P0
|
|
story_points: 8
|
|
status: documented
|
|
reused_from: MGN-009/RF-REPORT-002
|
|
reuse_percentage: 70%
|
|
adaptations:
|
|
- "Dashboards especificos para construccion"
|
|
- "KPIs de obras: avance fisico, financiero, rentabilidad"
|
|
- "Widgets de alertas de desviaciones presupuestarias"
|
|
- "Graficos de flujo de caja por proyecto"
|
|
- "Indicadores de productividad de cuadrillas"
|
|
traces_to:
|
|
tables: [dashboards, dashboard_widgets, construction_kpis]
|
|
services: [DashboardsService, WidgetService, ConstructionKPIService]
|
|
endpoints: [GET /api/v1/bi/dashboards, POST /api/v1/bi/dashboards, GET /api/v1/bi/dashboards/:id/data]
|
|
|
|
- id: RF-BI-002
|
|
title: Reportes Operativos
|
|
file: ../requerimientos/RF-BI-002.md
|
|
priority: P0
|
|
story_points: 8
|
|
status: documented
|
|
reused_from: MGN-009/RF-REPORT-001
|
|
reuse_percentage: 80%
|
|
adaptations:
|
|
- "Reportes de avance fisico y financiero"
|
|
- "Reportes de consumo de recursos por obra"
|
|
- "Reportes de productividad de personal"
|
|
- "Reportes de estimaciones y facturacion"
|
|
- "Reportes de incidencias y bitacora"
|
|
- "Reportes de compras e inventarios"
|
|
traces_to:
|
|
tables: [report_definitions, report_executions, construction_report_templates]
|
|
services: [ReportsService, ExportService, ConstructionReportService]
|
|
endpoints: [GET /api/v1/bi/reports, POST /api/v1/bi/reports/:id/execute, GET /api/v1/bi/reports/:id/export/:format]
|
|
|
|
- id: RF-BI-003
|
|
title: Exportacion de Datos
|
|
file: ../requerimientos/RF-BI-003.md
|
|
priority: P1
|
|
story_points: 6
|
|
status: documented
|
|
reused_from: MGN-009/RF-REPORT-001
|
|
reuse_percentage: 90%
|
|
adaptations:
|
|
- "Exportacion a Excel con formato especifico de construccion"
|
|
- "Exportacion de estimaciones en formato CFE/SECODAM"
|
|
- "Exportacion de bitacora en PDF firmado"
|
|
- "Exportacion masiva de fotografias de obra"
|
|
traces_to:
|
|
tables: [export_templates, export_history]
|
|
services: [ExportService, PdfGeneratorService, ExcelGeneratorService]
|
|
endpoints: [POST /api/v1/bi/export, GET /api/v1/bi/export/:id/download, GET /api/v1/bi/export/templates]
|
|
|
|
- id: RF-BI-004
|
|
title: Indicadores KPI
|
|
file: ../requerimientos/RF-BI-004.md
|
|
priority: P0
|
|
story_points: 6
|
|
status: documented
|
|
reused_from: null
|
|
reuse_percentage: 0%
|
|
adaptations:
|
|
- "KPIs especificos de construccion (nuevo desarrollo)"
|
|
- "Indice de Desempeno de Costos (CPI)"
|
|
- "Indice de Desempeno del Cronograma (SPI)"
|
|
- "Rentabilidad por proyecto"
|
|
- "Productividad de mano de obra"
|
|
- "Tasa de consumo de materiales vs presupuestado"
|
|
- "Indice de calidad (NC/conformes)"
|
|
traces_to:
|
|
tables: [construction_kpis, kpi_definitions, kpi_history]
|
|
services: [KPIService, ConstructionMetricsService, EVMService]
|
|
endpoints: [GET /api/v1/bi/kpis, GET /api/v1/bi/kpis/:projectId, POST /api/v1/bi/kpis/calculate]
|
|
|
|
specifications: []
|
|
# Pendiente de documentacion
|
|
|
|
user_stories: []
|
|
# Pendiente de documentacion
|
|
|
|
# =============================================================================
|
|
# IMPLEMENTACION
|
|
# =============================================================================
|
|
|
|
implementation:
|
|
|
|
database:
|
|
schema: construction_bi
|
|
path: apps/database/ddl/schemas/construction_bi/
|
|
status: pending
|
|
|
|
tables:
|
|
# Tablas reutilizadas del core (MGN-009)
|
|
- name: dashboards
|
|
file: apps/database/ddl/schemas/core_reports/tables/dashboards.sql
|
|
status: reused
|
|
requirement: RF-BI-001
|
|
reused_from: MGN-009
|
|
adaptations:
|
|
- "Agregar campo construction_context JSONB"
|
|
- "Agregar campo project_filter UUID[]"
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: tenant_id, type: UUID, fk: tenants}
|
|
- {name: user_id, type: UUID, fk: users}
|
|
- {name: name, type: VARCHAR(255)}
|
|
- {name: description, type: TEXT}
|
|
- {name: layout, type: JSONB}
|
|
- {name: construction_context, type: JSONB, note: "Nuevo campo"}
|
|
- {name: project_filter, type: UUID[], note: "Nuevo campo"}
|
|
- {name: refresh_interval, type: INTEGER}
|
|
- {name: is_default, type: BOOLEAN, default: false}
|
|
- {name: is_shared, type: BOOLEAN, default: false}
|
|
- {name: shared_with, type: JSONB}
|
|
- {name: created_at, type: TIMESTAMPTZ}
|
|
- {name: updated_at, type: TIMESTAMPTZ}
|
|
|
|
- name: dashboard_widgets
|
|
file: apps/database/ddl/schemas/core_reports/tables/dashboard_widgets.sql
|
|
status: reused
|
|
requirement: RF-BI-001
|
|
reused_from: MGN-009
|
|
adaptations:
|
|
- "Agregar widget_types especificos de construccion"
|
|
|
|
- name: report_definitions
|
|
file: apps/database/ddl/schemas/core_reports/tables/report_definitions.sql
|
|
status: reused
|
|
requirement: RF-BI-002
|
|
reused_from: MGN-009
|
|
adaptations:
|
|
- "Agregar templates especificos de construccion"
|
|
|
|
- name: report_executions
|
|
file: apps/database/ddl/schemas/core_reports/tables/report_executions.sql
|
|
status: reused
|
|
requirement: RF-BI-002
|
|
reused_from: MGN-009
|
|
adaptations: []
|
|
|
|
# Tablas nuevas especificas de construccion
|
|
- name: construction_kpis
|
|
file: apps/database/ddl/schemas/construction_bi/tables/construction_kpis.sql
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: tenant_id, type: UUID, fk: tenants}
|
|
- {name: project_id, type: UUID, fk: projects}
|
|
- {name: kpi_code, type: VARCHAR(50), note: "CPI, SPI, etc"}
|
|
- {name: kpi_name, type: VARCHAR(255)}
|
|
- {name: kpi_value, type: DECIMAL(10,4)}
|
|
- {name: target_value, type: DECIMAL(10,4)}
|
|
- {name: threshold_warning, type: DECIMAL(10,4)}
|
|
- {name: threshold_critical, type: DECIMAL(10,4)}
|
|
- {name: status, type: VARCHAR(20), note: "ok, warning, critical"}
|
|
- {name: calculation_data, type: JSONB}
|
|
- {name: period_start, type: DATE}
|
|
- {name: period_end, type: DATE}
|
|
- {name: calculated_at, type: TIMESTAMPTZ}
|
|
- {name: calculated_by, type: UUID, fk: users}
|
|
|
|
- name: kpi_definitions
|
|
file: apps/database/ddl/schemas/construction_bi/tables/kpi_definitions.sql
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: code, type: VARCHAR(50), unique: true}
|
|
- {name: name, type: VARCHAR(255)}
|
|
- {name: description, type: TEXT}
|
|
- {name: formula, type: TEXT}
|
|
- {name: data_sources, type: JSONB}
|
|
- {name: calculation_frequency, type: VARCHAR(20)}
|
|
- {name: target_value, type: DECIMAL(10,4)}
|
|
- {name: threshold_warning, type: DECIMAL(10,4)}
|
|
- {name: threshold_critical, type: DECIMAL(10,4)}
|
|
- {name: unit, type: VARCHAR(50)}
|
|
- {name: is_active, type: BOOLEAN, default: true}
|
|
- {name: created_at, type: TIMESTAMPTZ}
|
|
- {name: updated_at, type: TIMESTAMPTZ}
|
|
|
|
- name: kpi_history
|
|
file: apps/database/ddl/schemas/construction_bi/tables/kpi_history.sql
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: kpi_id, type: UUID, fk: construction_kpis}
|
|
- {name: project_id, type: UUID, fk: projects}
|
|
- {name: kpi_value, type: DECIMAL(10,4)}
|
|
- {name: status, type: VARCHAR(20)}
|
|
- {name: recorded_at, type: TIMESTAMPTZ}
|
|
|
|
- name: construction_report_templates
|
|
file: apps/database/ddl/schemas/construction_bi/tables/construction_report_templates.sql
|
|
status: pending
|
|
requirement: RF-BI-002
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: tenant_id, type: UUID, fk: tenants}
|
|
- {name: code, type: VARCHAR(100), unique: true}
|
|
- {name: name, type: VARCHAR(255)}
|
|
- {name: template_type, type: VARCHAR(50), note: "estimacion, bitacora, avance"}
|
|
- {name: template_file, type: TEXT, note: "Path o contenido del template"}
|
|
- {name: format, type: VARCHAR(20), note: "PDF, XLSX, DOCX"}
|
|
- {name: parameters, type: JSONB}
|
|
- {name: header_config, type: JSONB}
|
|
- {name: footer_config, type: JSONB}
|
|
- {name: is_system, type: BOOLEAN, default: false}
|
|
- {name: is_active, type: BOOLEAN, default: true}
|
|
- {name: created_at, type: TIMESTAMPTZ}
|
|
- {name: updated_at, type: TIMESTAMPTZ}
|
|
|
|
- name: export_templates
|
|
file: apps/database/ddl/schemas/construction_bi/tables/export_templates.sql
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: tenant_id, type: UUID, fk: tenants}
|
|
- {name: name, type: VARCHAR(255)}
|
|
- {name: export_type, type: VARCHAR(50), note: "CFE, SECODAM, custom"}
|
|
- {name: format, type: VARCHAR(20), note: "XLSX, PDF"}
|
|
- {name: template_config, type: JSONB}
|
|
- {name: columns_mapping, type: JSONB}
|
|
- {name: is_active, type: BOOLEAN, default: true}
|
|
- {name: created_at, type: TIMESTAMPTZ}
|
|
|
|
- name: export_history
|
|
file: apps/database/ddl/schemas/construction_bi/tables/export_history.sql
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
columns:
|
|
- {name: id, type: UUID, pk: true}
|
|
- {name: tenant_id, type: UUID, fk: tenants}
|
|
- {name: template_id, type: UUID, fk: export_templates, nullable: true}
|
|
- {name: user_id, type: UUID, fk: users}
|
|
- {name: entity_type, type: VARCHAR(50), note: "estimacion, bitacora, etc"}
|
|
- {name: entity_id, type: UUID}
|
|
- {name: file_name, type: VARCHAR(255)}
|
|
- {name: file_url, type: TEXT}
|
|
- {name: file_format, type: VARCHAR(20)}
|
|
- {name: file_size, type: BIGINT}
|
|
- {name: status, type: VARCHAR(20)}
|
|
- {name: error, type: TEXT, nullable: true}
|
|
- {name: created_at, type: TIMESTAMPTZ}
|
|
|
|
backend:
|
|
module: construction-bi
|
|
path: apps/backend/src/modules/construction-bi/
|
|
framework: NestJS
|
|
status: pending
|
|
|
|
entities:
|
|
- name: ConstructionKPI
|
|
file: apps/backend/src/modules/construction-bi/entities/construction-kpi.entity.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
|
|
- name: KPIDefinition
|
|
file: apps/backend/src/modules/construction-bi/entities/kpi-definition.entity.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
|
|
- name: KPIHistory
|
|
file: apps/backend/src/modules/construction-bi/entities/kpi-history.entity.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
|
|
- name: ConstructionReportTemplate
|
|
file: apps/backend/src/modules/construction-bi/entities/construction-report-template.entity.ts
|
|
status: pending
|
|
requirement: RF-BI-002
|
|
|
|
- name: ExportTemplate
|
|
file: apps/backend/src/modules/construction-bi/entities/export-template.entity.ts
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
|
|
services:
|
|
# Servicios reutilizados del core (adaptados)
|
|
- name: DashboardsService
|
|
file: apps/backend/src/modules/construction-bi/dashboards.service.ts
|
|
status: pending
|
|
requirement: RF-BI-001
|
|
reused_from: MGN-009/DashboardsService
|
|
reuse_percentage: 70%
|
|
adaptations:
|
|
- "Agregar metodos para dashboards de construccion"
|
|
- "Integracion con KPIs de obra"
|
|
methods:
|
|
- {name: create, description: Crear dashboard}
|
|
- {name: update, description: Actualizar dashboard}
|
|
- {name: getData, description: Obtener datos de widgets}
|
|
- {name: getConstructionDashboard, description: Dashboard especifico de construccion}
|
|
- {name: getProjectKPIs, description: Obtener KPIs de proyecto}
|
|
|
|
- name: ReportsService
|
|
file: apps/backend/src/modules/construction-bi/reports.service.ts
|
|
status: pending
|
|
requirement: RF-BI-002
|
|
reused_from: MGN-009/ReportsService
|
|
reuse_percentage: 80%
|
|
adaptations:
|
|
- "Agregar reportes especificos de construccion"
|
|
methods:
|
|
- {name: execute, description: Ejecutar reporte}
|
|
- {name: getAvailable, description: Listar reportes disponibles}
|
|
- {name: getExecution, description: Obtener resultado de ejecucion}
|
|
- {name: executeConstructionReport, description: Ejecutar reporte de construccion}
|
|
- {name: getEstimacionReport, description: Reporte de estimacion}
|
|
- {name: getBitacoraReport, description: Reporte de bitacora}
|
|
- {name: getAvanceFisicoReport, description: Reporte de avance fisico}
|
|
|
|
- name: ExportService
|
|
file: apps/backend/src/modules/construction-bi/export.service.ts
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
reused_from: MGN-009/ExportService
|
|
reuse_percentage: 85%
|
|
adaptations:
|
|
- "Formatos especificos de construccion"
|
|
methods:
|
|
- {name: toPdf, description: Exportar a PDF}
|
|
- {name: toExcel, description: Exportar a Excel}
|
|
- {name: toCsv, description: Exportar a CSV}
|
|
- {name: exportEstimacionCFE, description: Exportar estimacion formato CFE}
|
|
- {name: exportBitacoraFirmada, description: Exportar bitacora con firma digital}
|
|
- {name: exportFotosObra, description: Exportacion masiva de fotos}
|
|
|
|
# Servicios nuevos especificos
|
|
- name: KPIService
|
|
file: apps/backend/src/modules/construction-bi/kpi.service.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
methods:
|
|
- {name: calculateKPI, description: Calcular KPI especifico}
|
|
- {name: calculateAllProjectKPIs, description: Calcular todos los KPIs de un proyecto}
|
|
- {name: getKPIHistory, description: Obtener historial de KPI}
|
|
- {name: getKPIDefinitions, description: Listar definiciones de KPIs}
|
|
- {name: createKPIDefinition, description: Crear definicion de KPI}
|
|
|
|
- name: ConstructionMetricsService
|
|
file: apps/backend/src/modules/construction-bi/construction-metrics.service.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
methods:
|
|
- {name: getProjectMetrics, description: Obtener metricas de proyecto}
|
|
- {name: getResourceProductivity, description: Productividad de recursos}
|
|
- {name: getMaterialConsumption, description: Consumo de materiales}
|
|
- {name: getLaborProductivity, description: Productividad de mano de obra}
|
|
|
|
- name: EVMService
|
|
file: apps/backend/src/modules/construction-bi/evm.service.ts
|
|
status: pending
|
|
requirement: RF-BI-004
|
|
note: "Earned Value Management - Nuevo servicio"
|
|
methods:
|
|
- {name: calculateCPI, description: Calcular Cost Performance Index}
|
|
- {name: calculateSPI, description: Calcular Schedule Performance Index}
|
|
- {name: calculateEAC, description: Calcular Estimate at Completion}
|
|
- {name: calculateETC, description: Calcular Estimate to Complete}
|
|
- {name: getEVMReport, description: Reporte completo de EVM}
|
|
|
|
- name: ConstructionReportService
|
|
file: apps/backend/src/modules/construction-bi/construction-report.service.ts
|
|
status: pending
|
|
requirement: RF-BI-002
|
|
methods:
|
|
- {name: getReportTemplates, description: Listar templates de reportes}
|
|
- {name: generateFromTemplate, description: Generar reporte desde template}
|
|
- {name: createCustomTemplate, description: Crear template personalizado}
|
|
|
|
- name: PdfGeneratorService
|
|
file: apps/backend/src/modules/construction-bi/pdf-generator.service.ts
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
methods:
|
|
- {name: generatePdf, description: Generar PDF generico}
|
|
- {name: generateEstimacionPdf, description: Generar PDF de estimacion}
|
|
- {name: generateBitacoraPdf, description: Generar PDF de bitacora}
|
|
- {name: addDigitalSignature, description: Agregar firma digital al PDF}
|
|
|
|
- name: ExcelGeneratorService
|
|
file: apps/backend/src/modules/construction-bi/excel-generator.service.ts
|
|
status: pending
|
|
requirement: RF-BI-003
|
|
methods:
|
|
- {name: generateExcel, description: Generar Excel generico}
|
|
- {name: generateEstimacionExcel, description: Generar Excel de estimacion}
|
|
- {name: applyTemplate, description: Aplicar template de Excel}
|
|
|
|
controllers:
|
|
- name: ConstructionBIController
|
|
file: apps/backend/src/modules/construction-bi/construction-bi.controller.ts
|
|
status: pending
|
|
endpoints:
|
|
# Dashboards
|
|
- method: GET
|
|
path: /api/v1/bi/dashboards
|
|
description: Listar dashboards
|
|
requirement: RF-BI-001
|
|
|
|
- method: POST
|
|
path: /api/v1/bi/dashboards
|
|
description: Crear dashboard
|
|
requirement: RF-BI-001
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/dashboards/:id/data
|
|
description: Obtener datos de dashboard
|
|
requirement: RF-BI-001
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/dashboards/construction/:projectId
|
|
description: Dashboard de construccion por proyecto
|
|
requirement: RF-BI-001
|
|
|
|
# Reportes
|
|
- method: GET
|
|
path: /api/v1/bi/reports
|
|
description: Listar reportes disponibles
|
|
requirement: RF-BI-002
|
|
|
|
- method: POST
|
|
path: /api/v1/bi/reports/:id/execute
|
|
description: Ejecutar reporte
|
|
requirement: RF-BI-002
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/reports/:id/export/:format
|
|
description: Exportar reporte
|
|
requirement: RF-BI-002
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/reports/estimacion/:estimacionId
|
|
description: Reporte de estimacion
|
|
requirement: RF-BI-002
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/reports/bitacora/:obraId
|
|
description: Reporte de bitacora
|
|
requirement: RF-BI-002
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/reports/avance-fisico/:obraId
|
|
description: Reporte de avance fisico
|
|
requirement: RF-BI-002
|
|
|
|
# Exportacion
|
|
- method: POST
|
|
path: /api/v1/bi/export
|
|
description: Crear exportacion
|
|
requirement: RF-BI-003
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/export/:id/download
|
|
description: Descargar archivo exportado
|
|
requirement: RF-BI-003
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/export/templates
|
|
description: Listar templates de exportacion
|
|
requirement: RF-BI-003
|
|
|
|
- method: POST
|
|
path: /api/v1/bi/export/estimacion-cfe
|
|
description: Exportar estimacion formato CFE
|
|
requirement: RF-BI-003
|
|
|
|
- method: POST
|
|
path: /api/v1/bi/export/bitacora-firmada
|
|
description: Exportar bitacora con firma digital
|
|
requirement: RF-BI-003
|
|
|
|
# KPIs
|
|
- method: GET
|
|
path: /api/v1/bi/kpis
|
|
description: Listar definiciones de KPIs
|
|
requirement: RF-BI-004
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/kpis/:projectId
|
|
description: Obtener KPIs de proyecto
|
|
requirement: RF-BI-004
|
|
|
|
- method: POST
|
|
path: /api/v1/bi/kpis/calculate
|
|
description: Calcular KPIs de proyecto
|
|
requirement: RF-BI-004
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/kpis/:projectId/history
|
|
description: Historial de KPIs
|
|
requirement: RF-BI-004
|
|
|
|
- method: GET
|
|
path: /api/v1/bi/kpis/:projectId/evm
|
|
description: Earned Value Management
|
|
requirement: RF-BI-004
|
|
|
|
frontend:
|
|
module: construction-bi
|
|
path: apps/frontend/src/features/construction-bi/
|
|
framework: React
|
|
status: pending
|
|
|
|
components:
|
|
# Dashboards
|
|
- name: DashboardBuilder
|
|
file: apps/frontend/src/features/construction-bi/components/DashboardBuilder.tsx
|
|
requirement: RF-BI-001
|
|
reused_from: MGN-009
|
|
reuse_percentage: 60%
|
|
|
|
- name: ConstructionDashboard
|
|
file: apps/frontend/src/features/construction-bi/components/ConstructionDashboard.tsx
|
|
requirement: RF-BI-001
|
|
note: "Nuevo componente especifico"
|
|
|
|
- name: KPIWidget
|
|
file: apps/frontend/src/features/construction-bi/components/KPIWidget.tsx
|
|
requirement: RF-BI-001
|
|
note: "Widget para mostrar KPIs"
|
|
|
|
- name: ProjectMetricsWidget
|
|
file: apps/frontend/src/features/construction-bi/components/ProjectMetricsWidget.tsx
|
|
requirement: RF-BI-001
|
|
|
|
- name: CashFlowWidget
|
|
file: apps/frontend/src/features/construction-bi/components/CashFlowWidget.tsx
|
|
requirement: RF-BI-001
|
|
|
|
# Reportes
|
|
- name: ReportGenerator
|
|
file: apps/frontend/src/features/construction-bi/components/ReportGenerator.tsx
|
|
requirement: RF-BI-002
|
|
reused_from: MGN-009
|
|
reuse_percentage: 75%
|
|
|
|
- name: ReportTemplateSelector
|
|
file: apps/frontend/src/features/construction-bi/components/ReportTemplateSelector.tsx
|
|
requirement: RF-BI-002
|
|
|
|
- name: EstimacionReportViewer
|
|
file: apps/frontend/src/features/construction-bi/components/EstimacionReportViewer.tsx
|
|
requirement: RF-BI-002
|
|
|
|
- name: BitacoraReportViewer
|
|
file: apps/frontend/src/features/construction-bi/components/BitacoraReportViewer.tsx
|
|
requirement: RF-BI-002
|
|
|
|
# Exportacion
|
|
- name: ExportDialog
|
|
file: apps/frontend/src/features/construction-bi/components/ExportDialog.tsx
|
|
requirement: RF-BI-003
|
|
reused_from: MGN-009
|
|
reuse_percentage: 80%
|
|
|
|
- name: ExportTemplateManager
|
|
file: apps/frontend/src/features/construction-bi/components/ExportTemplateManager.tsx
|
|
requirement: RF-BI-003
|
|
|
|
- name: ExportHistory
|
|
file: apps/frontend/src/features/construction-bi/components/ExportHistory.tsx
|
|
requirement: RF-BI-003
|
|
|
|
# KPIs
|
|
- name: KPIDashboard
|
|
file: apps/frontend/src/features/construction-bi/components/KPIDashboard.tsx
|
|
requirement: RF-BI-004
|
|
|
|
- name: KPIChart
|
|
file: apps/frontend/src/features/construction-bi/components/KPIChart.tsx
|
|
requirement: RF-BI-004
|
|
|
|
- name: EVMChart
|
|
file: apps/frontend/src/features/construction-bi/components/EVMChart.tsx
|
|
requirement: RF-BI-004
|
|
|
|
- name: KPIHistoryChart
|
|
file: apps/frontend/src/features/construction-bi/components/KPIHistoryChart.tsx
|
|
requirement: RF-BI-004
|
|
|
|
- name: KPIDefinitionManager
|
|
file: apps/frontend/src/features/construction-bi/components/KPIDefinitionManager.tsx
|
|
requirement: RF-BI-004
|
|
|
|
# =============================================================================
|
|
# DEPENDENCIAS
|
|
# =============================================================================
|
|
|
|
dependencies:
|
|
depends_on:
|
|
# Dependencias del core
|
|
- module: MGN-001
|
|
type: hard
|
|
reason: Autenticacion requerida
|
|
- module: MGN-004
|
|
type: hard
|
|
reason: Aislamiento por tenant
|
|
- module: MGN-009
|
|
type: hard
|
|
reason: Reutilizacion de infraestructura de reportes (75%)
|
|
|
|
# Dependencias de verticales construccion
|
|
- module: MAI-001
|
|
type: hard
|
|
reason: Datos de proyectos de construccion
|
|
- module: MAI-002
|
|
type: hard
|
|
reason: Datos de planificacion y presupuestos
|
|
- module: MAI-004
|
|
type: hard
|
|
reason: Datos de compras e inventarios
|
|
- module: MAI-005
|
|
type: hard
|
|
reason: Datos de avances fisicos y financieros
|
|
|
|
required_by: []
|
|
|
|
# =============================================================================
|
|
# INTEGRACIONES
|
|
# =============================================================================
|
|
|
|
integrations:
|
|
core_modules:
|
|
- code: MGN-009
|
|
name: Reports
|
|
reuse_percentage: 75%
|
|
components_reused:
|
|
- DashboardsService
|
|
- ReportsService
|
|
- ExportService
|
|
- Dashboard UI components
|
|
adaptations:
|
|
- "Dashboards especificos de construccion"
|
|
- "Reportes especificos de obra"
|
|
- "Templates de exportacion CFE/SECODAM"
|
|
|
|
construction_modules:
|
|
- code: MAI-001
|
|
name: Fundamentos
|
|
integration: Datos de proyectos y usuarios
|
|
- code: MAI-002
|
|
name: Planificacion de Obras
|
|
integration: Presupuestos, cronogramas, WBS
|
|
- code: MAI-004
|
|
name: Compras e Inventarios
|
|
integration: Datos de consumo de materiales
|
|
- code: MAI-005
|
|
name: Control de Obra
|
|
integration: Avances fisicos, financieros, bitacora
|
|
|
|
# =============================================================================
|
|
# METRICAS
|
|
# =============================================================================
|
|
|
|
metrics:
|
|
story_points:
|
|
estimated: 28
|
|
actual: null
|
|
saved_by_reuse: 12
|
|
note: "75% reutilizado de MGN-009 ahorra ~12 SP"
|
|
|
|
reuse_metrics:
|
|
from_core: 75%
|
|
core_module: MGN-009
|
|
components_reused: 8
|
|
components_new: 7
|
|
components_adapted: 5
|
|
lines_reused: ~2500
|
|
lines_new: ~1200
|
|
|
|
documentation:
|
|
requirements: 4
|
|
specifications: 0
|
|
user_stories: 0
|
|
|
|
files:
|
|
database: 8
|
|
backend: 15
|
|
frontend: 15
|
|
total: 38
|
|
|
|
# =============================================================================
|
|
# REUTILIZACION DE MGN-009
|
|
# =============================================================================
|
|
|
|
reuse_details:
|
|
database:
|
|
reused_tables:
|
|
- name: dashboards
|
|
percentage: 85%
|
|
adaptations: ["Agregar campos de construccion"]
|
|
- name: dashboard_widgets
|
|
percentage: 90%
|
|
adaptations: ["Widgets especificos"]
|
|
- name: report_definitions
|
|
percentage: 80%
|
|
adaptations: ["Templates de construccion"]
|
|
- name: report_executions
|
|
percentage: 100%
|
|
adaptations: []
|
|
|
|
new_tables:
|
|
- construction_kpis
|
|
- kpi_definitions
|
|
- kpi_history
|
|
- construction_report_templates
|
|
- export_templates
|
|
- export_history
|
|
|
|
backend:
|
|
reused_services:
|
|
- name: DashboardsService
|
|
percentage: 70%
|
|
adaptations: ["Metodos especificos de construccion"]
|
|
- name: ReportsService
|
|
percentage: 80%
|
|
adaptations: ["Reportes de obra"]
|
|
- name: ExportService
|
|
percentage: 85%
|
|
adaptations: ["Formatos CFE/SECODAM"]
|
|
|
|
new_services:
|
|
- KPIService
|
|
- ConstructionMetricsService
|
|
- EVMService
|
|
- ConstructionReportService
|
|
- PdfGeneratorService
|
|
- ExcelGeneratorService
|
|
|
|
frontend:
|
|
reused_components:
|
|
- name: DashboardBuilder
|
|
percentage: 60%
|
|
- name: ReportGenerator
|
|
percentage: 75%
|
|
- name: ExportDialog
|
|
percentage: 80%
|
|
|
|
new_components:
|
|
- ConstructionDashboard
|
|
- KPIDashboard
|
|
- EVMChart
|
|
- EstimacionReportViewer
|
|
- BitacoraReportViewer
|
|
- KPIWidget
|
|
- ProjectMetricsWidget
|
|
- CashFlowWidget
|
|
|
|
# =============================================================================
|
|
# HISTORIAL
|
|
# =============================================================================
|
|
|
|
history:
|
|
- date: "2025-12-06"
|
|
action: "Creacion de estructura MAE-016"
|
|
author: Requirements-Analyst
|
|
changes:
|
|
- "Creacion de TRACEABILITY.yml"
|
|
- "Definicion de estructura base"
|
|
- "Documentacion de reutilizacion de MGN-009 (75%)"
|
|
|
|
- date: "2025-12-06"
|
|
action: "Documentacion de RF"
|
|
author: Requirements-Analyst
|
|
changes:
|
|
- "RF-BI-001: Dashboards Ejecutivos"
|
|
- "RF-BI-002: Reportes Operativos"
|
|
- "RF-BI-003: Exportacion de Datos"
|
|
- "RF-BI-004: Indicadores KPI"
|
|
- "Actualizacion de trazabilidad RF -> implementacion"
|
|
- "Documentacion de adaptaciones vs MGN-009"
|
|
|
|
# =============================================================================
|
|
# NOTAS DE IMPLEMENTACION
|
|
# =============================================================================
|
|
|
|
notes:
|
|
- "75% de reutilizacion de MGN-009 reduce significativamente el esfuerzo"
|
|
- "KPIs especificos de construccion (CPI, SPI, EVM) requieren desarrollo nuevo"
|
|
- "Formatos de exportacion CFE/SECODAM son requerimientos especificos de Mexico"
|
|
- "Firma digital en bitacora requiere integracion con certificados digitales"
|
|
- "Dashboard ejecutivo debe mostrar metricas en tiempo real"
|
|
- "Considerar integracion con Power BI / Tableau para analisis avanzado"
|
|
- "Implementar cache de KPIs para mejorar rendimiento"
|
|
- "Sistema de alertas automaticas cuando KPIs caen fuera de umbrales"
|
|
- "Reportes deben soportar multiples idiomas (ES/EN)"
|
|
- "Exportacion de fotos debe incluir metadata EXIF (ubicacion, fecha)"
|